一个在集群中每个节点上运行的代理,kubelet 接收一组通过各类机制提供给它的 PodSpecs,确保这些 PodSpecs 中描述的容器处于运行状态且健康。kubelet 不会管理非 Kubernetes 创建的容器。
简单来说主要是三个功能:
● 接收pod的期望状态(副本数、镜像、网络等),并调用容器运行环境(container runtime)来实现预期状态,目前container runtime主要是docker,未来更多的可能会转向containerd。需要注意的是,pod网络是由kubelet管理的,而不是kube-proxy。
● 定时汇报节点的状态给 apiserver,用于scheduler调度使用
● 对镜像和容器的清理工作,避免不必要的文件资源占用磁盘空间:默认每分钟对使用的容器执行一次垃圾收集,每五分钟对未使用的镜像执行垃圾回收,回收的触发阈值可以由kubelet参数配置
当Pod被调度到该节点后:
● Kubelet会将申请的volume挂载到当前节点上,
● 创建沙箱容器(podsand box,pause容器),将自己阻塞(pause系统调用)
● 基于pause的网络名称空间,创建业务容器