[Kubernetes / K8s] K8s集群解說Master節點與Worker節點 |Master Node & Worker Node
Kubernetes/ K8s解決了什麼問題?
解決資源調度問題 根據集群資源空間狀況,將pod合理分配空閒到WorkerNode上面,同時監控集群
以下將各組件加以說明
Master節點 — 主要是管理和調度集群資源
Worker節點 — 資源的提供者
Master 節點(K8S大腦)
主要是管理和調度集群資源
etcd (狀態存取數據庫)
將狀態存起來分佈式的KV 數據庫 應用從etcd裡面讀取 master
etcd 高可用部署 要部署三個節點
可獨立部署也可以跟master一起 可以透過 etcd 幫我們還原
API server(溝通橋樑)
etcd的proxy ,唯一可以操作etcd 其他組件都必須透過API server
Node 彼此不能直接溝通,必須要透過 apiserver 轉介
Scheduler(調度決策)
掌握當前集群資源的使用情況,決策相應的pod應該分佈到哪個node上
Controller-manager(監控與預期一致)
保證集群狀態最終一致的 透過API Server監控集群狀態
ex:如果應用要發布10個pod Controller-manager會保證最終啟動10個pod
pod掛了=>Controller-manager去啟動 集群自癒能力
Worker節點
資源的提供者
kubelet (Worker節點資源管理員)
監聽API server 的事件,把節點狀態回報給master
kubelet委託容器管理給Container runtime
Container Runtime(容器資源管理者)
本地如果沒有鏡像就會去pull網路的資源
ex:docker的dockerEngine
kube-proxy(管理Service網路)
pod是ephemeral,防止ip跑來跑去,需代理轉發
創建ReplicaSet請求
(replicaSet 為規範Pod副本數量)
Controller manager>Scheduler>Kubelet(Worker)>Container Runtime
1.使用kubectl發送ReplicaSet請求
→紀錄ReplicaSet規範中的數量 API server會將該請求存進ETCD中
2.Controller manager 會收到通知進行比較當前的集群狀態跟預期狀態
若不一致 →創建Pod資源
3.Scheduler(調度器)發現有新的pod 運行調度算法
→選擇空閒的Worker節點與指派
-以上應用還沒發佈只是更新希望的集群狀態-
4.Pod 被分配到某個節點後 → Api server 通知 Kubelet
5.Kubelet 指示 Container Runtime Run
— — — — — — — — — — — — — — — — — — — -
6. Kubelet開始監控