kubelet啟動pod原始碼分析(二)

2021-08-13 17:32:31 字數 1756 閱讀 2011

func (kl *kubelet) syncloopiteration(configch 

syncch

type podrecord struct 

很簡單,就是記錄當前pod狀態和之前記錄狀態的兩個屬性。

func (g *genericpleg) relist() 

}}//更新本地快取

g.updatecache(pod, pid)

g.podrecords.update(pid)

syncloopiteration這個事件的**說清楚了。具體看看syncloopiteration是怎樣執行的

func (kl *kubelet) syncloopiteration(configch 

syncch

switch u.op

...mirrorpod, _ := kl.podmanager

.getmirrorpodbypod(pod)

kl.dispatchwork(pod, kubetypes.syncpodcreate, mirrorpod, start)

kl.probemanager

.addpod(pod)}}

上面的dispatchwork負責分發任務,具體看下圖

通過分發,最終呼叫,kubelet.go裡面的syncpod方法,

func (kl *kubelet) syncpod(o syncpodoptions) error
最終還是通過執行時syncpod去啟動容器,具體**在pkg/kubelet/kuberuntime/kuberuntime_manager.go裡面,

func

(m *kubegenericruntimemanager) syncpod

通過六個步驟

//  1. compute sandbox and container changes.

// 2. kill pod sandbox if necessary.

// 3. kill any containers that should not be running.

// 4. create sandbox if necessary.

// 5. create init containers.

// 6. create normal containers.

到了第六步才是啟動業務容器的**pkg/kubelet/kuberuntime/kuberuntime_container.go

func

(m *kubegenericruntimemanager)

startcontainer

它也是分為一下幾個步驟

// * pull the image

// * create the container

// * start the container

至此,容器啟動的**已經介紹完畢,但還有很多細節,譬如儲存掛載網路分配等細節,後面再慢慢闡述!

kubelet 原始碼分析 啟動篇

在kubernetes集群中,每個node節點 又稱minion 上都會啟動乙個kubelet服務進行。該程序用於處理master節點下發到本節點的任務,管理pod及pod中的容器。每個kubelet程序會在api server上註冊節點自身資訊,定期向master節點匯報節點資源的使用情況,並通過...

STL原始碼剖析 POD型別

轉並改自 啥是pod型別?pod全稱plain old data。通俗的講,乙個類或結構體通過二進位制拷貝後還能保持其資料不變,那麼它就是乙個pod型別。平凡的定義 1.有平凡的建構函式 2.有平凡的拷貝建構函式 3.有平凡的移動建構函式 4.有平凡的拷貝賦值運算子 5.有平凡的移動賦值運算子 6....

Nacos原始碼一 原始碼啟動

一 nacos 原始碼本地啟動 官方單機啟動文件 將原始碼匯入到idea,然後開啟console專案中的配置檔案 按照nacos文件中單機啟動模式修改mysql配置 資料庫連線串需要有時區 useunicode true characterencoding utf8 servertimezone u...