Kubernetes 1.29:新(alpha)功能,服务的负载均衡器IP模式
内容提要
Kubernetes 1.29引入了新的alpha功能,允许用户通过.status.loadBalancer.ingress.ipMode字段选择“VIP”或“Proxy”模式,以优化来自pod的流量处理,提升效率并解决kube-proxy的局限性。
延伸解读
为何需要 ipMode:kube-proxy 拦截的副作用
在 Kubernetes 1.29 之前,kube-proxy 会拦截发往 LoadBalancer 服务 IP 的流量,以优化 pod 出站路径并避免负载均衡器回环。但这种拦截带来两个问题:一是源 IP 可能被替换为负载均衡器 IP,导致 ipvs 模式下健康检查回复被忽略;二是绕过负载均衡器会丢失 TLS 终止、代理协议等云厂商功能。新引入的 ipMode 字段正是为了给云提供商提供禁用该拦截的选项。
VIP 与 Proxy 模式的区别与默认行为
ipMode 字段有两个取值:VIP 和 Proxy,默认是 VIP。VIP 模式保持现有行为,即 kube-proxy 将目的地址为负载均衡器 IP 的流量重定向到后端服务。Proxy 模式则阻止 kube-proxy 在 ipvs 和 iptables 模式下绑定负载均衡器 IP,使流量直接发送到负载均衡器,再由其转发到目标节点。这样云提供商可以保留负载均衡器层面的功能,但具体转发行为取决于云厂商的实现。
启用条件与注意事项
该功能在 Kubernetes 1.29 中为 alpha 阶段,需通过特性门控 LoadBalancerIPMode=true 启用。ipMode 只能与 .status.loadBalancer.ingress.ip 同时指定,且需要云提供商在 EnsureLoadBalancer 中支持。由于是 alpha 功能,默认不开启,生产环境需谨慎评估。此外,文章提到旧版本中可通过设置 .status.loadBalancer.ingress.hostname 作为临时绕过方案,但并非长久之计。
Q&A
Kubernetes 1.29的新功能是什么?
Kubernetes 1.29引入了新的alpha功能,允许用户通过.status.loadBalancer.ingress.ipMode字段选择“VIP”或“Proxy”模式。
如何选择负载均衡器的IP模式?
用户可以通过设置.status.loadBalancer.ingress.ipMode字段来选择“VIP”或“Proxy”模式。
新功能解决了哪些kube-proxy的局限性?
新功能优化了流量处理,解决了源IP丢失和健康检查失败等问题。
默认的IP模式是什么?
默认情况下,.status.loadBalancer.ingress.ipMode的值为“VIP”。
Proxy模式的作用是什么?
Proxy模式直接将流量发送到负载均衡器,避免kube-proxy绑定负载均衡器的IP地址。
如何启用Kubernetes 1.29的新功能?
可以通过设置v1.29.0 --feature-gates=LoadBalancerIPMode=true来启用此功能。