问题描述
我知道 kube-proxy 可以在 iptables 或 ipvs 模式下运行。此外,calico 设置了 iptables 规则。
但是是否仅在 kube 代理以 iptables 模式运行时才安装 calico iptables 规则,还是在不考虑 kube-proxy 模式的情况下安装这些 iptables 规则?
解决方法
如果 Calico 检测到,Calico ipvs 支持会自动激活 kube-proxy 正在以该模式运行。
,The short answer is yes - Calico 支持 IPVS kube-proxy 模式:
如果 Calico 检测到 kube-proxy 在该模式下运行,则会自动激活 Calico ipvs 支持。
另外:
Calico 将检测您是否在 Calico 部署后更改了 kube-proxy
的代理模式。在将 ipvs
代理模式更改为 kube-proxy
ipvs
的配置都需要 configured
然而,正如您所注意到的,kube-proxy 可以在 iptables
或 ipvs
模式下运行。查看 iptables
和 ipvs mode
之间的 comparison:
IPVS 是一项 Linux 内核功能,专为负载平衡而设计。在 IPVS 模式下,kube-proxy 对 IPVS 负载均衡器进行编程,而不是使用 iptables。 此外,作为专用的负载均衡器,IPVS 拥有多种不同的调度算法,例如轮询、最短预期延迟、最少连接和各种散列方法。相比之下,iptables 中的 kube-proxy 使用的是随机等成本选择算法。
与 iptables 模式相比,ipvs 模式将提供性能。但是,有一些限制:
- Calico 需要额外的 iptables 数据包标记位来跟踪通过 IPVS 的数据包。
- 必须使用分配给 Kubernetes NodePort 的端口范围配置 Calico。如果服务使用超出 Calico 预期范围的 NodePort,Calico 会将流向这些端口的流量视为主机流量,而不是它们的流量。
Here 您可以找到如何使用 IPVS kube-proxy 的指南。如果选择使用此模式,Calico 会自动切换到此模式。