Как вы уже выяснили, миграция Flannel на Calico в кластере с одним узлом не поддерживается.Это связано с тем, что контроллер миграции Flannel необходимо запланировать на узле, который в данный момент не мигрирует, что невозможно в кластере с одним узлом.
Это можно обойти, создав временный второй узел и уменьшив масштаб до 1 после завершения миграции.
Другое решение — создать совершенно новый кластер, установить Calico и переместить ресурсы из старого в новый кластер.
В крайнем случае, вы можете попробовать вручную удалить Flannel и установить поверх него Calico.
Предупреждение: Все нижеперечисленное может работать не так, как задумано. Такой подход явно не поддерживается ни Flannel, ни Calico. Он может сломаться и сделать ваш кластер непригодным для использования. Сначала попробуйте это решение в тестовой среде, настройте свою среду и только потом попробуйте это на рабочей среде.
Вы были предупреждены.
- Удалить фланель с помощью
kubectl удалить -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
- SSH в вашу ноду
- Остановить службу кубелет
systemctl остановить кубелет
- Остановить контейнер
systemctl остановить containerd
если используется в качестве среды выполнения контейнера. (замените на докер, если используется Docker Engine)
- Удалите все каталоги, связанные с CNI
rm -rf /var/lib/cni
rm -rf /бег/фланель
рм -рф /etc/cni
- Найдите любые интерфейсы, связанные с CNI/Flannel, и удалите их.
IP-ссылка
для каждого интерфейса сделайте следующее
ifconfig <имя интерфейса из ip link> down
ip link delete <имя интерфейса из ip link>
- Перезапустить среду выполнения контейнера
- Перезапустить кубелет
- Установите Calico так же, как на новом кластере.