~xdavidwu/cskloudv3-thesis

e02a5fab01b8ace3219e87ec20a414f50dd7e67f — Pinghao Wu 3 months ago 1636646
Backgrounds: draft a little kubernetes
2 files changed, 22 insertions(+), 0 deletions(-)

M Sections/2.Backgrounds.tex
A assets/kubernetes.png
M Sections/2.Backgrounds.tex => Sections/2.Backgrounds.tex +22 -0
@@ 2,3 2,25 @@
\label{ch:backgrounds}

本章節敘述設計此基於容器技術的網頁服務代管平台所需的背景知識。

\section{Kubernetes}

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

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

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

\begin{figure}
    \centering
    \includegraphics{assets/kubernetes.png}
    \caption{Kubernetes 操作模型示意}
\end{figure}

\noindent 這個架構使得 Kubernetes 在功能面上極易擴展,只須對 kube-apiserver 註冊一個新的 resource 類別,並且實做相關 controller 邏輯,便可以擴展 Kubernetes API。

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