天天看點

k8s的排程流程

了解一下 k8s的排程。首先,明白一件事,我們使用k8s基本上都是基于 yaml檔案來的,這個過程像極了伸手給媽媽要錢。

媽,我想買樂高。

媽,我想吃冰淇淋。

yaml就像是一個伸手的過程。剩下的事交給大人操心。

# #  簡單了解一下k8s的架構

  下邊的圖是一個k8s的叢集架構。其實這個圖有點不合适,不合适的點在于橙色的圈,此時不能代表一個Pod,應該是一個 yaml,它即将會成為一個 Pod,但是現在還不是。

k8s的排程流程

 # # 接下來開始排程k8s排程過程

 基于上上邊的架構圖,開始第一步,将這個申請yaml交給 apiServer

k8s的排程流程

 第二步:對這個yaml進行校驗,看有沒有什麼錯誤,是以到了controller

k8s的排程流程

 第三步:校驗通過後,會建立出來一個 Pod。 pod放在ApiServer ,但此時生成的 pod,它的 nodeName 是空的,并且它的 phase 是 Pending 狀态。在生成了這個 pod 之後,kube-Scheduler 以及 kubelet 都能 watch 到這個 pod 的生成事件,kube-Scheduler 發現這個 pod 的 nodeName 是空的之後,會認為這個 pod 是處于未排程狀态。

k8s的排程流程

第四步:就是schedule根據算法,來選擇一個node,去完成排程。吧這個pod 給node去處理。此時前邊建立的這個Pod沒有nodeName,現在被配置設定了以後,就有名字了。這個舉個栗子:旺财家裡比較空閑,一直想在家裡樣一隻狗,是以在寵物所登記,說它可以養一直狗在家裡 ,如果碰到合适的就聯系他。二哈是一隻狗,它被生出來,然後沒有主人,然後被人領養了,在被領養以後,也有了主人的名字,叫旺财。

k8s的排程流程

 此時,二哈有了它的去處,是以一個領養的過程就結束了。

繼續閱讀