1、Master和Node
1)、Master
K8S中的Master是集群控制節點,負責整個集群的管理和控制
在Master上運行着以下關鍵進程:
kube-apiserver:提供了HTTP Rest接口的關鍵服務進程,是K8S里所有資源的增刪改查等操作的唯一入口,也是集群控制的入口進程
kube-controller-manager:K8S里所有資源對象的自動化控制中心,集群內各種資源Controller的核心管理者,針對每一種資源都有相應的Controller,保證其下管理的每個Controller所對應的資源始終處於期望狀態
kube-scheduler:負責資源調度(Pod調度)的進程,通過API Server的Watch接口監聽新建Pod副本信息,並通過調度算法為該Pod選擇一個最合適的Node
etcd:K8S里的所有資源對象以及狀態的數據都被保存在etcd中
2)、Node
Node是K8S集群中的工作負載節點,每個Node都會被Master分配一些工作負載,當某個Node宕機時,其上的工作負載會被Master自動轉移到其他節點上
在每個Node上都運行着以下關鍵進程:
kubelet:負責Pod對應的容器的創建、啟停等任務,同時與Master密切協作,實現集群管理的基本功能
kube-proxy:實現Kubernetes Service的通信與負載均衡機制的重要組件
Docker Engine:Docker引擎,負責本機的容器創建和管理工作
在默認情況下Kubelet會向Master注冊自己,一旦Node被納入集群管理范圍,kubelet進程就會定時向Master匯報自身的信息(例如機器的CPU和內存情況以及有哪些Pod在運行等),這樣Master就可以獲知每個Node的資源使用情況,並實現高效均衡的資源調度策略。而某個Node在超過指定時間不上報信息時,會被Master判定為失敗,Node的狀態被標記為不可用,隨后Master會觸發工作負載轉移的自動流程
2、Pod
每個Pod都有一個根容器的Pause容器,還包含一個或多個緊密相關的用戶業務容器
Pod里的多個業務容器共享Pause容器的IP,共享Pause容器掛接的Volume。在K8S里,一個Pod里的容器與另外主機上的Pod容器能夠直接通信
Pod有兩種類型:普通的Pod及靜態Pod(Static Pod)。后者並沒被存放在K8S的etcd存儲里,而是被存放在某個具體的Node上的一個具體文件中,並且只在此Node上啟動、運行。而普通的Pod一旦被創建,就會被放入etcd中存儲,隨后會被K8S的Master調度到某個具體的Node上並進行綁定(Binding),隨后該Pod被對應的Node上的kubelet進程實例化成一組相關的Docker容器並啟動。在默認情況下,當Pod里的某個容器停止時,K8S會自動檢測到這個問題並且重新啟動這個Pod(重啟Pod里的所有容器),如果Pod所在的Node宕機,就會將這個Node上的所有Pod重新調度到其他節點上
3、K8S創建一個Pod的流程
1)、用戶提交創建Pod的請求,可以通過API Server的REST API,也可用Kubectl命令行工具
2)、API Server處理用戶請求,存儲Pod數據到etcd
3)、Schedule通過和API Server的watch機制,查看到新的Pod,嘗試為Pod綁定Node
4)、過濾主機:調度器用一組規則過濾掉不符合要求的主機,比如Pod指定了所需要的資源,那么就要過濾掉資源不夠的主機
5)、主機打分:對第一步篩選出的符合要求的主機進行打分,在主機打分階段,調度器會考慮一些整體優化策略,比如把一個Replication Controller的副本分布到不同的主機上,使用最低負載的主機等
6)、選擇主機:選擇打分最高的主機,進行binding操作,結果存儲到etcd中
7)、Kubelet根據調度結果執行Pod創建操作: 綁定成功后,會啟動container,Scheduler會調用API在數據庫etcd中創建一個bound pod對象,描述在一個工作節點上綁定運行的所有Pod信息。運行在每個工作節點上的Kubelet也會定期與etcd同步bound pod信息,一旦發現應該在該工作節點上運行的bound pod對象沒有更新,則調用Docker API創建並啟動Pod內的容器
在這期間,controller Manager同時會根據K8S的mainfiles文件執行Replication Controller Pod的數量來保證指定的Pod副本數。而其他的組件,比如Scheduler負責Pod綁定的調度,從而完成整個Pod的創建
原文鏈接:https://blog.csdn.net/qq_40378034/article/details/104884825