Межкластерное соединение (Alpha)
Поддерживается настройка межкластерного соединения между кластерами с одинаковым сетевым режимом Kube-OVN, чтобы поды в кластерах могли взаимодействовать друг с другом. Cluster Interconnect Controller — это расширяемый компонент, предоставляемый Kube-OVN, который отвечает за сбор сетевой информации между разными кластерами и соединение сетей нескольких кластеров путем выдачи маршрутов.
Содержание
Предварительные требованияПостроен контроллер подключения Multi-node Kube-OVNDeploy DeploymentDocker и Containerd DeploymentРазвертывание контроллера межкластерного соединения в глобальном кластереПрисоединение к межкластерному соединениюСоответствующие операцииОбновление информации о шлюзовом узле в межсоединённом кластереВыход из межкластерного соединенияОчистка остатков межсоединённого кластераУдаление межсоединённого кластераНастройка высокой доступности шлюза кластераПредварительные требования
-
CIDR подсетей разных кластеров не должны пересекаться.
-
Необходим набор машин, доступных по IP для kube-ovn-controller каждого кластера, для развертывания контроллеров межкластерного соединения.
-
Для каждого кластера должен существовать набор машин, доступных kube-ovn-controller по IP для межкластерного соединения, которые впоследствии будут использоваться в качестве шлюзовых узлов.
-
Эта функция доступна только для VPC по умолчанию, пользовательские VPC не могут использовать функцию межсоединения.
Построен контроллер подключения Multi-node Kube-OVN
Доступны три метода развертывания: Deploy deployment (поддерживается в платформе с версии v3.16.0 и выше), Docker deployment и Containerd deployment.
Deploy Deployment
Примечание: Этот метод развертывания поддерживается в платформе с версии v3.16.0 и выше.
Шаги выполнения
-
Выполните следующую команду на Master-узле кластера, чтобы получить скрипт установки install-ic-server.sh.
-
Откройте скрипт в текущем каталоге и измените параметры следующим образом.
Измените параметры на следующие:
-
Сохраните скрипт и выполните его следующей командой.
Docker и Containerd Deployment
-
Выберите три и более узлов в любом кластере для развертывания Interconnected Controller. В этом примере подготовлено три узла.
-
Выберите любой узел в качестве Leader и выполните команды в соответствии с выбранным методом развертывания.
Примечание: Перед настройкой проверьте наличие каталога ovn в
/etc. Если его нет, создайте его командойmkdir /etc/ovn.-
Команды для Docker deployment
Примечание: Выполните команду
docker images | grep ovn, чтобы получить адрес образа Kube-OVN.-
Команда для Leader-узла:
-
Команды для остальных двух узлов:
-
-
Команды для Containerd deployment
Примечание: Выполните команду
crictl images | grep ovn, чтобы получить адрес образа Kube-OVN.-
Команда для Leader-узла:
-
Команды для остальных двух узлов:
-
-
Развертывание контроллера межкластерного соединения в глобальном кластере
На любом управляющем узле глобального кластера замените параметры согласно комментариям и выполните следующую команду для создания ресурса ConfigMap.
Примечание: Для корректной работы ConfigMap с именем ovn-ic в глобальном кластере не разрешается изменять. Если необходимо изменить параметры, удалите ConfigMap и корректно настройте его заново перед применением.
Присоединение к межкластерному соединению
Добавление кластера с сетевым режимом Kube-OVN в межкластерное соединение.
Предварительные условия
Созданные подсети, ovn-default и подсети для присоединения в кластере не должны конфликтовать с сегментами других кластеров в группе межкластерного соединения.
Порядок действий
-
В левой навигационной панели нажмите Clusters > Cluster of clusters.
-
Нажмите на имя кластера, который нужно добавить в межкластерное соединение.
-
В правом верхнем углу нажмите Options > Cluster Interconnect.
-
Нажмите Join the cluster interconnect.
-
Выберите шлюзовый узел для кластера.
-
Нажмите Join.
Соответствующие операции
Обновление информации о шлюзовом узле в межсоединённом кластере
Обновление информации о шлюзовых узлах кластера, которые уже присоединились к группе межкластерного соединения.
Порядок действий
-
В левой навигационной панели нажмите Clusters > Cluster of clusters.
-
Нажмите на имя кластера, для которого нужно обновить информацию о шлюзовом узле.
-
В правом верхнем углу нажмите Operations > Cluster Interconnect.
-
Нажмите Update Gateway Node для кластера, информацию о шлюзовом узле которого нужно обновить.
-
Повторно выберите шлюзовый узел для кластера.
-
Нажмите Update.
Выход из межкластерного соединения
Кластер, который присоединился к группе межкластерного соединения, выходит из межкластерного соединения, при этом разрывается связь между подами этого кластера и подами внешних кластеров.
Порядок действий
-
В левой навигационной панели нажмите Clusters > Cluster of clusters.
-
Нажмите на имя кластера, который нужно вывести из эксплуатации.
-
В правом верхнем углу нажмите Options > Cluster Interconnect.
-
Нажмите Exit cluster interconnection для кластера, из которого хотите выйти.
-
Введите имя кластера корректно.
-
Нажмите Exit.
Очистка остатков межсоединённого кластера
Если кластер удаляется без выхода из межкластерного соединения, на контроллере могут остаться некоторые остаточные данные. При попытке повторно создать кластер на этих узлах и присоединить его к межкластерному соединению могут возникать ошибки. Подробную информацию об ошибках можно посмотреть в логе /var/log/ovn/ovn-ic.log контроллера (kube-ovn-controller). Некоторые сообщения об ошибках могут содержать:
Шаги выполнения
-
Выйдите из межкластерного соединения для кластера, который нужно присоединить.
-
Выполните скрипт очистки в контейнере или pod.
Скрипт очистки можно выполнить напрямую либо в контейнере ovn-ic-db, либо в pod ovn-ic-controller. Выберите один из следующих способов:
Способ 1: Выполнение в контейнере ovn-ic-db
-
Войдите в контейнер ovn-ic-db и выполните очистку следующими командами.
Затем выполните одну из следующих команд очистки:
-
Очистка по имени исходного кластера. Замените <cluster-name> на имя исходного кластера:
-
Очистка по имени любого узла исходного кластера. Замените <node-name> на имя любого узла исходного кластера:
-
Способ 2: Выполнение в pod ovn-ic-controller
-
Войдите в pod ovn-ic-controller и выполните очистку следующими командами.
Затем выполните одну из следующих команд очистки:
-
Очистка по имени исходного кластера. Замените <cluster-name> на имя исходного кластера:
-
Очистка по имени любого узла исходного кластера. Замените <node-name> на имя любого узла исходного кластера:
-
-
Удаление межсоединённого кластера
Примечание: Шаг 1 — Шаг 3 необходимо выполнить на всех рабочих кластерах, присоединившихся к межсоединённому кластеру.
Шаги выполнения
-
Выйдите из межкластерного соединения. Есть два способа выхода, выберите подходящий.
-
Удалите ConfigMap с именем ovn-ic-config в рабочем кластере командой:
-
Выйдите из межкластерного соединения через операции платформы.
-
-
Войдите в Leader Pod ovn-central следующей командой.
- Очистите логический коммутатор ts следующей командой.
-
Войдите на узел, где развернут контроллер, и удалите контроллер.
-
Команды для Docker:
-
Команды для Containerd:
-
-
Удалите ConfigMap с именем ovn-ic в глобальном кластере следующей командой.
Настройка высокой доступности шлюза кластера
Чтобы настроить высокодоступный шлюз кластера после присоединения к межкластерному соединению, выполните следующие шаги:
-
Войдите в кластер, который нужно преобразовать в высокодоступный шлюз, и выполните команду для изменения поля
enable-icнаfalse.Примечание: Изменение поля
enable-icнаfalseпрервет межкластерное соединение до тех пор, пока оно снова не будет установлено вtrue. -
Измените конфигурацию шлюзовых узлов, обновив поле
gw-nodes, разделяя узлы английскими запятыми; также измените полеenable-icнаtrue. -
Перейдите в Pod в кластере ovn-central и выполните команду
ovn-nbctl lrp-get-gateway-chassis {имя текущего кластера}-ts, чтобы проверить, что конфигурация вступила в силу.