iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0
DevOps

container & k8s 奏鳴曲系列 第 27

[13th][Day27] cluster

在叢集管理方面,kubernetes 將 cluster 中的機器劃分為一個 master 節點以及一群工作節點(node)。
master 節點上運作的叢集管理相關的一套代理:
kube-apiserver
kube-controller-manager
kube-scheduler

這一套管理系統實現了整個 cluster 的自動化的資源管理、pod 調度、彈性縮放、安全管控、系統監控、容錯 ... etc

node 作為叢集管理中的工作節點,執行真正的 application,在 node 中,k8s 管理的最小值行單位為 pod。
node 上運作的 k8s 的 kubelete、kube-proxy 相關服務,而他們負責著 pod 的建立、啟動、監控、重啟、刪除、load balance .... etc

最後,在來看看傳統 IT 系統中服務擴展 & 服務升級這兩大難題,以及 k8s 所提供的全新思維。服務的擴展涉及資源配置(比方說 ... 選擇哪個 node 擴充)、虛擬機器的部屬 & 啟動,在一個複雜的核心業務系統中,擴展 & 升級 這兩大難題基本上由人工一步一步操作才能達到,不僅費時費力,而 ... 只要有人力的介入 ... 就增加了容易發生「意外」的可能性。

在 kubernetes cluster中,只需為擴展的 service 對應的 pod 建立一個 Replication Controller (RC),接下來關於該 service 升級、擴展 ... 阿哩阿雜的麻煩問題看起來就不是那麼令人頭痛了。

Replication Controller 的設定檔必須包含幾個資訊:

  1. 目標 pod 的定義
  2. 目標 pod 需要執行的 replicas (抄本數量)
  3. 需監控的 目標 pod 上的 label(標籤)

再建立好 RC 後, k8s 就會自動建置好 pod (如果 ... RC 有「正常」跑起來的話...),k8s 會透過 RC 中定義的 label 篩選出對應的 pod 去監控其數量 & 狀態,若是 pod 數量少於定義的 replicas ,則會依局 RC 中定義的 pod 範本來多新增 pod ,將此 pod 調度到合適的 node 上啟動運作,直到滿足 replicas 。

上面提到自動新增 pod 的部分完全是自動化的。無須人工干預,是不是棒透了呢 \0.0/
有了 RC ,服務擴展變成了一個單純簡單的數字遊戲,只要修改 replicas 即可達成,要一個 pod 、兩個 pod 還是 N 個 pod ,只需要調整一個數字就可以完成,後須 service 升級的部分也將透過修改 RC 來完成。


上一篇
[13th][Day26] pod
下一篇
[13th][Day28] why k8s
系列文
container & k8s 奏鳴曲30

尚未有邦友留言

立即登入留言