type
status
date
slug
summary
category
tags
create_time
Aug 16, 2025 10:58 AM
icon
password
my_create_time

📝 前言

在前面的文章中,我们已经依次介绍了 控制平面组件 —— kube-apiserveretcdkube-schedulerkube-controller-manager
它们共同负责整个集群的调度、存储、状态管理与控制逻辑。
但这些控制平面组件并不能直接在节点上运行 Pod。
为了让节点能够接收并执行调度下发的任务,就需要 节点组件 的支持,其中最核心的就是 kubelet
本文将深入介绍 kubelet 的作用、工作原理以及生产环境中的优化实践。

🧠 本章知识卡片

notion image

🚀 本章小节

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) 保持一致,其工作机制可概括为以下几个步骤:
  1. 获取期望状态
      • 通过 apiserver Watch 获取分配到本节点的 Pod;
      • 读取静态 Pod 配置(如 --pod-manifest-path)。
  1. Pod 同步循环(SyncLoop)
      • 将 PodSpec 交给 PodWorkers 串行处理,避免同一 Pod 并发操作;
      • Pod 生命周期事件由 PLEG(Pod Lifecycle Event Generator)触发更新。
  1. Pod 启动流程
      • 卷管理:挂载 CSI/CNI 资源;
      • 创建沙箱:启动 pause 容器,配置网络;
      • 拉取镜像:按 imagePullPolicy 执行;
      • 启动容器:先 Init 容器,后并行应用容器;
      • 健康探针:执行 liveness/readiness/startup。
  1. 状态与心跳上报
      • 通过 StatusManager 汇报 PodStatus 至 apiserver;
      • NodeLease 与心跳维持节点存活状态;
      • cAdvisor 提供指标监控。
  1. 异常处理与回收
      • EvictionManager 监控资源压力并触发 Pod 驱逐;
      • 镜像与容器垃圾回收(GC)释放磁盘空间。
大致工作流程图如下:
notion image

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 禁止匿名访问,提升安全性。
  • 健康检查优化
    • 根据应用特性优化 livenessProbereadinessProbe,避免频繁误判。
  • CRI 配置调优
    • 针对 containerd 或 CRI-O 调整镜像缓存策略,提高拉取效率。

✅ 总结

kubelet 是 Kubernetes 节点组件的核心,它承上启下:
  • 承接控制面,接收调度指令;
  • 执行节点任务,管理容器生命周期与状态。
在生产环境中,合理配置与优化 kubelet 参数,是保障集群稳定性和高可用性的关键。
💡
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
若文章对您有帮助,欢迎 请我喝杯咖啡~
 
上一篇
Nginx+ACME服务器搭建
下一篇
控制平面组件:kube-controller-manager 介绍

评论
Loading...