kubernetes(一篇)主要組件介紹,pod創建流程
kubernetes:
采用了Pod和Label這樣的概念把容器組合成一個個的互相存在依賴關系的邏輯單元。相關容器被組合成Pod后被共同部署和調度,形成服務(Service)
可以看到kubernetes包含master節點和node節點
1、master節點:負責調度,存儲集群狀態(服務注冊發現),提供統一API入口,一個master對應一群node節點。
2、node節點: node節點存儲pod(pod內部封裝容器),一個node節點理論上可以存儲無數個pod,但是受限於硬件資源限制,同時受限於pod內部服務運行所占用的資源。
發送請求: kubectl 客戶端指令 ,瀏覽器(可視化方式:rancher,dashboard..)
Master節點: scheduler 調度器 ,負責計算該把pod調度到哪一個node節點
Controllers : 控制器 ,負責維護node節點資源對象(deployment,rs,pod)
apiServer : 網關,所有請求都必須要經過網關
etcd: 服務發現,注冊,集群狀態信息,調度信息
node節點: 每一個node節點都運行一個kubelet進程,此進程負責本機服務的pod的創建維護。
Regitry: 鏡像倉庫—阿里鏡像倉庫—harbor構建一套自己的私有倉庫
Master節點
- ApiServer:集群的統一入口,各組件協調者,以HTTP API提供接口服務,所有對象資源的增刪改查和監聽操作都交給 APIServer處理后再交給Etcd存儲
- controllers:
-
replication Controller :
副本控制器 --- 實現副本數量和預期設定的數量永遠保持一致。
例如: 構建集群 : 6台服務器集群 --- k8s部署:預期設定數量=6 ,k8s能永遠保證副本數據量一致等於6.
-
Service Controller:
管理維護Service(虛擬IP),提供負載以及服務代理。
-
EndPoints Controller:
管理維護Endpoints,關聯Service和Pod
-
Persistent Volume Controller :
持久化數據卷控制器
有狀態服務部署控制器
-
Daemon Set Controller:
讓每一個node節點都運行相同的服務
-
Deployment Controller :
無狀態服務部署的控制器(項目)
-
- scheduler
Scheduler就是k8s的調度器。
創建pod的流程:
創建pod的流程:
1、kubeclt 發送創建的pod的指令,此時這個指令被apiserver攔截,把創建的pod存儲在etcd
2、schduler 發起調用請求,此時這個指令被apiserver攔截,獲取etcd中 podQueue.NodeList
調度算法:
1)預選調度
2)優選策略
選擇出一個合適的node節點
3、把選擇合適的node,pod存儲在etcd
4、node節點上有一個kubelet進程,發送請求獲取pod,node對應創建資源
5、此時如果kubelet發現pod是本機節點需要創建的,kubelet就開始創建pod
node節點
Pod: 是k8s管理的最小的基本單元。Pod內部可以運行一個或者多個容器。一般情況下,pod內部只允許一個容器運行,便於管理。
Docker: docker引擎,pod內部運行的都是容器,這個容器是由docker引擎創建的,docker引擎是node節點基礎服務。
Kubelet: node節點代理,kubelet代理master節點請求,在本地node節點執行;
Kube-proxy: 網絡代理 ,主要是用來生成網絡規則,創建訪問路由,創建service網絡訪問規則,負載均衡規則。
Fluentd: 日志,收集日志
下一篇我們介紹 架構原理&核心組件原理