关于kubesphere集群calico网络组件报错的修复

最近公司的项目用到了Kubesphere,于是自己先在虚拟机上测试了一番,遇到了很多的问题,现将遇到的有关calico的问题记录一下
上一篇介绍了如何离线安装kubesphere v3.0,安装之后我发现在后台的集群管理界面看不到集群节点的监控数据:

于是我get pod查看了一下状态,发现其中calico组件没有跑起来:

然后我在通过kubectl describe命令对宕机的calico pod进行查看,发现calico establish with的ip与我的节点地址不同,这里我的节点地址都是192网段的,而这个是172网段,显然calico这个要建立通道的网卡存在错误:

于是我ifconfig查看了一下,发现存在一个虚拟网卡和这个ip对应:

我摸不到头脑于是上网查到了一篇文章和我的情况有些类似,也是calico和其他的虚拟网卡建立通道报错:

原因就是:calico没有发现实node节点实际的网卡名称

产生的缘由和解决方法

调整calicao的网络插件的网卡发现机制,修改IP_AUTODETECTION_METHOD对应的value值。下载的官方提供的yaml文件中,ip识别策略(IPDETECTMETHOD)没有配置,即默认为first-found,这会导致一个网络异常的ip作为nodeIP被注册,从而影响node之间的网络连接。可以修改成can-reach或者interface的策略,尝试连接某一个Ready的node的IP,以此选择出正确的IP

修改calicao的yaml文件,添加两行配置
- name: IP_AUTODETECTION_METHOD
value: "interface=eth1" # 根据实际网卡名称配置

[root@k8s-master yaml]# vim calico.yaml
...(3546行)

            #Cluster type to identify the deployment type
            - name: CLUSTER_TYPE
              value: "k8s,bgp"
            #新添加的配置
            - name: IP_AUTODETECTION_METHOD
              value: "interface=eth1"
            # Auto-detect the BGP IP address.
            - name: IP
              value: "autodetect"
            # Enable IPIP
            - name: CALICO_IPV4POOL_IPIP
              value: "Always"
            # Enable or Disable VXLAN on the default IP pool.
            - name: CALICO_IPV4POOL_VXLAN
              value: "Never"

重新构建

kubectl apply -f calico.yaml
以上是比较通用的解决方法
而我因为是之前将harbor和master放在了一台虚拟机上,所有这台机器上存在一个当初创建harbor的虚拟网卡,而calico将这个网卡认作了要建立通道的网卡,因此出现了这个问题,于是我将harbor转移到了其他机器上,问题就很好的解决了

posted @ 2021-01-19 17:31  渡边灬  阅读(1537)  评论(0编辑  收藏  举报
/* 看板娘 */