k8s 基礎 pod創建流程


  Pod是Kubernetes中最基本的部署調度單元,可以包含container,邏輯上表示某種應用的一個實例。例如一個web站點應用由前端、后端及數據庫構建而成,這三個組件將運行在各自的容器中,那么我們可以創建包含三個container的pod。本文將對Kubernetes的基本處理流程做一個簡單的分析。

  Pod的創建流程如下圖所示(圖片來源於網絡):

 

具體的創建步驟包括:

1、客戶端提交創建請求,可以通過API Server的Restful API,也可以使用kubectl命令行工具。支持的數據類型包括JSON和YAML。

2、API Server處理用戶請求,存儲Pod數據到etcd。

3、調度器通過API Server查看未綁定的Pod。嘗試為Pod分配主機。

4、過濾主機 (調度預選):調度器用一組規則過濾掉不符合要求的主機。比如Pod指定了所需要的資源量,那么可用資源比Pod需要的資源量少的主機會被過濾掉。

5、主機打分(調度優選):對第一步篩選出的符合要求的主機進行打分,在主機打分階段,調度器會考慮一些整體優化策略,比如把容一個Replication Controller的副本分布到不同的主機上,使用最低負載的主機等。

6、選擇主機:選擇打分最高的主機,進行binding操作,結果存儲到etcd中。

7、kubelet根據調度結果執行Pod創建操作: 綁定成功后,scheduler會調用APIServer的API在etcd中創建一個boundpod對象,描述在一個工作節點上綁定運行的所有pod信息。運行在每個工作節點上的kubelet也會定期與etcd同步boundpod信息,一旦發現應該在該工作節點上運行的boundpod對象沒有更新,則調用Docker API創建並啟動pod內的容器。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM