完整报错

Unable to auto-detect an IPv4 address using interface regexes [eno1]: no valid host interfaces found

首先检查calico是否开启自动检测IV4地址

kubectl get daemonset calico-node  -n kube-system -o custom-columns=ENV:.spec.template.spec.containers[0].env|grep IP

在这里插入图片描述
如图所示,IP获取方式为自动获取
再检查IPV4网卡匹配规则
这里原本是只有eno1的,所以calico只会去匹配名称为eno1的网卡,并获取它的IP
注:enp*是我后面加的,也就是加了这个规则后,才解决的问题
在这里插入图片描述
而我使用的bm1684算能盒子,是 PCI-E独立网卡,所以网卡名是enpxxxx
下面是各个网卡名所表示的含义

  1. eno1:代表由主板bios内置的网卡
  2. ens1: 代表有主板bios内置的PCI-E网卡
  3. enp2s0: PCI-E独立网卡
  4. eth0:如果以上都不使用,则回到默认的网卡名

如果按照eno1的匹配规则,是找不到bm1684算能盒子节点的,所以,需要修改calico的IPV4网卡匹配规则

kubectl set env daemonset/calico-node -n kube-system IP_AUTODETECTION_METHOD=interface=eno1,enp*

这里是直接修改的已运行的calico组件,也可以直接去yaml文件中,找到这个环境变量,在下面加一个环境变量
在这里插入图片描述

            - name: IP_AUTODETECTION_METHOD
              value: interface=eno1,enp*

然后重新创建下calico,也是可以的
calico官方文档

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐