• Русский
  • Обновление глобального кластера

    состоит из глобального кластера и одного или нескольких рабочих кластеров. Глобальный кластер обязательно должен быть обновлён перед любыми рабочими кластерами.

    В этом документе описана процедура обновления глобального кластера.

    Если глобальный кластер настроен с использованием решения global DR (Disaster Recovery), строго следуйте процедуре global DR. В противном случае следуйте Стандартной процедуре.

    Стандартная процедура

    Загрузка образов

    Скопируйте основной пакет на любой узел управляющей плоскости глобального кластера. Распакуйте пакет и перейдите в распакованную директорию.

    • Если глобальный кластер использует встроенный реестр, выполните:

      bash upgrade.sh --only-sync-image=true
    • Если глобальный кластер использует внешний реестр, необходимо также указать адрес реестра:

      bash upgrade.sh --only-sync-image=true --registry <registry-address> --username <username> --password <password>

    Если вы планируете обновлять Operator и Cluster Plugin вместе с обновлением глобального кластера, вы можете заранее загрузить их образы в реестр глобального кластера. Инструкции по массовой загрузке смотрите в разделе Push only images from all packages in a directory.

    INFO

    Загрузка образов обычно занимает около 2 часов, в зависимости от вашей сети и производительности диска.

    Если ваша платформа настроена для глобального аварийного восстановления (DR), помните, что резервный глобальный кластер также требует загрузки образов. Планируйте окно обслуживания соответственно.

    WARNING

    При использовании violet для загрузки пакетов в резервный кластер необходимо указать параметр --dest-repo <VIP addr of standby cluster>.
    В противном случае пакеты будут загружены в репозиторий образов основного кластера, что помешает резервному кластеру устанавливать или обновлять расширения.

    Также необходимо предоставить либо данные аутентификации реестра образов резервного кластера, либо параметр --no-auth.

    Для подробностей по подкоманде violet push смотрите Upload Packages.

    Запуск обновления

    После завершения загрузки образов выполните следующую команду для запуска процесса обновления:

    bash upgrade.sh --skip-sync-image

    Дождитесь завершения скрипта перед продолжением.

    Если вы заранее загрузили образы Operator и Cluster Plugin в реестр глобального кластера, затем можете выполнить Create only CRs from all packages in a directory. После выполнения команды подождите около 10–15 минут, пока не появятся уведомления об обновлении функциональных компонентов. После этого вы сможете обновить Operator и Cluster Plugin вместе в рамках последующих шагов обновления.

    WARNING
    1. При обновлении глобального кластера не используйте параметр --clusters для создания CR в рабочих кластерах на шаге Create only CRs from all packages in a directory. Это может привести к сбоям обновления при последующем обновлении рабочих кластеров.

    2. Если вы обновляетесь с версии 3.18 или 4.0 и в директории содержится пакет Build of TopoLVM, его необходимо удалить до выполнения шага Create only CRs from all packages in a directory. После этого создайте CR для TopoLVM отдельно, обязательно указав параметр --target-catalog-source "platform".

    (Условно) Удаление TopoLVM

    Если вы обновляетесь с версии 3.18 и установлен Build of TopoLVM, необходимо сделать резервную копию и удалить связанные ресурсы TopoLVM перед продолжением обновления.

    В противном случае обновление кластера завершится с ошибкой.

    Выполните следующие команды на любом узле управляющей плоскости обновляемого кластера:

    kubectl get artifactversion -n cpaas-system  $(kubectl get artifactversion -n cpaas-system -l cpaas.io/artifact-version=operatorhub-topolvm-operator --no-headers | grep 4.1 | head -1 | awk '{print $1}') -o yaml > topolvm-artifact.yaml
    kubectl delete -f topolvm-artifact.yaml

    Затем выполните следующую команду на любом узле управляющей плоскости глобального кластера:

    # Замените cluster_name на имя обновляемого кластера
    kubectl delete minfo $(kubectl get minfo | grep topolvm-migrate-catalog-updater | grep $cluster_name | awk '{print $1}')

    Обновление глобального кластера

    WARNING

    Если вы обновляетесь с версии 3.16 или 3.18 и на платформе установлены Data Services, необходимо также обновить соответствующие расширения при обновлении кластеров.

    Подробнее смотрите в разделе Upgrade Data Services.

    1. Войдите в Web Console глобального кластера и переключитесь в режим Administrator.
    2. Перейдите в раздел Clusters > Clusters.
    3. Нажмите на кластер global для открытия его подробного просмотра.
    4. Перейдите на вкладку Functional Components.
    5. Нажмите кнопку Upgrade.

    Ознакомьтесь с доступными обновлениями компонентов в диалоговом окне и подтвердите продолжение.

    INFO
    • Обновление версии Kubernetes является необязательным. Однако, поскольку возможны перебои в работе сервисов, рекомендуется включить обновление Kubernetes, чтобы избежать нескольких окон обслуживания.
    • Если в глобальном кластере установлен плагин Alauda Container Platform GitOps и после обновления его поды работают некорректно, обратитесь к Обновлению Alauda Container Platform GitOps.

    (Условно) Обновление TopoLVM

    Если вы обновляетесь с версии 3.18, установлен Build of TopoLVM и вы уже выполнили шаг Удаление TopoLVM.

    На узле управляющей плоскости обновляемого кластера выполните команду для обновления TopoLVM:

    kubectl create -f topolvm-artifact.yaml

    После выполнения команды подождите примерно 5–10 минут. Компонент TopoLVM будет автоматически обновлён и отражён в веб-консоли.

    Установка плагина Product Docs

    INFO

    Плагин Alauda Container Platform Product Docs предоставляет доступ к документации продукта внутри платформы. Все ссылки на справку в платформе будут вести к этой документации. Если плагин не установлен, при нажатии на ссылки справки в платформе будет возникать ошибка 404.

    Начиная с версии 4.0 встроенная документация продукта выделена в отдельный плагин Alauda Container Platform Product Docs. Если вы обновляетесь с версии 3.x, необходимо установить этот плагин, выполнив следующие шаги:

    1. Перейдите в раздел Administrator.

    2. В левой боковой панели выберите Marketplace > Cluster Plugins и выберите кластер global.

    3. Найдите плагин Alauda Container Platform Product Docs и нажмите Install.

    Установка плагина Alauda Container Platform Cluster Enhancer

    INFO

    Этот шаг необходим только для проверки установки плагина cluster enhancer. Если плагин уже установлен, ничего делать не нужно.

    1. Перейдите в раздел Administrator.

    2. В левой боковой панели выберите Marketplace > Cluster Plugins и выберите кластер global.

    3. Найдите плагин Alauda Container Platform Cluster Enhancer и нажмите Install.

    (Условно) Установка Service Mesh Essentials

    Если установлен Service Mesh v1, перед обновлением рабочих кластеров обратитесь к документации Alauda Service Mesh Essentials Cluster Plugin.

    После обновления

    Процедура global DR

    Проверка согласованности данных

    Следуйте вашим стандартным процедурам проверки global DR, чтобы убедиться, что данные в резервном глобальном кластере совпадают с данными в основном глобальном кластере.

    Если обнаружены несоответствия, свяжитесь с технической поддержкой перед продолжением.

    На обоих кластерах выполните команду, чтобы убедиться, что нет узлов Machine в состоянии, отличном от запущенного:

    kubectl get machines.platform.tkestack.io

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

    Удаление плагина синхронизации etcd

    Обновление с 3.18
    Обновление с 4.0 / 4.1
    1. Зайдите в Web Console основного кластера по его IP или VIP.
    2. Переключитесь в режим Administrator.
    3. Перейдите в раздел Catalog > Cluster Plugin.
    4. УБЕДИТЕСЬ, что выбран кластер global.
    5. Найдите плагин EtcdSync и Удалите его. Дождитесь завершения удаления.

    Загрузка образов

    Выполните шаг Загрузка образов на обоих кластерах — резервном и основном.

    Подробности смотрите в разделе Загрузка образов в Стандартной процедуре.

    Обновление резервного кластера

    INFO

    Для выполнения обновления требуется доступ к Web Console резервного кластера.

    Перед началом убедитесь, что ресурс ProductBase резервного кластера корректно настроен с VIP кластера в поле spec.alternativeURLs.

    Если нет, обновите конфигурацию следующим образом:

    apiVersion: product.alauda.io/v1alpha2
    kind: ProductBase
    metadata:
      name: base
    spec:
      alternativeURLs:
        - https://<standby-cluster-vip>

    На резервном кластере выполните шаги из Стандартной процедуры для завершения обновления.

    Обновление основного кластера

    После обновления резервного кластера выполните Стандартную процедуру на основном кластере.

    Переустановка плагина синхронизации etcd

    Перед переустановкой убедитесь, что порт 2379 корректно проброшен с обоих VIP глобального кластера на их узлы управляющей плоскости.

    Для переустановки:

    1. Зайдите в Web Console резервного глобального кластера по его IP или VIP.
    2. Переключитесь в режим Administrator.
    3. Перейдите в раздел Marketplace > Cluster Plugins.
    4. Выберите кластер global.
    5. Найдите плагин Alauda Container Platform etcd Synchronizer, нажмите Install и укажите необходимые параметры.

    Для проверки установки выполните:

    kubectl get po -n cpaas-system -l app=etcd-sync  # Убедитесь, что под в состоянии 1/1 Running
    
    kubectl logs -n cpaas-system $(kubectl get po -n cpaas-system -l app=etcd-sync --no-headers | awk '{print $1}' | head -1) | grep -i "Start Sync update"
    # Дождитесь появления в логах строки "Start Sync update"
    
    # Пересоздайте под для запуска синхронизации ресурсов с ownerReferences
    kubectl delete po -n cpaas-system $(kubectl get po -n cpaas-system -l app=etcd-sync --no-headers | awk '{print $1}' | head -1)

    Проверка статуса синхронизации

    Выполните команду для проверки статуса синхронизации:

    curl "$(kubectl get svc -n cpaas-system etcd-sync-monitor -ojsonpath='{.spec.clusterIP}')/check"

    Объяснение вывода:

    • "LOCAL ETCD missed keys:" – Ключи есть в основном кластере, но отсутствуют в резервном. Обычно устраняется после перезапуска пода.
    • "LOCAL ETCD surplus keys:" – Ключи есть в резервном кластере, но отсутствуют в основном. Перед удалением проконсультируйтесь с вашей операционной командой.