type
status
date
slug
summary
category
tags
create_time
Aug 16, 2025 10:58 AM
icon
password
my_create_time
📝 前言
在前面的文章中,我们已经依次介绍了 控制平面组件 ——
kube-apiserver
、etcd
、kube-scheduler
与 kube-controller-manager
。它们共同负责整个集群的调度、存储、状态管理与控制逻辑。
但这些控制平面组件并不能直接在节点上运行 Pod。
为了让节点能够接收并执行调度下发的任务,就需要 节点组件 的支持,其中最核心的就是 kubelet。
本文将深入介绍 kubelet 的作用、工作原理以及生产环境中的优化实践。
🧠 本章知识卡片

🚀 本章小节
1️⃣ 什么是 kubelet?
kubelet
是运行在每个节点上的核心代理组件,负责与控制平面通信,并根据调度器下发的 Pod 规范,确保容器能够被正确拉取、启动和运行。它是 Kubernetes 集群中连接控制面与实际工作负载的关键桥梁。
简而言之:
- 控制面负责“分配任务”
kubelet
负责“落地执行”
2️⃣ 工作职责
kubelet 的主要职责包括以下内容:
- Pod 生命周期管理:接收
kube-apiserver
下发的 PodSpec,确保容器运行在节点上。
- 健康检查:周期性探测容器的存活性(Liveness Probe)、就绪性(Readiness Probe)。
- 与容器运行时交互:通过 CRI(Container Runtime Interface)与 Docker、containerd、CRI-O 等运行时交互。
- 节点状态上报:向
kube-apiserver
汇报节点与 Pod 的状态。
- 日志与指标收集:提供容器日志接口,支持与监控组件对接。
- CNI/CSI 集成:协同网络插件和存储插件,实现网络和数据卷挂载。
3️⃣ 工作原理
kubelet 的核心任务是保证节点上 实际运行的 Pod 状态 与 期望状态(PodSpec) 保持一致,其工作机制可概括为以下几个步骤:
- 获取期望状态
- 通过 apiserver Watch 获取分配到本节点的 Pod;
- 读取静态 Pod 配置(如
--pod-manifest-path
)。
- Pod 同步循环(SyncLoop)
- 将 PodSpec 交给 PodWorkers 串行处理,避免同一 Pod 并发操作;
- Pod 生命周期事件由 PLEG(Pod Lifecycle Event Generator)触发更新。
- Pod 启动流程
- 卷管理:挂载 CSI/CNI 资源;
- 创建沙箱:启动 pause 容器,配置网络;
- 拉取镜像:按
imagePullPolicy
执行; - 启动容器:先 Init 容器,后并行应用容器;
- 健康探针:执行 liveness/readiness/startup。
- 状态与心跳上报
- 通过 StatusManager 汇报 PodStatus 至 apiserver;
- NodeLease 与心跳维持节点存活状态;
- cAdvisor 提供指标监控。
- 异常处理与回收
- EvictionManager 监控资源压力并触发 Pod 驱逐;
- 镜像与容器垃圾回收(GC)释放磁盘空间。
大致工作流程图如下:

4️⃣ 常用启动参数
在 kubeadm 安装的集群中,kubelet 的配置文件通常位于:
/var/lib/kubelet/config.yaml
以下为生产环境中常见的 kubelet 启动参数:
参数 | 说明 |
--kubeconfig | kubelet 访问 API Server 的配置文件路径 |
--pod-manifest-path | 静态 Pod 配置文件路径 |
--register-node | 是否自动向 API Server 注册节点 |
--cgroup-driver | 指定使用的 cgroup 驱动(systemd/cgroupfs) |
--container-runtime | 容器运行时类型(默认 containerd) |
--network-plugin | 网络插件配置(CNI/none) |
--root-dir | kubelet 使用的工作目录 |
--eviction-hard | 定义节点资源驱逐阈值,如内存/磁盘不足时触发驱逐 |
--feature-gates | 控制实验性特性的开关 |
5️⃣ 生产环境优化
在实际生产中,kubelet 的配置和优化直接关系到集群的稳定性与性能。常见优化实践包括:
- 资源驱逐策略:
设置合理的
--eviction-hard
,防止节点 OOM。- 日志管理:
使用日志轮转工具(如
logrotate
),避免日志无限增长。- 节点容量规划:
调整
--kube-reserved
与 --system-reserved
,为系统和 kube 组件预留资源。- 安全加固:
使用
--anonymous-auth=false
禁止匿名访问,提升安全性。- 健康检查优化:
根据应用特性优化
livenessProbe
与 readinessProbe
,避免频繁误判。- CRI 配置调优:
针对 containerd 或 CRI-O 调整镜像缓存策略,提高拉取效率。
✅ 总结
kubelet 是 Kubernetes 节点组件的核心,它承上启下:
- 承接控制面,接收调度指令;
- 执行节点任务,管理容器生命周期与状态。
在生产环境中,合理配置与优化 kubelet 参数,是保障集群稳定性和高可用性的关键。
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
若文章对您有帮助,欢迎 请我喝杯咖啡~
- 作者:青萍叙事
- 链接:https://blog.lusyoe.com/article/kubelet-intro
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。