[Kubernetes / K8s] K8s集群解說Master節點與Worker節點 |Master Node & Worker Node

KouWei.Lee
k8s筆記
Published in
Feb 4, 2021

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副本數量)

使用kubectl 命令執行yaml

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開始監控

--

--