ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

第 07 篇:数据面双雄:kubelet 管生命周期,kube-proxy 管网络转发(底座认知 07)

第 07 篇:数据面双雄:kubelet 管生命周期,kube-proxy 管网络转发(底座认知 07)

kubelet 与 kube-proxy

节点上的两大执行者

底座认知 · 第 07 篇

kubelet 管生命周期,kube-proxy 管网络转发

目 录

一、kubelet:节点的「主代理」

1.1 核心职责

1.2 与运行时协作

二、kube-proxy:Service 的实现者

2.1 两种模式

2.2 Service 类型

三、数据面的排障要点

3.1 kubelet 相关

3.2 kube-proxy 相关

一、kubelet:节点的「主代理」

kubelet 是运行在每个节点上的核心代理,负责把节点纳入集群并管理其上的 Pod 生命周期。它通过 CRI(容器运行时接口) 与容器运行时(containerd)通信。

1.1 核心职责

  1. 接收 apiserver 分配的 Pod,驱动运行时创建与运行容器
  2. 执行容器的健康检查(liveness / readiness / startup)
  3. 定期向 apiserver 上报节点状态(心跳)与 Pod 状态
  4. 管理节点上的 Volume 挂载、Pod 的资源配置(通过 cgroup)

1.2 与运行时协作

kubelet 通过 CRI 调用 containerd,containerd 再通过 shim 与 runc 等底层运行时协作,最终创建容器。排查容器创建失败时,常需依次查看 kubelet 日志与 containerd 日志。

二、kube-proxy:Service 的实现者

kube-proxy 运行在每个节点上,负责实现 Service 的流量转发与负载均衡,让集群内外的请求能够访问到后端的 Pod。

2.1 两种模式

模式

原理

适用

iptables

通过 iptables 规则逐条实现转发

默认,规则量大时性能下降

ipvs

内核级 IPVS 负载均衡

高并发,规则高效

在节点上修改 Service 后,iptables 或 ipvs 规则会随之更新,将发往 Service VIP(虚拟 IP)/ClusterIP 的流量转发到后端 Pod。

2.2 Service 类型

  1. ClusterIP:集群内部虚拟 IP,默认类型
  2. NodePort:在节点开放端口,集群外可通过 节点IP:NodePort 访问
  3. LoadBalancer:借助云负载均衡器对外暴露
  4. ExternalName:将 Service 映射到外部域名

三、数据面的排障要点

3.1 kubelet 相关

  1. journalctl -u kubelet -f:查看 kubelet 日志
  2. kubectl get node:节点 Ready 与否由 kubelet 心跳决定
  3. crictl ps / crictl logs:查看容器运行状态与日志

3.2 kube-proxy 相关

  1. iptables -t nat -L -n:查看 iptables 转发规则
  2. ipvsadm -Ln:查看 ipvs 规则(ipvs 模式下)
  3. Pod 之间访问不通,先查 Service 的 Endpoint / EndpointSlice 是否就绪

理解数据面后,最后一篇将把这些组件串起来,看一次 kubectl apply 在集群中到底经历了什么。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进