Мне удалось изменить сетевой пул Flannel CIDR следующим образом:
Предположим, что вы установили новый кластер k8s с помощью инструмента построения kubeadm с принятием соответствующего флага - pod-network-cidr
в команде kubeadm init
:
Заменить параметр podCIDR
на конкретном ресурсе k8s Node новым диапазоном IP-адресов, желательно с выходом конвейера:
$ kubectl get no $hostname -o yaml >> file.yaml | sed -i "s~$old_ip~$new_ip~" file.yaml| kubectl delete no $hostname && kubectl create -f file.yaml
Заменить поле «Сеть» в net- conf.json
заголовок в соответствующем Flannel ConfigMap с новым диапазоном сетевых IP-адресов:
$ kubectl edit cm kube-flannel-cfg -n kube-system
net-conf.json: | { «Сеть»: «10.244.0.0/16», "Backend": { «Тип»: «vxlan» } }
Очистить текущие сетевые интерфейсы CNI, оставшиеся в старом сетевом пуле:
$ sudo ip link del cni0; sudo ip link del flannel.1
Повторно создать модули Flannel и CoreDNS соответственно:
$ kubectl delete pod --selector=app=flannel -n kube-system
$ kubectl delete pod --selector=k8s-app=kube-dns -n kube-system
Подождите, пока модули CoreDNS получат IP-адрес из нового сетевого пула. Имейте в виду, что ваши настраиваемые модули будут по-прежнему сохранять старые IP-адреса внутри контейнеров, если вы также не воссоздаете их вручную.
Для ситца создайте новый IPpool и отключите старый.... https://projectcalico.docs.tigera.io/networking/migrate-pools