~xdavidwu/cskloudv3-thesis

c2a49ee3a23f4d269a1e8a151d698f7b2eb4e39b — Pinghao Wu 3 months ago e02a5fa
Backgrounds: kubernetes: rephrase, controller/resource design
2 files changed, 6 insertions(+), 6 deletions(-)

M Sections/2.Backgrounds.tex
M assets/kubernetes.png
M Sections/2.Backgrounds.tex => Sections/2.Backgrounds.tex +6 -6
@@ 5,14 5,14 @@

\section{Kubernetes}

Kubernetes (簡稱 K8s )為一容器編排 (orchestration) 系統,其主要任務為將容器委派至叢集節點上執行。Kubernetes 同時帶有負載均衡、高可用性及自動擴展等網路服務所需的功能,因此同時可以視為具有一高度擴展性的網路程式平台。
Kubernetes (簡稱 K8s )為一容器編排 (orchestration) 系統,其主要任務為將容器委派至叢集節點上執行。為了對網路服務達到理想的編排,Kubernetes 也帶有負載均衡、高可用性及自動擴展等網路功能,因此可以將 Kubernetes 視為高度可擴展、可靠的網路程式平台。

Kubernetes 提供 RESTful API 做為主要控制手段,將系統操作建模為對 resource 進行非同步操作,並且將系統大致切成兩大部份:負責提供 API 與 resources 資料存儲的 API 伺服器 (kube-apiserver),以及實際實做 resource 所代表的操作的 controllers。典型的操作流程大致如下:
Kubernetes 提供 RESTful API 做為主要控制手段,以 resources 作為對操作意圖的描述以及結果,將系統操作以非同步的形式建模為對 resources 進行讀寫,並且將系統大致切成兩大部份:負責提供 API 與 resources 資料存儲的 API 伺服器 (kube-apiserver),以及實際實做 resources 所代表的操作的 controllers。典型的操作流程大致如下:

\begin{enumerate}
    \item 使用者建立一 resource,並在其 spec 欄位填入操作的意圖
    \item 使用者建立一 resource,並在其 spec 欄位描述需要的系統狀態
    \item kube-apiserver 通知相關 controller 有新的 resource 創立
    \item 相關 controller 根據 resource 的 spec 欄位進行操作,嘗試滿足 spec,並將結果存入 resource 的 status 欄位
    \item controller 根據 spec 欄位進行操作,嘗試滿足 spec,並將結果存入 status 欄位
    \item kube-apiserver 通知使用者 resource 有所變更
    \item 使用者透過更新後的 status 欄位得知操作結果
\end{enumerate}


@@ 20,7 20,7 @@ Kubernetes 提供 RESTful API 做為主要控制手段,將系統操作建模
\begin{figure}
    \centering
    \includegraphics{assets/kubernetes.png}
    \caption{Kubernetes 操作模型示意}
    \caption{Kubernetes 操作模型簡化示意圖}
\end{figure}

\noindent 這個架構使得 Kubernetes 在功能面上極易擴展,只須對 kube-apiserver 註冊一個新的 resource 類別,並且實做相關 controller 邏輯,便可以擴展 Kubernetes API。
\noindent 這個架構使得 Kubernetes 在功能面上極易擴展,只須對 kube-apiserver 註冊一個新的 resource 類別,並且實做相關 controller 邏輯,便可以擴展 Kubernetes API。kube-apiserver 除了資料存儲以外,也包含了基本的資料驗證、身份驗證以及相關授權機制,使得 controller 能夠更專注於達成 resource 邏輯的實做,進一步減少擴展開發者的負擔。同時在 resource 本身的設計上,通常也會盡量使描述的操作是可以被重複執行的 (idempotent),令 controller 不須額外維護內部狀態 (stateless),簡化 controller 的部屬管理以及提高 controller 的容錯性,使整體系統更為易用且可靠。

M assets/kubernetes.png => assets/kubernetes.png +0 -0