k8s的node节点cni0接口无法与其他节点通信
问题描述: k8s集群中有一个master节点和两个node节点,其中一个node1节点能够与master节点正常通信,创建的pod也可以正常访问。但是另外一个node2节点cni0接口与其他两个节点都无法通信,创建的pod也无法访问,ping 10.244.0.0无法ping通。最开始master节点和node1节点的网络都没有问题,创建的pod都能够访问,则认为node2节点的cni0接口出现
·
问题描述: k8s集群中有一个master节点和两个node节点,其中一个node1节点能够与master节点正常通信,创建的pod也可以正常访问。但是另外一个node2节点cni0接口与其他两个节点都无法通信,创建的pod也无法访问,ping 10.244.0.0无法ping通。
- 最开始master节点和node1节点的网络都没有问题,创建的pod都能够访问,则认为node2节点的cni0接口出现了问题,于是使用ip link set cni0 down;brctl delbr cni0删除cni0接口让其重新生成,结果获取到cni0的ip任然不能与其他两个节点通信。
- 于是猜想应该是node2的fannel出现了问题,查看fannel日志,发现果然有问题 kubectl log kube-flannel-ds-amd64-cmkjk -n kube-system
则把这个节点的fannel删除,使其重新生成,重启node2节点的network,问题任然存在。 - 没找出具体原因,于是删掉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网络出现了问题。 - 删掉以前的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也能够访问。此时问题已解决
更多推荐
已为社区贡献10条内容
所有评论(0)