Kubernetes集群flannel网卡名不兼容导致启动失败问题

环境:

kubeoperator安装的kubernetes1.20.6,flannel网络。

docker:19.03.15

1. 问题

今天扩容一节点到k8s中,发现新节点的守护容器kube-flannel-ds启动失败。

kubectl describe pod kube-flannel-ds-lk52g -n kube-system

或到该节点中使用docker logs xxxxx查看,日志报错如下:

I0815 00:25:37.646559       1 main.go:201] Could not find valid interface matching ens32: error looking up interface ens32: route ip+net: no such network interface
E0815 00:25:37.646628       1 main.go:225] Failed to find interface to use that matches the interfaces and/or regexes provided

2. 解决过程
因为是flannel容器报错,那就找到创建flannel网络时使用的yaml配置,具体是

/etc/kubernetes/plugins/network-plugin/kube-flannel.yaml

发现是如下段的影响,只配置了eth0,这也是在创建集群的时候设置的。

      containers:
      - name: kube-flannel
        image: registry.kubeoperator.io:8082/coreos/flannel:v0.13.0
        command:
        - /opt/bin/flanneld
        args:
        - --ip-masq
        - --kube-subnet-mgr
        - --iface=eth0
       


上面只有名为eth0的网卡名才支持。因为我新节点网卡名为ens192,所以怎么才能兼容各种网卡名呢?上面显示这个是由命令flanneld控制的,我们可以看到,-iface value和-iface-regex value可以指定网卡。为了兼容2种网卡yaml配置中这段我修改成了

      containers:
      - name: kube-flannel
        image: registry.kubeoperator.io:8082/coreos/flannel:v0.13.0
        command:
        - /opt/bin/flanneld
        args:
        - --ip-masq
        - --kube-subnet-mgr
        - --iface=eth0
        - --iface=ens192


问题解决。如果有多网卡网络,flannel最好是指定通信网卡,越精确越好,否则不指定它则使用默认路由的网卡通信。
 

你可能感兴趣的:(python开发,深度学习)