k8s | 深入理解组件 kubelet
每个Node节点上都运行一个 Kubelet 服务进程,默认监听 10250 端口,接收并执行 Master 发来的指令,管理 Pod 及 Pod 中的容器
kubelet 架构
- Kubelet API,包括 10250 端口的认证 API、4194 端口的 cAdvisor API、10255 端口的只读 API 以及 10248 端口的健康检查 API
- syncLoop:从 API 或者 manifest 目录接收 Pod 更新,发送到 podWorkers 处理,大量使用 channel 处理来处理异步请求
- 辅助的 manager,如 cAdvisor、PLEG、Volume Manager 等,处理 syncLoop 以外的其他工作
- CRI:容器执行引擎接口,负责与 container runtime shim 通信
- 容器执行引擎,如 dockershim、rkt 等(注:rkt 暂未完成 CRI 的迁移)
- 网络插件,目前支持 CNI 和 kubenet
具体来说,有以下的功能
监听apiserver,管理节点和pod
每个 Kubelet
进程会在 API Server
上注册所在Node节点的信息,定期向 Master
节点汇报该节点的资源使用情况,并通过 cAdvisor 监控节点和容器的资源。
节点管理
Kubelet
可以通过设置启动参数 --register-n