原文: https://www.huweihuang.com/kubernetes-notes/code-analysis/kubelet/kubelet-run.htmlhtml
1.kubelet 主要作了什麼node
NewMainKubelet
主要用來構造kubelet
結構體,其中kubelet除了包含必要的配置和client(例如:kubeClient、csiClient等)外,最主要的包含各類manager來管理不一樣的任務。核心的manager有如下幾種:docker
oomWatcher
:監控pod內存是否發生OOM。podManager
:管理pod的生命週期,包括對pod的增刪改查操做等。containerGC
:對死亡容器進行垃圾回收。imageManager
:對容器鏡像進行垃圾回收。statusManager
:與apiserver同步pod狀態,同時也做狀態緩存。volumeManager
:對pod的volume進行attached/detached/mounted/unmounted
操做。evictionManager
:保證節點穩定,必要時對pod進行驅逐(例如資源不足的狀況下)。NewMainKubelet
還包含了serviceLister
和nodeLister
來監聽service
和node
的列表變化。api
containerRuntime
目前主要是docker
,其中rkt
已廢棄。NewMainKubelet
啓動了dockershim grpc server
來執行docker相關操做。podWorker
來對pod相關的更新邏輯進行處理。2.架構涉及流程圖緩存
3.架構
未完待續code