k8s的kube-prosy
kube-proxy 是 Kubernetes 节点上的网络组件,主要负责 Pod 网络和 Service 的流量转发
Service 本身只是 Kubernetes 的 API 对象,真正处理流量的是 各节点上的 kube-proxy
kube-proxy 职责流程
kube-proxy 是 Kubernetes 节点上的网络组件,负责 Service 流量转发和负载均衡。下面是其具体职责和流程。
1. 获取 Service 与 Pod 信息
- 从 API Server 获取所有 Service 对象
- 获取每个 Service 对应的后端 Pod(Endpoints)
- 根据变化动态更新本地规则
2. 配置网络规则
- 根据工作模式选择:
- iptables:在 Node 内核配置规则,将 Service IP:Port 流量重定向到 Pod
- IPVS:通过 IPVS 负载均衡将流量分发到后端 Pod
- 用户态模式:kube-proxy 用户态进程转发流量
- 保证流量能根据 Service → Pod 映射正确路由
3. 流量转发
- 用户请求 Service ClusterIP / NodePort / LoadBalancer
- 流量进入 请求所在 Node 的网络栈
- kube-proxy 配置的规则触发,选择后端 Pod
- 流量被转发到目标 Pod
4. 负载均衡
- kube-proxy 根据算法(轮询、最少连接等)选择 Pod
- 确保同一 Service 的请求均匀分布到多个 Pod
5. 动态更新与健康检查
- 定期检查 Pod 状态
- Pod 上线/下线时更新规则
- 保证流量只转发到健康 Pod
总结
kube-proxy 通过维护 Service → Pod 映射规则,在节点上实现流量拦截、转发和负载均衡,确保访问 Service 的请求能够透明到达后端 Pod。