PodWorkers

PodWorkers是最終“同步”pod狀態的一塊邏輯,
“同步”在這裏的含義是:確保kubelet所在節點的Pod狀態和etcd中的狀態一致,該增加的增加,該刪除的刪除,該更新的更新。

“同步”動作的觸發有幾個方式:
(1)通過文件、apiserver、http方式監聽到的變化
(2)定時器觸發,例如每隔10s

PodWorkers的入口是UpdatePod

type podWorkers struct {
    // key是pod的ID,value是一個chan,會有一個gorouting監聽該chann
    // 死循環一般的處理該Pod上的所有變動
	podUpdates map[types.UID]chan UpdatePodOptions
	
	// 記錄每個pod對應的gorouting當前的工作狀態
	isWorking map[types.UID]bool
	
	// 每個Pod對應的gorouting處理完相關邏輯之後,會把Pod的ID塞入
	// workQueue。定時器會觸發kubelet,kubelet會從workQueue裏
	// 獲取需要同步的Pod,然後調用PodWorkers的UpdatePod方法,
	// 觸發新一輪的同步
	workQueue queue.WorkQueue
}

簡單的示意圖
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章