Kubelet
Kubelet的作用
- 负责容器启动的重要守护进程
- 对容器Liveness(容器是否处于存活状态)和Readiness(进程是否处于可服务状态)进行检测
- 保护节点不被容器抢占资源(例如磁盘到达阈值,通过参数设置处理一些无用镜像)
- Kubelet加载所设定的参数配置向API Server注册自己所在节点的信息(定时向API Server“汇报”节点的cpu、memory、磁盘压力等信息,说明自己所在的节点是ready的)
节点上Pod的来源
普通pod:通过API Server,由调度器调度到节点的上的pod
静态pod:专门绑定在kubelet所在节点的pod;在kubelet设定的参数配置中,有一个文件目录专门启动静态pod,这个文件夹一般设定在节点的/etc/kubernetes/manifests中,静态pod不受API Server的控制,删除文件夹中的文件即可删除静态pod
Pod调度启动顺序
容器沙箱(pause容器的抽象概念):主要作用是维护Pod的网络协议栈
Kubelet是利用容器运行时(dockershim调用docker)的接口对容器和镜像进行操作
Kubelet的核心函数是syncloop:此函数是由事件驱动的,通过静态Pod的本地目录监听Pod的资源变化,产生增、删、改事件
API Server发出更新pod的请求,kubelet会调用syncloop函数分发给Pod中PodWorker进行处理,按照pod的spec和status计算下一步容器该操作的动作
PLEG(Pod Lifecycle Event Generator):Kubelet每一秒都会去查询一次容器的运行状态