k8s中的kubelet
pod是调度单位,但是其实操作container是kubelet
层级 | 角色 | 作用 |
---|---|---|
Scheduler | Kubernetes 调度器 | 负责 Pod 级别,决定 Pod 应该运行在哪个 Node 上(调度决策) |
kubelet | Node 上的代理 | 负责容器级别,在 Node 上创建、启动、监控和停止容器,确保 Pod 按 Spec 正常运行 |
kubelet 职责和操作
kubelet 是 Kubernetes 节点上的核心组件,负责将 Pod Spec 转化为实际运行的容器,并保证节点和 Pod 的健康状态。
1. Pod 生命周期管理
- 监听 API Server 中属于本节点的 Pod 对象
- 根据 Pod Spec 创建、启动、停止容器
- 监控容器状态,异常时重启容器(符合 Pod 的 RestartPolicy)
2. 容器运行时交互
- 通过 CRI(Container Runtime Interface) 与容器运行时(Docker、containerd、CRI-O 等)交互
- 拉取镜像、启动容器、删除容器
- 设置容器的网络和存储卷
3. 健康检查
- 执行 livenessProbe:检测容器是否存活,失败时重启
- 执行 readinessProbe:检测容器是否准备好服务流量
- 执行 startupProbe(可选):容器启动慢时保证不被过早杀掉
4. 节点和资源管理
- 汇报节点状态(CPU、内存、磁盘、网络)到 API Server
- 管理节点上的资源使用和限制
- 协助实现 QoS、Eviction(驱逐)策略
5. 卷与网络管理
- 挂载和卸载 Pod 所需的 Volume
- 配置 Pod 网络(与 CNI 插件协作)
- 支持 HostPath、PVC、ConfigMap、Secret 等卷类型
6. 日志和事件管理
- 收集容器日志,供
kubectl logs
查询 - 上报 Pod 事件和状态到 API Server
总结
kubelet 是节点上的“执行与监管者”,把 Pod Spec 转化为实际容器,并持续监控节点和容器的健康状态。