NetworkPlugin cni无法设置Pod“ xxxxx”网络:无法设置网桥地址:“ cni0”已具有不同于10.x.x.x的IP地址-错误

时间:2020-04-22 19:17:06

标签: amazon-web-services kubernetes pivotal-cloud-foundry flannel pivotaltracker

Kubernetes控制台启动工作节点VM(AWS)之后,出现此错误。我正在使用PKSPivotal Container Service

pod“ xxxxx”的网络:NetworkPlugin cni无法设置Pod“ xxxxx”网络:无法设置网桥地址:“ cni0”的IP地址已不同于10.x.x.x / xx

我假设Flannel为群集中的工作人员分配了子网租约,租约在24小时后到期-并且flannel.1cni0 /24子网不再匹配,这会导致此问题。

我也知道一种解决方法:

bosh ssh -d worker -c "sudo /var/vcap/bosh/bin/monit stop flanneld" 
bosh ssh -d worker -c "sudo rm /var/vcap/store/docker/docker/network/files/local-kv.db" 
bosh ssh -d worker -c "sudo /var/vcap/bosh/bin/monit restart all"

但是对此有永久的解决办法吗?

1 个答案:

答案 0 :(得分:1)

TL; DR-重新创建网络

$ ip link set cni0 down
$ brctl delbr cni0  

社区解决方案

它是known issue

还有一些解决方案。

filipenv的解决方案是:

在主服务器和从服务器上:

$ kubeadm reset
$ systemctl stop kubelet
$ systemctl stop docker
$ rm -rf /var/lib/cni/
$ rm -rf /var/lib/kubelet/*
$ rm -rf /etc/cni/
$ ifconfig cni0 down
$ ifconfig flannel.1 down
$ ifconfig docker0 down

您可能需要从umount手动/var/lib/kubelet文件系统,然后在该目录上调用rm) 完成之后,我启动了docker并再次返回kubelet,然后重新启动kubeadm进程

aysark:kubernetes-handbookPod stuck in Waiting or ContainerCreating的食谱中都推荐

$ ip link set cni0 down
$ brctl delbr cni0  

法兰绒的知识库文章

Flannel的知识库中有一篇文章:PKS Flannel network gets out of sync with docker bridge network (cni0)

WA1

WA1和您一样:

    bosh ssh -d <deployment_name> worker -c "sudo /var/vcap/bosh/bin/monit stop flanneld"
    bosh ssh -d <deployment_name> worker -c "sudo rm /var/vcap/store/docker/docker/network/files/local-kv.db"
    bosh ssh -d <deployment_name> worker -c "sudo /var/vcap/bosh/bin/monit restart all"

WA2

如果WA1没有帮助,KB建议:

    bosh ssh -d <deployment_name> worker -c "sudo /var/vcap/bosh/bin/monit stop flanneld"
    bosh ssh -d <> worker -c "ifconfig | grep -A 1 flannel"
    On a master node get access to etcd using the following KB 
    On a master node run `etcdctlv2 ls /coreos.com/network/subnets/`
    Remove all the worker subnet leases from etcd by running `etcdctlv2 rm /coreos.com/network/subnets/<worker_subnet>;` for each of the worker subnets from point 2 above.
    bosh ssh -d <deployment_name> worker -c "sudo /var/vcap/bosh/bin/monit restart flanneld"