k8s pod多種處理邏輯過程

2022-07-26 23:06:18 字數 648 閱讀 2382

kubernetes 建立pod 的 工作流:

1、kubectl 向 k8s api server 發起乙個create pod 請求(即我們使用kubectl敲乙個create pod命令) 。

2、k8s api server接收到pod建立請求後,不會去直接建立pod;而是生成乙個包含建立資訊的yaml。

3、apiserver 將剛才的yaml資訊寫入etcd資料庫。到此為止僅僅是在etcd中新增了一條記錄, 還沒有任何的實質性進展。

4、scheduler 檢視 k8s api ,類似於通知機制。首先判斷:pod.spec.node == null?若為null,表示這個pod請求是新來的,需要建立;因此先進行排程計算,找到最「閒」的node。

然後將資訊在etcd資料庫中更新分配結果:pod.spec.node = nodea (設定乙個具體的節點)

ps:同樣上述操作的各種資訊也要寫到etcd資料庫中。

5、kubelet 通過監測etcd資料庫(即不停地看etcd中的記錄),發現 k8s api server 中有了個新的node;

如果這條記錄中的node與自己的編號相同(即這個pod由scheduler分配給自己了);

則呼叫node中的docker api,建立container。

k8s pod的yaml檔案詳解

apiversion v1 版本 kind pod 型別,pod metadata 元資料 name string 元資料,pod的名字 namespace string 元資料,pod的命名空間 labels 元資料,標籤列表 name string 元資料,標籤的名字 annotations 元...

k8s pod的狀態為evicted

使用kubectl get pods,發現很多pod的狀態為evicted。原因eviction,即驅趕的意思,意思是當節點出現異常時,kubernetes將有相應的機制驅趕該節點上的pod。多見於資源不足時導致的驅趕。解決方案 排查資源和異常原因,防止新的驅趕產生。使用如下命令刪除舊驅趕的遺留 k...

k8s pod 在節點間排程控制

部落格作為學習筆記記錄,若有理解,表述錯誤,歡迎指出。k8s起pod時,會通過排程器scheduler選擇某個節點完成排程,選擇在某個節點上完成pod建立。當需要在指定pod執行在某個節點上時,可以通過以下幾種方式 1.在部署pod的yaml中,指定nodename 指定了nodename的pod會...