
Можно ли изменить CIDR сетевой flannel на работающем кластере Kubernetes? Если да, то что будет с запущенными pod'ами?
Спасибо
решение1
Мне удалось изменитьсяФланельПул сети CIDR следующим образом:
Предположим, что вы установили новый кластер k8s черезкубеадминструмент конструктора с принятием соответствующего --pod-network-cidr
флага в kubeadm init
команде:
Переопределить podCIDR
параметр для конкретного k8sУзелресурс с новым диапазоном источника 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КонфигурацияКартас новым диапазоном сетевых IP-адресов:
$ kubectl edit cm kube-flannel-cfg -n kube-system
net-conf.json: | { "Сеть": "10.244.0.0/16", "Бэкэнд": { "Тип": "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-адреса внутри контейнеров, если вы не создадите их заново вручную.
решение2
Для Calico создайте новый IPpool и отключите старый....https://projectcalico.docs.tigera.io/networking/migrate-pools