~xdavidwu/cskloudv3-thesis

ca6bce49c816611f12b42ce5c9b5547cf54ccba8 — Pinghao Wu 3 months ago c2a49ee
Backgrounds: kubernetes: resources
1 files changed, 3 insertions(+), 1 deletions(-)

M Sections/2.Backgrounds.tex
M Sections/2.Backgrounds.tex => Sections/2.Backgrounds.tex +3 -1
@@ 5,7 5,7 @@

\section{Kubernetes}

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

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



@@ 24,3 24,5 @@ Kubernetes 提供 RESTful API 做為主要控制手段,以 resources 作為對
\end{figure}

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

Kubernetes resources 的種類帶給 resources 既定的語意和格式,例如:Pod 代表一組可以互通部份設定的容器、Service 代表網路上具備負載均衡的一個存取點、Node 代表從集中的一個節點等。其中各個種類又可以分為兩大類:namespaced 與 cluster-scoped。Namespaced 代表這種 resources 在 API 上受到 Namespace 分隔,在不同的 Namespace 下,各個 resources 無法相互關聯,通常用於描述賦予叢集的工作 (workload),Pod 與 Service 即為此類,Service 可以關聯到多個 Pod 提供存取點的實際服務內容,但在設計上不允許 Service 取用其他 Namespace 下的 Pod。Cluster-scoped 的種類不受 Namespace 管轄,屬於整個叢集,常見於描述叢集本身的設定,Node 與 Namespace 本身即為此類。Namespace 常用於切分不同的應用,使得不同應用在部屬設定上不會互相衝突影響,但須注意 Namespace 僅只影響 resources 能夠描述的相互關係,並不代表會對實際運行的容器或網路進行隔離加固。