Calico IP_AUTODETECTION_METHOD

在 Calico 中,IP_AUTODETECTION_METHOD 的配置项用于指定 Calico 如何检测容器的 IP 地址。

一、kubernetes-internal-ip模式

其中,kubernetes-internal-ip 是一种特殊的模式,用于在 Kubernetes 环境中检测容器的 IP 地址。具体作用如下:

kubernetes-internal-ip 模式:

  • 作用: Calico 使用 kubernetes-internal-ip 模式时,它将尝试从 Kubernetes 的 API 服务器获取容器的 IP 地址。
  • 使用场景: 适用于运行在 Kubernetes 集群中的容器环境。在 Kubernetes 中,每个 Pod 都有一个 Pod IP,通过这种模式,Calico 可以直接从 Kubernetes API 获取到 Pod 的 IP 地址,而无需通过其他手段进行检测。

使用 kubernetes-internal-ip 模式有以下优势:

  1. 集成度高: 与 Kubernetes 紧密集成,直接利用 Kubernetes API 获取 IP 地址。
  2. 减少额外配置: 无需额外的网络配置或手动干预,Calico 可以直接获取 Kubernetes 中分配的 IP 地址。
  3. 避免复杂网络环境下的问题: 由于直接利用 Kubernetes 的 IP 分配机制,可以避免复杂网络环境下的一些问题。

在使用 kubernetes-internal-ip 模式时,确保 Kubernetes 集群正常运行,Calico 与 Kubernetes API 服务器正常通信,并且 Pod 的 IP 地址能够被正确分配和获取。这样,Calico 将能够有效地管理和路由容器的流量。

二、其他的模式

first-found把本机网卡的所有IP列出来,然后选择第一个IP(docker0与lo网卡的IP会被忽略掉),第一个IP会因为操作系统的不同而不同,比如在centos操作系统中,假设网卡ens33有一个IP 192.168.92.101,网卡ens37有两个IP 192.168.90.101(primray)和192.168.90.10(second),那么找到的IP就是192.168.90.101(好像是按每个网卡的primary IP升序排列)

kubernetes-internal-ip使用K8S节点的internal-ip,我们通过kubectl get node -o wide可以看到每个节点的internal-ip是多少

can-reach=x.x.x.x通过哪个IP能到达x.x.x.x,就选择哪个IP。如果一个网卡有多个IP,都可以到达x.x.x.x,则选择哪一个(待验证)。另外x.x.x.x可以换成域名比如can-reach=www.baidu.com

interface=INTERFACE-REGEX通过interface的名字正则表达式来寻找IP,比如interface=ens33interface=ens*

skip-interface=INTERFACE-REGEX先过滤掉某些网卡,然后使用first-found方法。

cidr=CIDR通过CIDR来寻找。比如cidr=192.168.92.0/24,某主机有网卡ens33(192.168.92.101)和ens37(192.168.90.101),那么选择的IP就是192.168.92.101

 

你可能感兴趣的:(K8S,tcp/ip,网络协议,网络)