Skip to content

kube-proxy 网络代理

职责

kube-proxy 运行在每个节点上,负责维护 Service 的网络规则,实现 Service 的负载均衡和流量转发。

工作模式

iptables 模式(默认)

Pod → iptables PREROUTING → DNAT → 目标 Pod
bash
# 查看 Service 对应的 iptables 规则
iptables -t nat -L KUBE-SERVICES -n | grep my-service
iptables -t nat -L KUBE-SVC-XXXX -n  # 负载均衡规则
iptables -t nat -L KUBE-SEP-XXXX -n  # 具体 Endpoint

ipvs 模式(推荐生产使用)

bash
# 启用 ipvs 模式
kubectl edit configmap kube-proxy -n kube-system
# 修改 mode: "ipvs"

# 查看 ipvs 规则
ipvsadm -Ln

ipvs 相比 iptables 的优势:

  • O(1) 查找复杂度(iptables 是 O(n))
  • 支持更多负载均衡算法(rr/lc/dh/sh/sed/nq)
  • 大规模集群性能更好(Service 数量 > 1000 时差异明显)

Service 类型

yaml
# ClusterIP(集群内访问)
spec:
  type: ClusterIP
  clusterIP: 10.96.100.1

# NodePort(节点端口暴露)
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 8080
    nodePort: 30080  # 30000-32767

# LoadBalancer(云厂商负载均衡)
spec:
  type: LoadBalancer
  # 云厂商自动分配外部 IP

# ExternalName(DNS CNAME)
spec:
  type: ExternalName
  externalName: my-db.example.com

本站内容由 褚成志 整理编写,仅供学习参考