k8s的node节点cni0接口无法与其他节点通信

问题描述: k8s集群中有一个master节点和两个node节点,其中一个node1节点能够与master节点正常通信,创建的pod也可以正常访问。但是另外一个node2节点cni0接口与其他两个节点都无法通信,创建的pod也无法访问,ping 10.244.0.0无法ping通。

  1. 最开始master节点和node1节点的网络都没有问题,创建的pod都能够访问,则认为node2节点的cni0接口出现了问题,于是使用ip link set cni0 down;brctl delbr cni0删除cni0接口让其重新生成,结果获取到cni0的ip任然不能与其他两个节点通信。
  2. 于是猜想应该是node2的fannel出现了问题,查看fannel日志,发现果然有问题 kubectl log kube-flannel-ds-amd64-cmkjk -n kube-systemk8s的node节点cni0接口无法与其他节点通信_第1张图片
    则把这个节点的fannel删除,使其重新生成,重启node2节点的network,问题任然存在。
  3. 没找出具体原因,于是删掉node2节点,重新添加。
    kubectl delete node k8s3
    kubeadm reset
    systemctl stop kubelet
    systemctl stop docker
    rm -rf /var/lib/cni/
    rm -rf /var/lib/kubelet/*
    rm -rf /etc/cni/
    ip link set cni0 down
    ip link set flannel.1 down
    ip link set docker0 down
    ip link delete cni0
    ip link delete flannel.1
    iptables -F
    systemctl restart network
    systemctl start docker
    systemctl start kubelet
    在master节点生成新的token
    kubeadm token create --print-join-command
    重新将node3节点加入k8s集群
    但是,任然是最初的问题,那么问题不是出在node2节点上,也不是node1节点上,可能是整个集群的fannel网络出现了问题。
  4. 删掉以前的fannel网络,生成新的fannel网络
    kubectl delete -f kube-flannel.yml
    kubectl apply -f kube-flannel.yml
    重新创建fannel网络后果然使node2节点的cni0接口能够访问到master节点,ping 10.244.0.0能够ping通,在node2创建的pod也能够访问。此时问题已解决

你可能感兴趣的:(容器,kubernetes,docker,linux,网络)