kube-proxy 网络代理
职责
kube-proxy 运行在每个节点上,负责维护 Service 的网络规则,实现 Service 的负载均衡和流量转发。
工作模式
iptables 模式(默认)
Pod → iptables PREROUTING → DNAT → 目标 Podbash
# 查看 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 # 具体 Endpointipvs 模式(推荐生产使用)
bash
# 启用 ipvs 模式
kubectl edit configmap kube-proxy -n kube-system
# 修改 mode: "ipvs"
# 查看 ipvs 规则
ipvsadm -Lnipvs 相比 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