当 kube 代理在 ipvs 模式下运行时,calico 是否也以 ipvs 模式运行

问题描述

我知道 kube-proxy 可以在 iptables 或 ipvs 模式下运行。此外,calico 设置了 iptables 规则。

但是是否仅在 kube 代理以 iptables 模式运行时才安装 calico iptables 规则,还是在不考虑 kube-proxy 模式的情况下安装这些 iptables 规则?

解决方法

根据documentation

如果 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

之前,任何特定于 Kubernetes ipvs 的配置都需要 configured

然而,正如您所注意到的,kube-proxy 可以在 iptablesipvs 模式下运行。查看 iptablesipvs 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 会自动切换到此模式。