Kubelet是具体干活的组件,它接收到Apiserver为自己分配的启动容器的任务,然后拉起容器。当然如果收到销毁指令,同样会执行删除容器的操作。本地镜像也是由kubelet负责维护,配合gc机制,删除无用的镜像和容器。除此之外,它还需要定时向Apiserver上报自己的状态,一方面告知Apiserver自身还存活,另一方便将本节点上Pod状态、存储使用等信息上报到Apiserver。
kubelet 通过对接到CRI 管理容器、CNI 管理网络以及CSI管理存储。
Kubelet会启动一个主线程,用于保持和Apiserver的通信,主线程不能被阻塞,否则将无法定时完成上报导致Apiserver将该节点设置为NotReady状态。在主线程之外,kubelet会启动很多协程(manager)用于检测节点状态,回收废旧资源,驱赶低优级Pod,探测Pod健康状态等。
syncLoop是kubelet核心,它通过一个死循环不断接收来自Pod的变化信息,这里的pod变化的信息可能来自于apiserver、也可能来自于本地静态Pod。通过比对确定需要启动哪些容器或者杀死某些容器。各种Manger则是负责具体执行操作。
kubelet 里面的PLEG 负责同步底层运行时(譬如docker或者containerd)的状态,通过定时轮训的方式检测运行时是否正常,并生成event信息。
kubelet默认集成了cadvisor 用于容器和主机的性能指标采集,但这个后续将会默认关闭。
除此之外kubelet 还会提供 exec、attach 和port-forward 等接口,用户apiserver连接pod。
页面更新:2024-04-20
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号