Рейтинг:1

Как выполнить динамическую миграцию с фланели на калико в кластере kubernetes с одним узлом?

флаг fr

Я пытаюсь перейти с фланели на бязь в кластере k8s.Я могу сделать это успешно в кластере из 3 узлов. Динамическая миграция с фланели на бязь работает, как описано в документация.

Но миграция с фланели на калико в кластере k8s с одним узлом не поддерживается в соответствии с Эта проблема.

Мне нужно выполнить живую миграцию с фланели на коленкор на одном узле, любые предложения по подходам приветствуются.

p10l avatar
флаг us
В нем четко указано, что «контроллер миграции Flannel должен работать на узле, который в настоящее время не мигрирует. Он не будет работать на кластере с одним узлом». В этой проблеме также опубликован возможный обходной путь: «одна вещь, которую вы можете попробовать, — это запустить второй узел на время обновления, а затем уменьшить масштаб до 1».
флаг fr
Да, я не планирую выполнять это действие с задачей миграции, как указано в документе. Я хочу выполнить эту операцию вручную, возможно, написав собственную логику миграции. Добавление еще одного узла в кластер и масштабирование до 1 для меня неприемлемо, я должен сделать это на одном узле.
p10l avatar
флаг us
На данный момент, почему бы просто не создать новый кластер с calico и не переместить в него ресурсы?
флаг fr
Спасибо за предложения. Мне придется создать новый кластер с Calico, и это должно работать нормально. Мы должны поддерживать динамическую миграцию одного узла, поскольку нам не нужно терять существующие данные.
Рейтинг:1
флаг us

Как вы уже выяснили, миграция Flannel на Calico в кластере с одним узлом не поддерживается.Это связано с тем, что контроллер миграции Flannel необходимо запланировать на узле, который в данный момент не мигрирует, что невозможно в кластере с одним узлом.

Это можно обойти, создав временный второй узел и уменьшив масштаб до 1 после завершения миграции.

Другое решение — создать совершенно новый кластер, установить Calico и переместить ресурсы из старого в новый кластер.

В крайнем случае, вы можете попробовать вручную удалить Flannel и установить поверх него Calico.


Предупреждение: Все нижеперечисленное может работать не так, как задумано. Такой подход явно не поддерживается ни Flannel, ни Calico. Он может сломаться и сделать ваш кластер непригодным для использования. Сначала попробуйте это решение в тестовой среде, настройте свою среду и только потом попробуйте это на рабочей среде.
Вы были предупреждены.


  1. Удалить фланель с помощью kubectl удалить -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
  2. SSH в вашу ноду
  3. Остановить службу кубелет systemctl остановить кубелет
  4. Остановить контейнер systemctl остановить containerd если используется в качестве среды выполнения контейнера. (замените на докер, если используется Docker Engine)
  5. Удалите все каталоги, связанные с CNI
    rm -rf /var/lib/cni
    rm -rf /бег/фланель
    рм -рф /etc/cni
    
  6. Найдите любые интерфейсы, связанные с CNI/Flannel, и удалите их.
    IP-ссылка
    
    для каждого интерфейса сделайте следующее
    ifconfig <имя интерфейса из ip link> down
    ip link delete <имя интерфейса из ip link>
    
  7. Перезапустить среду выполнения контейнера
  8. Перезапустить кубелет
  9. Установите Calico так же, как на новом кластере.
Wytrzymały Wiktor avatar
флаг it
Привет @Siddharood и добро пожаловать в ServerFault! Пожалуйста, не забудьте [отреагировать на ответы на ваши вопросы] (https://stackoverflow.com/help/someone-answers). Таким образом, мы узнаем, были ли ответы полезными и могли ли они быть полезны другим членам сообщества. Попробуйте [принять ответ](https://stackoverflow.com/help/accepted-answer), который является окончательным решением вашей проблемы, проголосуйте за полезные ответы и прокомментируйте те, которые можно улучшить или требуют дополнительного внимания. Наслаждайтесь пребыванием!
флаг fr
@ p10l спасибо за предложения. Я следовал большинству ваших шагов. Я отклонился от упомянутых шагов. Я публикую ответ ниже, который сработал для меня.
Рейтинг:0
флаг fr

Ниже приведены шаги, которые помогли мне при переходе с фланели на бязь. Я выполнил большинство шагов, упомянутых в ответе @ p1ol.

  1. Удалить фланель

  2. Остановить кубелет

  3. Отключите интерфейс ifconfig и удалите фланель, связанная с ip link

  4. Перезапустите Кубелет

  5. Установить бязь

Установка Calico не создавала модуль calico-node, а модуль calico-kube-controllers-** завис в состоянии инициализации модуля или создания контейнера.

я ссылался на блог где было предложено обновить calico yaml для диапазона CIDR, а также мне пришлось настроить IP_AUTODETECTION_METHOD, как было предложено. здесь

В конце концов, я перезапустил свой узел.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.