Kubernetes 1.29:新(alpha)功能,服务的负载均衡器IP模式

💡 原文英文,约700词,阅读约需3分钟。
📝

内容提要

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来启用此功能。

🏷️

标签

➡️

继续阅读