k8s中calico匹配多种网络接口名字的方法

在k8s集群中我们会遇到加入进来的很多节点网络接口名字和原来已有网络接口名字不一样的情况,这种情况如果IP不是第一个识别的网络接口那就会使用错误的IP进行通信,导致pod间通信异常,那么解决这种方法的话我们需要修改calico相关的配置来解决,目前calico支持以下几种方式识别节点网络接口或者是IP地址。

检查节点IP,直接查看node节点的yaml配置

kubectl get node <node_name> -o yaml

202507240920593286754064.png

查看到address就是节点IP。

calico添加不同网络接口有以下几种方法

1.使用模糊匹配的方法

我的网口是enp3s0,新增网口名字是enp0s1,那么就需要在calico-node的ds资源中添加如下环境变量。

- name: IP_AUTODETECTION_METHOD
  value: "interface=enp.*"

还可以像这样添加确定的的网络接口名字

- name: IP_AUTODETECTION_METHOD
  value: "interface=bond[0|1]"

2.使用指定网关可达的方式

例如我的网关是10.0.0.1,那么可以这样添加环境变量进行识别

- name: IP_AUTODETECTION_METHOD
  value: "can-reach=10.0.0.1"

那么节点就都会使用这个网关联通的地址了。

或者这样,一般都是使用可联网、外网的IP作为节点地址

- name: IP_AUTODETECTION_METHOD
  value: "can-reach=114.114.114.114"

3.使用cidr指定网络范围

使用方式如下:

- name: IP_AUTODETECTION_METHOD
  value: "cidr=192.168.0.0/16,10.10.0.0/16"

如果节点有多个 IP 落在这些 CIDR 内,它会选择第一个找到的

修改完以后以后记得重启calico-node生成的pod,重启以后日志里面会记录识别到的IP

202507240937132115904285.png

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/1103

评论列表

0%