Миграция существующих кластеров Huawei Cloud Stack на постоянные диски, управляемые пулом
Используйте это руководство, если вы обновляете существующий кластер Huawei Cloud Stack (HCS) со старой схемы томов данных HCSMachineTemplate на модель постоянных дисков, управляемых пулом.
Начиная с HCS provider v1.0.1 или более поздней версии, диски, которые должны сохраняться при замене узла, объявляются в HCSMachineConfigPool.spec.configs[].persistentDisks[]. Это включает диск /var/cpaas, требуемый платформой.
Версия
Используйте эту процедуру, если в кластере используется ACP v4.3.1 или более поздней версии, а целевая версия HCS provider — v1.0.1 или более поздняя.
Содержание
ОбзорПеред началомПроверка текущей схемы дисковОпределите, какие диски нужно сохранитьСоздайте новые Machine TemplatesПодготовьте стратегию rolloutОбновите Machine Configuration PoolЗапустите пошаговую заменуПроверьте миграциюОбработка сбоевОграничения и примечания по восстановлениюСвязанные темыОбзор
В старых кластерах HCS каталог /var/cpaas часто располагался в HCSMachineTemplate.spec.template.spec.dataVolumes[]. Такая схема создает тома данных вместе с ECS. При пошаговой замене старый ECS и принадлежащие шаблону тома данных могут быть удалены одновременно.
Модель, управляемая пулом, переносит диски, сохраняемые при обновлении, в HCSMachineConfigPool.spec.configs[].persistentDisks[]. Каждый постоянный диск привязан к фиксированной идентичности (hostname, slot). Во время пошаговой замены provider:
- Забирает существующий диск EVS у старого ECS, если он соответствует объявлению пула.
- Останавливает старый ECS.
- Отключает диск EVS и ожидает, пока он станет доступен.
- Удаляет старый ECS.
- Создает заменяющий ECS с тем же диском EVS, подключенным до первой загрузки.
- Загружает заменяющий ECS, который монтирует существующую файловую систему без повторного форматирования.
Перед началом
Перед началом убедитесь в следующем:
- В управляющем кластере установлен HCS provider версии
v1.0.1или более поздней. - Рабочий кластер находится в здоровом состоянии, и все узлы имеют статус
Ready. - Для назначения фиксированных hostnames и IP addresses в кластере используется
HCSMachineConfigPool. - Сохраняемые диски имеют непустые пути монтирования в старом
HCSMachineTemplate.spec.template.spec.dataVolumes[]. - Соответствующие стратегии rollout используют
maxSurge: 0. - У вас есть окно обслуживания для поочередной замены узлов.
- У вас есть проверенная резервная копия etcd и конфигурации платформы.
Не объявляйте один и тот же путь монтирования одновременно в HCSMachineTemplate.spec.template.spec.dataVolumes[] и в HCSMachineConfigPool.spec.configs[].persistentDisks[]. Provider отклоняет такую конфигурацию, чтобы предотвратить потерю данных.
Проверка текущей схемы дисков
Определите объекты управляющего кластера, которые контролируют кластер:
Проверьте текущие machine templates:
Зафиксируйте каждую запись dataVolumes[], которую требуется сохранить. Для каждого диска запишите:
Определите, какие диски нужно сохранить
Переносите в модель, управляемую пулом, только те диски, которые должны переживать замену узла.
Используйте следующую схему разделения:
Для автоматической миграции provider забирает существующий том данных, сопоставляя mountPath. Если у сохраняемого диска нет mountPath, автоматический захват недоступен. Используйте поддерживаемую эксплуатационную процедуру, чтобы записать существующий EVS volumeID в status.persistentDiskStatus[], либо перенесите данные на диск с объявленным путем монтирования до запуска замены.
Создайте новые Machine Templates
Создайте новые ресурсы HCSMachineTemplate для заменяющих узлов. Не редактируйте существующие шаблоны на месте.
Скопируйте текущий шаблон:
Отредактируйте new-template.yaml:
- Установите
metadata.nameв новое имя шаблона. - Удалите метаданные, создаваемые сервером, такие как
resourceVersion,uid,creationTimestamp,managedFieldsиstatus. - Оставьте без значений поля runtime identity, включая
spec.template.spec.providerIDиspec.template.spec.serverId. - Удалите сохраняемые пути из
spec.template.spec.dataVolumes[]. - Оставьте только временные тома данных, которые могут быть созданы заново с каждым ECS.
- Обновите
spec.template.spec.imageNameи другие поля обновления, если эта миграция выполняется как часть обновления Kubernetes или образа.
Например, после переноса /var/cpaas в пул шаблон сохраняет только временные диски:
Примените новый шаблон:
Подготовьте стратегию rollout
Перед обновлением пула убедитесь в стратегии rollout для каждого контроллера, который будет использовать обновленный пул. Пропустите команду MachineDeployment, если в этой миграции в кластере нет пула worker-узлов.
Каждое возвращаемое значение должно быть 0 для пулов, которые используют постоянные диски.
Если хотя бы одно возвращаемое значение не равно 0, исправьте соответствующую стратегию rollout перед обновлением пула:
Обновите Machine Configuration Pool
Отредактируйте HCSMachineConfigPool, на который ссылаются старый и новый HCSMachineTemplate.spec.template.spec.configPoolRef.name.
Добавьте одну запись persistentDisks[] под каждым hostname, для которого диск должен сохраняться:
При редактировании пула используйте следующие правила:
- Начинайте
slotс0для каждого hostname. - Для каждого hostname сохраняйте слоты непрерывными.
- Установите
size,type,mountPathиformatв соответствии со старым томом данных, который требуется захватить. - Добавьте
cluster.x-k8s.io/cluster-name: <cluster-name>, если такого параметра в пуле еще нет. - Используйте одинаковое объявление постоянного диска для всех узлов, которые должны сохранять один и тот же путь.
Применяйте обновленный пул только после того, как существует заменяющий шаблон, из dataVolumes[] удалены сохраняемые пути, а стратегия rollout использует maxSurge: 0:
Запустите пошаговую замену
После применения обновленного пула немедленно укажите в том же окне обслуживания control plane или worker controller на новый шаблон. Не оставляйте пул, который объявляет постоянные диски /var/cpaas, если активный rollout по-прежнему указывает на старый шаблон, где /var/cpaas также объявлен в dataVolumes[].
Для миграции control plane укажите KubeadmControlPlane на новый шаблон:
Для миграции worker-узлов укажите MachineDeployment на новый шаблон:
Если ссылка на шаблон уже указывает на целевой шаблон и вам нужно принудительно выполнить поочередную замену, задайте rolloutAfter:
Проверьте миграцию
Наблюдайте за пошаговой заменой:
Проверьте состояние пула:
Каждый перенесенный диск отображается в status.persistentDiskStatus:
Убедитесь, что заменяющий узел может прочитать данные из сохраненного пути:
Для более надежной проверки сохранения данных запишите маркер до rollout и прочитайте его после того, как заменяющий узел станет Ready:
Обработка сбоев
Используйте состояние пула, чтобы определить следующее действие, когда диск переходит в phase: Error.
Не удаляйте старый HCSMachine и не выполняйте принудительное удаление finalizers, пока постоянный диск находится в неразрешенном состоянии ошибки. Provider блокирует удаление, чтобы не удалить старый ECS до того, как он сможет безопасно забрать и отключить диск.
Ограничения и примечания по восстановлению
- Эта процедура применяется к кластерам, которые используют
HCSMachineConfigPoolс фиксированными hostname и IP addresses. - Постоянные диски, управляемые пулом, требуют поочередной замены. Для каждого rollout control plane или worker, использующего постоянные диски, сохраняйте
maxSurge: 0. - Provider автоматически забирает существующие тома данных, сопоставляя непустой
mountPath. dataVolumes[], которые не объявлены вpersistentDisks[], остаются принадлежащими шаблону и могут быть удалены вместе со старым ECS.- После того как provider примет запись постоянного диска, считайте
slot,size,type,formatиmountPathнеизменяемыми. mountOptionsможно изменять, но изменение вступает в силу только на заменяющей VM.- Кластеры HCS с одним control-plane являются топологиями только для создания в описанном рабочем процессе обновления. Не используйте эту процедуру пошаговой миграции для кластера с одним control-plane.