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

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

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

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

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

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

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

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

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

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

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

    INFO

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

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

    WARNING

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

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

    Подробности о подкоманде violet push см. в разделе Upload Packages.

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

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

    bash upgrade.sh --skip-sync-image

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

    Если вы уже заранее загрузили образы Operator и Cluster Plugin в registry глобального кластера, затем можно выполнить 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.

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

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

    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

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

    # Replace cluster_name with the name of the cluster to be upgraded
    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 установлен в глобальном кластере, и после обновления его pod-ы работают некорректно, обратитесь к Upgrading Alauda Container Platform GitOps.

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

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

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

    kubectl create -f topolvm-artifact.yaml

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

    Установка плагина 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, чтобы убедиться, что данные в резервном глобальном кластере согласованы с основным глобальным кластером.

    Если обнаружены несоответствия, не удаляйте плагин синхронизации etcd на следующем шаге и свяжитесь со службой технической поддержки перед продолжением. Удаление плагина в ситуации, когда в резервном глобальном кластере отсутствуют данные, которые есть в основном кластере, может привести к некорректному разрешению owner references, а объекты Machine узлов рабочего кластера — включая кластеры с immutable-OS, где это уничтожает базовую виртуальную машину, — могут быть удалены.

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

    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 и нажмите Uninstall. Дождитесь завершения удаления.

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

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

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

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

    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 глобального кластера на их узлы control plane.

    Чтобы переустановить:

    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  # Ensure pod is 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"
    # Wait until the logs contain "Start Sync update"
    
    # Recreate the pod to trigger synchronization of resources with 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:" – ключи существуют в основном кластере, но отсутствуют в резервном. Часто это устраняется после перезапуска pod-а.
    • "LOCAL ETCD surplus keys:" – ключи существуют в резервном кластере, но отсутствуют в основном. Перед удалением согласуйте их с вашей командой эксплуатации.