1.7 Kubelet :节点代理的核心组件
一、Kubelet 概述
Kubelet 是 Kubernetes 集群中运行在每个工作节点上的主要”节点代理”,负责管理 Pod 和容器的生命周期。它是 Kubernetes 操作的最小单元,确保容器按照预期运行。
二、核心功能详解
接收到在节点上加载容器或pod的指令时,请求容器运行时引擎(Docker)拉取所需的Image并运行一个实例;Kubelet继续监控pod和容器的状态并及时向Kube API服务器报告。
1. 节点注册 (Register Node)
工作流程:
- 启动时注册:
1
2# 查看节点注册信息
kubectl describe node <node-name> | grep -A 10 "System Info" - 定期心跳:
- 通过
--node-status-update-frequency参数控制频率(默认10秒)1
2# 查看节点状态更新时间戳
kubectl get node <node-name> -o jsonpath='{.status.conditions[?(@.type=="Ready")].lastHeartbeatTime}'
- 通过
关键配置:
1 | # 查看kubelet注册参数 |
2. 创建和管理 Pods
Pod 创建流程:
接收 PodSpec:通过以下方式之一:
- API Server(主要方式)
- 静态 Pod 的清单文件(
--pod-manifest-path指定目录)
容器运行时交互:
1
2# 查看kubelet与容器运行时通信配置
ps aux | grep kubelet | grep -E "container-runtime|pod-infra-container-image"资源准备:
- 挂载卷(Volumes)
- 下载镜像(Images)
- 准备网络命名空间
3. 监控节点和 Pods
监控机制:
节点健康检查:
1
2# 查看节点健康状况
kubectl get node <node-name> -o jsonpath='{.status.conditions}'Pod 健康检查:
- Liveness probes
- Readiness probes
- Startup probes
状态上报:
1
2# 查看kubelet状态上报频率
ps aux | grep kubelet | grep -E "node-status-update-frequency|sync-frequency"
三、Kubelet 架构深入
1. 主要组件
- **PLEG (Pod Lifecycle Event Generator)**:生成Pod生命周期事件
- cAdvisor:容器监控数据收集
- Volume Manager:卷管理
- **Container Runtime Interface (CRI)**:与容器运行时交互
2. 关键目录结构
1 | # 查看kubelet工作目录 |
重要子目录:
pods/:Pod数据目录plugins/:卷插件pod-resources/:Pod资源信息
四、Kubelet 命令与操作
1. 服务管理
1 | # 查看kubelet服务状态 |
2. 运行时检查
1 | # 查看kubelet进程详情 |
3. 调试命令
1 | # 强制删除异常Pod |
五、Kubelet 配置详解
1. 重要启动参数
1 | # 查看当前运行的参数 |
关键参数:
--config:配置文件路径--kubeconfig:连接API Server的认证文件--pod-manifest-path:静态Pod路径--fail-swap-on:是否禁止swap--container-runtime:容器运行时选择--node-status-update-frequency:状态上报频率
2. 配置文件示例
/var/lib/kubelet/config.yaml 典型内容:
1 | apiVersion: kubelet.config.k8s.io/v1beta1 |
六、Kubelet 与其他组件交互
1. 与 API Server 交互
- 认证:使用 TLS 证书
- 授权:通过 Node authorizer
- 通信:通过
--kubeconfig指定配置
2. 与容器运行时交互
支持多种运行时:
1 | # 查看当前使用的运行时 |
3. 与 cAdvisor 集成
1 | # 获取节点监控数据(需要先进行端口转发) |
七、特殊注意事项
1. Kubeadm 不部署 Kubelet
1 | # 手动安装kubelet示例(Ubuntu) |
2. 证书轮换管理
1 | # 检查证书状态 |
3. 资源清理
1 | # 清理未使用的镜像 |
八、故障排查指南
1. 常见问题诊断
1 | # 检查kubelet日志中的错误 |
2. 健康检查端点
1 | curl -sk https://<node-ip>:10250/healthz |
3. 资源不足处理
1 | # 查看节点资源压力 |