Миграция существующих кластеров Huawei DCS на постоянные диски, управляемые пулом
Используйте это руководство, если вы обновляете существующий кластер Huawei DCS со старой схемы template-disk до текущей модели постоянных дисков, управляемых пулом.
В DCS provider v1.0.16 или более поздней версии эта миграция выполняется на основе YAML, поскольку DCSIpHostnamePool.spec.pool[].persistentDisk не доступен в веб-интерфейсе.
Версия
Используйте эту процедуру, если кластер работает под управлением ACP v4.2.1 или более поздней версии, а целевая версия DCS provider — v1.0.16 или более поздняя.
В настоящее время эта процедура предполагает все перечисленное ниже:
- Целевая среда использует реализацию DCS controller, которая поддерживает постоянные диски, управляемые пулом.
- Шаблоны DCS VM имеют версию
4.2.1или более позднюю. - Guest tools (
vmtools) работают внутри guest OS, чтобы можно было безопасно завершить работу и отсоединить диск.
Содержание
ОбзорПеред началомПроверьте текущую схему дисковОпределите, какие диски можно захватитьПример расчетаОбновитеDCSMachineTemplateОбновите DCSIpHostnamePoolЗапустите rolling upgradeПроверьте захват, отсоединение, преобразование и повторное подключениеОграничения и заметки по восстановлениюСвязанные темыОбзор
В старых кластерах DCS повторно используемые data disks создавались через DCSMachineTemplate. Такая схема не предоставляет controller достаточно информации, чтобы безопасно сохранить диски во время замены через delete-recreate.
В текущей модели диски, сохраняемые при обновлении, переносятся в DCSIpHostnamePool.spec.pool[].persistentDisk. Каждый диск привязывается к идентичности (ip, slot). Во время rolling replacement controller:
- Захватывает существующий диск у старой VM.
- Безопасно останавливает старую VM.
- Отсоединяет диск.
- При необходимости преобразует stock volumes в независимые persistent volumes.
- Удаляет старую VM.
- Повторно подключает диск к VM-замене.
- Загружает VM-замену, которая монтирует существующую файловую систему без повторного форматирования.
Это также документированная модель для обязательного платформой диска /var/cpaas.
Перед началом
Перед началом убедитесь в следующем:
- Кластер исправен и в настоящее время стабилен.
- Поскольку для pool-managed persistent disks требуется поочередная замена, соответствующие стратегии обновления control plane и worker используют
maxSurge: 0. - Вы можете определить текущие значения
sequenceNumдля дисков на старых VM через DCS UI или запросив сведения о VM через DCS API. - Вы знаете, какие диски необходимо сохранить, а какие по-прежнему можно пересоздать вместе с VM.
- Целевой
DCSIpHostnamePoolуже существует и сопоставляет каждый узел с фиксированным IP slot.
Проверьте текущую схему дисков
Сначала определите объекты management-cluster и DCS VM, которая обслуживает каждый узел:
Для любого DCSMachine, который вы планируете мигрировать, изучите текущие сведения о VM и зафиксируйте sequenceNum диска, размер, datastore и тип PCI для каждого диска, который вы хотите сохранить.
Эти сведения можно получить из следующих источников:
- DCS platform UI.
- Ваших существующих operational tools, которые оборачивают
QueryVmInfo. - Прямого API-инспектирования, если в вашей среде уже доступен такой сценарий.
Для каждого сохраняемого диска нужны следующие значения:
- Старый
sequenceNum quantityGBdatastoreNameилиdatastoreClusterNamepathformatpciType
Определите, какие диски можно захватить
Существующие кластеры могут захватывать только те диски, которые находятся в хвостовой непрерывной области старой схемы дисков VM.
Используйте следующую формулу:
Используйте следующие константы при применении формулы:
systemDiskCount = 1newTemplateDataDiskCount= количество не системных дисков, которые остаются в новомDCSMachineTemplate
Вычисленный slot должен:
- Быть больше или равен
0 - Быть уникальным в пределах одной записи IP
Если диск не находится в хвостовой непрерывной области, вам нужно либо:
- Переместить в список pool-managed persistent-disk также диски между ним и хвостом старого template, либо
- Принять, что незахватываемый диск все равно будет потерян вместе со старой VM
Пример расчета
Предположим, что порядок дисков в старом template такой:
Если новый template оставляет только system + /var/lib/kubelet + /var/lib/containerd, то newTemplateDataDiskCount = 2.
Обновите DCSMachineTemplate
Отредактируйте текущий DCSMachineTemplate на месте так, чтобы он больше не объявлял диски, которые вы хотите сохранить.
-
Экспортируйте текущий template:
-
Обновите экспортированный manifest:
- Оставьте system disk.
- Оставьте только те template-local диски, которые по-прежнему должны пересоздаваться вместе с VM.
- Удалите все диски, которые вы хотите сохранить через IP pool.
- Если целевой диск можно захватить только при переносе и хвостовых дисков, удалите эти хвостовые диски из template тоже.
- Сохраните исходный
metadata.name, потому что эта миграция обновляет текущий используемый template на месте. - Удалите временные поля metadata, такие как
resourceVersion,uid,creationTimestampиmanagedFields.
-
Примените обновленный template:
Обновите DCSIpHostnamePool
Добавьте записи persistentDisk в соответствующий IP slot для каждого сохраненного диска.
Spec взаимодействует с атрибутами живого диска тремя способами:
Строгое соответствие при захвате. Несоответствие любого из этих полей приводит к неудачному захвату и устанавливает phase=Error с lastError. Controller повторяет попытку с медленным интервалом, пока spec не будет исправлен:
quantityGB— должен точно совпадать с фактическим размером дискаdatastoreNameилиdatastoreClusterName— должно указывать на тот же storage target, что и у фактического дискаpciType— должен совпадать с фактическим типом PCI диска. Если поле не указано, provider использует значение по умолчаниюVIRTIO; перед тем как опускать это поле, проверьте фактический тип PCI диска, потому что диск с типом, отличным отVIRTIO, может не пройти строгое соответствие при захвате
isThin используется только при создании. Оно отправляется только тогда, когда provider создает новый DCS persistent volume. Во время захвата существующего тома оно не сравнивается и не преобразует существующие тома.
Файловая система (влияет на инициализацию на стороне guest, а не на проверку захвата):
format— используется только при инициализации нового диска. Если на фактическом диске уже есть файловая система, существующий формат сохраняется иmkfsпропускается.
Сторона guest (применяется только на VM-замене, не входит в проверку захвата):
path— путь монтирования внутри guestmountOptions— параметры монтированияoptions— параметрыmkfs, применяемые только при первом форматировании
Для обязательного платформой диска /var/cpaas перенесите его в layout, управляемый пулом, в рамках этой миграции.
Установите slot в значение, вычисленное в предыдущем разделе. Не используйте одно и то же фиксированное примерное значение для разных схем дисков.
Пример:
Примените обновление пула:
Запустите rolling upgrade
Перед запуском замены:
- Убедитесь, что
KubeadmControlPlane.spec.rolloutStrategy.rollingUpdate.maxSurge = 0 - Убедитесь, что у каждого
MachineDeployment.spec.strategy.rollingUpdate.maxSurge = 0
Эти параметры являются предварительными условиями для миграции, а также для последующего повторного использования pool-managed persistent disks во время upgrade.
Затем запустите rollout:
Проверьте захват, отсоединение, преобразование и повторное подключение
Наблюдайте за ресурсами management-cluster во время rollout:
Проверьте status пула, чтобы убедиться, что controller захватил диски и отслеживает их:
Во время перехода каждая запись отображается в status.persistentDiskStatus. Стабильные фазы, за которыми следует следить:
phase: Attached, пока старая VM по-прежнему владеет дискомphase: Availableпосле отсоединения диска (и преобразования из stock volume в независимый persistent volume, если это требуется)phase: Attachedснова после того, как VM-замена повторно подключит диск
Промежуточные фазы (Attaching, Detaching) могут кратковременно появляться во время соответствующих операций; Deleting появляется, когда диск удаляется окончательно, например во время очистки пула или кластера. Полный набор фаз: Creating, Available, Attaching, Attached, Detaching, Deleting, Error.
Если диск переходит в phase: Error, перед повторной попыткой проверьте lastError.
Ограничения и заметки по восстановлению
- В сценарии миграции существующего кластера можно захватывать только хвостовые непрерывные диски.
- Controller защищает только те диски, которые объявлены в
persistentDisk. Любой необъявленный диск по-прежнему следует жизненному циклу VM и может быть удален вместе со старой VM. - Эта миграция изменяет модель владения сохраненными дисками. Не определяйте один и тот же диск одновременно в
DCSMachineTemplateиDCSIpHostnamePool. - Если вам нужно сохранить
/var/cpaas, перенесите его в IP pool в рамках этой миграции, а не оставляйте в template. - Этот runbook применяется к кластерам на ACP
v4.2.1или более поздней версии, которые переходят на DCS providerv1.0.16или более поздней версии.