原文: 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