问题现象
calico 对应的 Pod 启动失败,报错:
Number of node(s) with BGP peering established = 0
问题分析
Calico 提供了 IP 自动检测的方法,默认是使用第一个有效网卡上的第一个有效的 IP 地址:
IP_AUTODETECTION_METHOD=first-found
节点上应该是出现了有问题的网卡,可以使用以下命令查看:
ip link | grep br
问题原因
Calico 选择了有问题的网卡,导致 Pod 不能启动。
解决方案
有两种方法:
方法一:修改 IP 自动检测方法
Calico 部署 yaml 中,在 spec.containers.env
下添加以下两行:
- name: IP_AUTODETECTION_METHOD
value: "interface=ens.*" # ens 根据实际网卡开头配置
CentOS 7 以后的系统,由于 systemd 版本升级,网卡命名模式已经由 ethX 更改为 ensX。
方法二:删除有问题的网卡(推荐)
指定网卡名称(br 开头的问题网卡)删除:
ifconfig br-xd3829 down
参考资料
在Kubernetes中正确地安装Calico
K8S集群Calico网络组件报错BIRD is not ready: BGP not established with
Calico -Calico问题排障汇总
k8s网络之Calico网络
网卡不叫eth0,而叫ens33、ens160、eno1 or enp0s*?
Predictable Network Interface Names