Можно ли изменить фланель сети CIDR при работающем кластере Kubernetes? Если да, что будет с запущенными модулями?
Спасибо
Мне удалось изменить Фланель Сетевой пул 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 ConfigMap с новым диапазоном сетевых 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-адреса внутри контейнеров, если вы также не воссоздаете их вручную.