Обновление глобального кластера
На этой странице описан путь традиционной операционной системы для кластера global. Если ваш кластер global работает на Immutable Infrastructure (Alauda OS on Huawei DCS, VMware vSphere или Huawei Cloud Stack), шаг Kubernetes описан в документации по immutable infrastructure — см. Обновление глобального кластера на Immutable Infrastructure. Этапы Core, Aligned и Agnostic, описанные на этой странице, по-прежнему применимы к кластерам на immutable OS; отличается только способ развертывания Kubernetes.
Обновление глобального кластера также обновит оператор MySQL. Если у вас есть экземпляры PXC, после обновления оператора они перейдут в неуправляемое состояние. См. Руководство по обновлению оператора MySQL для инструкций по миграции перед обновлением.
состоит из глобального кластера и одного или нескольких кластеров рабочих нагрузок. Чтобы перевести платформу на новую версию ACP Distribution Version, сначала обновите глобальный уровень до целевой версии Distribution Version, а затем обновите кластеры рабочих нагрузок до той же версии Distribution Version.
ACP 4.3 использует workflow на базе CVO для обновления кластера. Типичное обновление кластера global включает подготовку артефактов, предварительные проверки, запрос на обновление и наблюдение за статусом.
Перед обновлением кластера global до ACP 4.3 убедитесь, что каждый кластер рабочих нагрузок работает на совместимой версии Kubernetes. Для ACP 4.3 совместимыми версиями являются 1.34, 1.33, 1.32 и 1.31. Это требование является отдельным от более широкого диапазона управления сторонними кластерами.
Это требование к совместимым версиям применяется независимо от того, используется ли в среде global DR. Global DR изменяет процедуру, используемую для обновления глобального уровня, но не изменяет требование, согласно которому кластеры рабочих нагрузок должны оставаться в пределах диапазона совместимых версий Kubernetes до тех пор, пока глобальный уровень не будет обновлён до целевой версии Distribution Version.
Обновления глобального кластера выполняются по проверенной процедуре на базе upgrade.sh, описанной на этой странице. Вы можете запросить обновление глобального кластера из Web Console, обновив ClusterVersionShadow.spec.desiredUpdate, или используя ACP CLI с --cluster=global. Полный workflow AC CLI и интерпретацию вывода см. в разделе Обновление кластеров. Полный синтаксис команд и флагов см. в Справочнике по административным командам AC CLI.
Если в среде используется global DR, следуйте процедуре Global DR. В противном случае следуйте стандартному workflow ниже.
Стандартный workflow
Обновление глобального кластера выполняется по этапам в течение определённого временного окна. Большая часть работы выполняется до окна обслуживания, чтобы само окно оставалось коротким и предсказуемым:
Этапы 1 и 2 не изменяют состояние кластера — выполняйте их заранее, чтобы в окно обслуживания попал только этап 3. Для небольшой среды или лаборатории вместо этого можно выполнить одну команду bash upgrade.sh, которая одновременно выполняет синхронизацию и развёртывание CVO, но в производственных окнах обычно эти действия разделяют.
Синхронизация артефактов обновления
Когда: в любое время до окна обслуживания. Этот шаг загружает артефакты в registry и не изменяет состояние кластера.
Из каталога с распакованным core package выполните upgrade.sh в режиме только синхронизации:
--only-sync-image загружает образы и артефакты плагинов без развёртывания cluster version operator. CVO будет развёрнут позже, уже в окне обслуживания — см. Развёртывание cluster version operator.
upgrade.sh синхронизирует артефакты, необходимые для workflow на базе CVO, включая:
upgrade.sh охватывает Core . Плагины Aligned и Agnostic не отправляются upgrade.sh; отправьте их с помощью violet до запроса на обновление, используя пакеты, загруженные в Подготовке перед обновлением.
Рекомендуется отправлять каждый пакет оператора на каждый кластер из окна глобального обновления. Если окно глобального обновления уже прошло и вы обнаружили, что на кластере рабочих нагрузок отсутствует пакет оператора, вы всё ещё можете отправить его на этот кластер перед обновлением рабочих нагрузок — см. Обновление кластеров рабочих нагрузок.
Поведение registry зависит от конфигурации среды:
Когда целевой registry не является registry по умолчанию платформы, добавьте параметры registry:
Чтобы обойти проверку артефактов, когда известно, что она избыточна, добавьте --skip-check-artifacts.
Не открывайте окно обслуживания, пока синхронизация образов и плагинов не завершена.
Выполнение предварительных проверок
Когда: за 1–2 недели до окна обслуживания, чтобы успеть устранить все блокирующие элементы до его открытия.
Запустите upgrade.sh в режиме preflight:
Preflight выполняется только для чтения — он проверяет готовность к обновлению и не изменяет состояние кластера.
Preflight возвращает две части:
Набор проверок по умолчанию включает:
ResourcePatchUpgradeableClusterVersionUpgradeableVersionUpgradePathKubernetesVersionSupportedDockerRuntimeUnsupportedClusterRunningClusterModuleStableControlPlaneStaticPodsPresentCustomEtcdBackupCronJobsAbsentCRIUpgradePodsAbsentModuleInfoStablePlatformLicense
Обработка блокировок preflight при необходимости
Когда: до окна обслуживания. Устраните все блокирующие элементы, обнаруженные preflight, чтобы не тратить окно на устранение неполадок.
Если ResourcePatchUpgradeable завершается с reason=UnexemptResourcePatches, проверьте блокирующий ResourcePatch и добавьте требуемую аннотацию исключения:
Ключ аннотации по умолчанию — config.cpaas.io/exempt-for-ver.
Если для временной диагностики необходимо отключить определённые проверки, настройте cpaas-system/cvo-config:
Развёртывание cluster version operator
Когда: в начале окна обслуживания.
Запустите upgrade.sh в режиме skip-sync. Синхронизация пропускается, поскольку артефакты уже были загружены на шаге Синхронизация артефактов обновления:
Это разворачивает или обновляет cluster version operator (CVO) и завершает оставшуюся подготовку. CVO управляет обновлением Core и плагинов Aligned после того, как обновление будет запрошено на следующем шаге.
Запрос обновления
После развёртывания cluster version operator запросите обновление через одну из следующих точек входа. Все три точки входа эквивалентны; выберите ту, которая соответствует вашей операционной модели.
Используйте эту точку входа после того, как целевая версия станет доступна для кластера. Запрос выполняется в два шага:
- На шаге 1 просмотрите список RPCH.
- Нажмите Acknowledge, чтобы перейти к Step 2.
- На шаге 2 проверьте Current Version и Target Version. На этом этапе страница не показывает список плагинов или панель предупреждения.
- Целевая версия определяется подготовленными артефактами обновления и не может быть выбрана вручную в Web Console.
- Нажмите Start Upgrade.
- Подтвердите действие в диалоговом окне.
- После подтверждения страница покажет, что запрос на обновление отправлен, а действие перейдёт в состояние выполнения.
Наблюдение за выполнением
Используйте следующую команду, чтобы проверить общий статус:
Важные поля статуса:
Сначала обратите внимание на следующие условия:
Полезная диагностика:
(Условно) Обновление Service Mesh Essentials
Если установлен Service Mesh v1, перед обновлением кластеров рабочих нагрузок обратитесь к документации по Плагин кластера Alauda Service Mesh Essentials.
Обновление Agnostic-плагинов из Marketplace
CVO управляет Core и плагинами Aligned. Agnostic-плагины не входят в область действия CVO и должны обновляться по отдельности после того, как кластер достигнет целевой версии Distribution Version. Нужно ли обновлять каждый Agnostic-плагин, зависит от его собственной совместимости с Kubernetes — см. release notes плагина на предмет совместимости с целевой версией Kubernetes.
Для каждого используемого на глобальном кластере Agnostic-плагина:
- В Web Console переключитесь в представление Administrator.
- Перейдите в Marketplace > Cluster Plugins для Agnostic-плагинов кластера либо в workflow оператора для Agnostic-операторов.
- Выберите целевой плагин или оператор и запустите обновление. Workflow обновления Marketplace использует пакет, ранее отправленный с помощью
violet.
Если вы пропустили отправку Agnostic-плагина во время предварительной подготовки и Marketplace не предлагает целевую версию, сначала выполните шаг violet push, а затем повторите обновление через Marketplace.
После обновления
- Обновить Alauda AI
- Обновить Alauda DevOps
-
После того как все кластеры рабочих нагрузок также достигнут ACP 4.3, завершите усиление PKCE, следуя инструкции Отключение метода PKCE Plain.
-
ACP 4.3 исправляет проблему аутентификации API, при которой к некоторым API ранее можно было получить доступ без аутентификации. После того как глобальный кластер достигнет ACP 4.3, обновите следующие L5-плагины до версий, совместимых с ACP v4.3. В противном случае их страницы UI могут не открываться:
Alauda DevOps v3Alauda AI EssentialsAlauda HyperfluxAlauda Container Platform Data Services Essentials
-
После обновления плагинов убедитесь, что каждая указанная страница UI плагина успешно открывается.
Процедура Global DR
Используйте эту процедуру, если в среде есть основной глобальный кластер и резервный глобальный кластер. Нижеописанные шаги, специфичные для DR, выполняются дополнительно к стандартному workflow CVO.
Проверьте среду DR перед обновлением
Следуйте обычным процедурам проверки global DR, чтобы убедиться, что данные в резервном глобальном кластере согласованы с основным глобальным кластером. Дополнительную информацию о топологии DR и workflow синхронизации см. в разделе Аварийное восстановление глобального кластера.
Если обнаружены несоответствия, не удаляйте плагин синхронизации etcd на следующем шаге и перед продолжением обратитесь в техническую поддержку. Удаление плагина, когда в резервном глобальном кластере отсутствуют данные, которые есть в основном, может привести к некорректному разрешению owner references, а объекты Machine узлов кластера рабочих нагрузок — включая кластеры на immutable OS, где это приведёт к уничтожению базовой виртуальной машины — могут быть удалены.
На обоих глобальных кластерах выполните следующую команду, чтобы убедиться, что ни один узел Machine не находится в состоянии, отличном от running:
Если такие узлы существуют, устраните проблему до продолжения.
Удалите плагин синхронизации etcd с резервного глобального кластера
- Откройте Web Console резервного глобального кластера через его IP или VIP.
- Переключитесь в представление Administrator.
- Перейдите в Marketplace > Cluster Plugins и выберите кластер
global. - Найдите etcd Synchronizer и удалите его.
- Дождитесь завершения удаления, прежде чем продолжать.
Синхронизируйте артефакты обновления на обоих глобальных кластерах
Выполните Синхронизацию артефактов обновления из стандартного workflow на обоих кластерах: и на резервном, и на основном.
Используйте один и тот же режим синхронизации на обоих кластерах.
Обновите резервный глобальный кластер
Если вы будете использовать Web Console на резервном глобальном кластере, убедитесь, что ProductBase резервного кластера включает резервный VIP в spec.alternativeURLs:
После завершения синхронизации выполните оставшиеся шаги из стандартного workflow на резервном глобальном кластере:
- Выполните предварительные проверки
- Разверните cluster version operator
- Запросите обновление
- Наблюдайте за выполнением до тех пор, пока резервный глобальный кластер не достигнет целевой версии
Обновите основной глобальный кластер
После того как резервный глобальный кластер достигнет целевой версии, выполните оставшиеся шаги из стандартного workflow на основном глобальном кластере:
- Выполните предварительные проверки
- Разверните cluster version operator
- Запросите обновление
- Наблюдайте за выполнением до тех пор, пока основной глобальный кластер не достигнет целевой версии
Переустановите плагин синхронизации etcd и проверьте состояние синхронизации
Перед переустановкой плагина убедитесь, что порт 2379 корректно проброшен с обоих VIP глобального кластера на их узлы control plane, если используется такой режим проброса. Проброс порта через load balancer не требуется, если резервный глобальный кластер может напрямую обращаться к активному глобальному кластеру.
Чтобы переустановить плагин:
-
Создайте или обновите Secret
etcd-sync-active-cluster-tokenвcpaas-system. Сначала получите bearer token для доступа к API server активного глобального кластера с активного глобального кластера. Затем скопируйте вывод команды и используйте его при создании Secret. Secret хранит токен в ключе данныхtoken. Используйте этот Secret через Active Global Cluster Token Secret. Наследуемая конфигурация с обычным токеном остаётся только как резервный вариант для совместимости и не является рекомендуемым операционным путём.Скопируйте значение вывода, затем выполните эту команду на резервном кластере:
-
Откройте Web Console резервного глобального кластера через его VIP и переключитесь в представление Administrator.
-
Перейдите в Marketplace > Cluster Plugins и выберите кластер
global. -
Найдите etcd Synchronizer, нажмите Install и настройте требуемые параметры.
При настройке плагина:
- Установите Active Global Cluster VIP в значение VIP активного глобального кластера.
- Когда порт
2379не проброшен через load balancer, корректно укажите Active Global Cluster ETCD Endpoints. - Установите Standby Cluster ETCD Endpoints в адрес etcd резервного кластера. Используйте значение по умолчанию, если локальная служба etcd не опубликована через другой endpoint.
- Установите Active Global Cluster Token Secret в
etcd-sync-active-cluster-token. - Используйте значение по умолчанию для Data Check Interval.
- Оставьте Print detail logs отключённым, если только вы не выполняете диагностику.
Во время переустановки система запускает Job etcd-sync-bootstrap перед стартом Deployment etcd-sync. Релиз продолжится только после того, как Job подготовит remote-etcd-ca, remote-etcd-issuer и remote-etcd-client.
Проверьте bootstrap Job и runtime-ресурсы:
Дождитесь, пока kubectl get lease -n cpaas-system etcd-sync-mirror -o jsonpath='{.spec.holderIdentity}' вернёт непустое значение, прежде чем продолжать.
Проверьте, что sync Pods запущены на резервном глобальном кластере, и определите текущий leader:
Если ресурсы с зависимостями ownerReference нужно пересинхронизировать, пересоздайте текущий Pod leader после появления Start Sync update:
Проверьте состояние синхронизации:
Интерпретация вывода:
LOCAL ETCD missed keys: ключи существуют в основном глобальном кластере, но отсутствуют в резервном. Часто это устраняется после перезапуска текущего Pod leaderetcd-sync.LOCAL ETCD surplus keys: ключи существуют в резервном глобальном кластере, но отсутствуют в основном. Перед удалением обсудите их с вашей операционной командой.