Kubernetes中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內的容器。
參考連結:
kubernetes排程詳解【天雲軟體 雲平臺開發工程師 張偉】
http://ju.outofmemory.cn/entry/253027
kubernetes中pod建立流程
http://f.dataguru.cn/thread-685212-1-1.html