在k8s集群中我们会遇到加入进来的很多节点网络接口名字和原来已有网络接口名字不一样的情况,这种情况如果IP不是第一个识别的网络接口那就会使用错误的IP进行通信,导致pod间通信异常,那么解决这种方法的话我们需要修改calico相关的配置来解决,目前calico支持以下几种方式识别节点网络接口或者是IP地址。
检查节点IP,直接查看node节点的yaml配置
kubectl get node <node_name> -o yaml
查看到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
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:https://sulao.cn/post/1103
相关推荐
- k8s集群部署prometheus/node-exporter/dcgm-exporter
- ubuntu22.04使用containerd部署k8s集群
- k8s集群kube-proxy从iptables模式切换到ipvs模式
- k8s级联删除(删除deployment却删除不了rs和pod)异常问题的处理办法
- k8s中修改containerd存储目录并将数据迁移到新磁盘目录
- k8s网络cni插件calico的安装和网络模式切换
- k8s中pod使用RDMA网卡的方法(待验证)
- k8s集群中让POD使用固定IP的方法
- k8s中helm安装和使用以及命令大全
- k8s集群中英伟达gpu多实例mig资源上报和分配方法
评论列表