type
status
date
slug
summary
category
tags
create_time
Aug 24, 2025 09:56 PM
icon
password
my_create_time

📝 前言

在 Kubernetes 集群中,节点组件共同协作,确保工作负载能够被正确调度、运行并对外提供服务。
前文我们已经介绍了 kubelet 节点组件 ,它主要负责 Pod 生命周期的管理。
而在 Pod 之间、以及 Pod 与外部之间的网络通信,则依赖于另一个重要的节点组件 —— kube-proxy
本文将详细介绍 kube-proxy 的作用、工作原理及常见配置。
另外 kube-proxy 并不是一个必需的组件,现在通过一些第三方组件都可以替代该组件,例如:Cilium 、kube-router、kube-ovn 等。

🧠 本章知识卡片

notion image

🚀 本章小节

1️⃣ 什么是 kube-proxy?

kube-proxy 是运行在每个工作节点上的网络代理组件,负责实现 Kubernetes Service 的抽象。
它的主要功能是:
  • 维护 Service 与后端 Pod 的映射关系。
  • 实现负载均衡,将请求分发到合适的 Pod。
  • 提供多种代理模式(如 iptables、ipvs),优化流量转发性能。
简单来说,kube-proxy 负责保证 客户端访问 Service 时,流量能被正确转发到对应的 Pod

2️⃣ kube-proxy 的工作原理

kube-proxy 的工作核心是 监听 API Server 中的 Service 与 Endpoints 资源变化,并将这些变化同步到本地节点的网络规则中,从而实现请求转发。
  • 监听资源变化
kube-proxy 通过 watch 机制监控 Service 与 Endpoints 的增删改。
  • 更新转发规则
根据 Service 与 Endpoints 的最新信息,kube-proxy 更新本地的转发规则。
  • 实现流量转发
当请求到达某个节点时,会根据配置的规则被转发到目标 Pod。
与 kubelet 不同,kube-proxy 并不直接管理容器,而是通过内核的网络功能(iptables/ipvs)或用户空间代理实现转发。

3️⃣ kube-proxy 工作流程时序图

notion image

4️⃣ kube-proxy 常见模式

kube-proxy 支持多种代理模式,不同模式下的性能和实现方式有所差异:
模式
特点
适用场景
userspace
最早的模式,通过用户态进程接收流量并转发,效率低。
已弃用,不推荐使用
iptables
使用内核的 iptables 规则进行流量转发,性能较好,适合中小规模集群。
默认模式(在部分版本中)
ipvs
使用 Linux 内核的 IP Virtual Server (IPVS) 模块,支持更多调度算法和更高性能。
大规模集群推荐使用

5️⃣ kube-proxy 配置与常见参数

kube-proxy 的配置文件一般位于:/var/lib/kube-proxy/config.conf ,通过 kubeadm 部署的通常是在 kube-system 空间下的 kube-proxy configmap,可通过以下命令查看:
常见配置参数包括:
参数
说明
--proxy-mode
指定代理模式(userspace/iptables/ipvs)
--cluster-cidr
Pod 网络 CIDR,用于判断哪些流量需要代理
--iptables-sync-period
iptables 规则同步的间隔时间
--ipvs-scheduler
在 ipvs 模式下指定调度算法(如 rr、lc 等)
--masquerade-all
是否对所有流量进行 SNAT

✅ 总结

kube-proxy 是 Kubernetes 网络通信的关键组件,它通过维护节点的转发规则,保证 Service 的访问能够正确路由到后端 Pod。
在小规模集群中,iptables 模式已经能够满足需求,而在更大规模场景中,ipvs 模式能显著提升性能。
理解 kube-proxy 的工作原理与配置,有助于我们在排查网络问题时更快定位问题根源。
💡
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
若文章对您有帮助,欢迎 请我喝杯咖啡~
 
上一篇
第三部分:节点组件 Container Runtime 介绍
下一篇
独立开发者如何破解商业化难题?一站式方案来啦

评论
Loading...