NetworkPlugin cni не удалось настроить модуль «xxxxx»: не удалось установить адрес моста: «cni0» уже имеет IP-адрес, отличный от 10.xxx - ошибка - PullRequest
0 голосов
/ 22 апреля 2020

Я получаю эту ошибку после запуска виртуальных машин рабочего узла (Kubernetes) с консоли AWS. Я использую PKS (Pivotal Container Service)

сеть для модуля "xxxxx": NetworkPlugin cni не удалось настроить модуль "xxxxx" сеть: не удалось установить мост addr: "cni0" уже имеет IP-адрес, отличный от 10.xxx/xx

Я предполагаю, что Flannel назначает аренду su bnet рабочим в кластере, срок действия которых истекает через 24 часа - и flannel.1 и cni0 /24 su bnet больше не соответствует, что вызывает эту проблему.

Я также знаю обходной путь:

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 Ответ

1 голос
/ 01 мая 2020

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-handbook в рецепте Pod stuck in Waiting or ContainerCreating оба рекомендуют

$ ip link set cni0 down
$ brctl delbr cni0  

Статья базы знаний Фланеля

И есть статья в Flannel ' s KB: Фланельная сеть PKS не синхронизируется c с docker мостовой сетью (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 не помог, КБ рекомендует:

    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"
...