Управление узлами в Huawei Cloud Stack
В этом документе описано, как управлять рабочими узлами с помощью ресурсов Cluster API Machine на платформе Huawei Cloud Stack.
Содержание
Предварительные требованияОбзорРазвертывание рабочих узловШаг 1: Настройка пула конфигурации машинУправляемые пулом постоянные диски для рабочих узловШаг 2: Настройка шаблона машиныШаг 3: Настройка шаблона bootstrapШаг 4: Настройка Machine DeploymentОперации управления узламиМасштабирование рабочих узловДобавление рабочих узловУдаление рабочих узловОбновление инфраструктуры машинОбновление версии KubernetesПроверкаУстранение неполадокПросмотр журналов контроллераРаспространенные проблемыПредварительные требования
Важные предварительные требования
- Перед выполнением операций с узлами необходимо развернуть плоскость управления. Инструкции по настройке см. в Create Cluster.
- Убедитесь, что у вас есть надлежащий доступ к платформе HCS и необходимые разрешения.
При использовании YAML-примеров в этом документе заменяйте только значения, заключенные в <>, на значения, соответствующие вашей среде. Остальные поля сохраняйте без изменений, если только политика вашего кластера не требует другого значения.
Обзор
Рабочие узлы управляются через ресурсы Cluster API Machine, что обеспечивает декларативное и автоматизированное управление жизненным циклом узлов. Процесс развертывания включает:
- Пул конфигурации машин — параметры сети для рабочих узлов
- Шаблон машины — характеристики ВМ
- Конфигурация bootstrap — параметры инициализации узла
- Развертывание машин — оркестрация создания и управления узлами
Развертывание рабочих узлов
Перед подготовкой YAML для рабочих узлов выполните контрольный список входных данных HCS в Infrastructure Resources for Huawei Cloud Stack. В частности, перечислите все подсети рабочих узлов в HCSCluster.spec.network.subnets, выделите IP-адреса рабочих узлов из заранее подготовленных свободных диапазонов IP и соберите значения API flavorName и availabilityZone, распознаваемые провайдером. Если вы добавляете новую подсеть рабочих узлов в существующий кластер в состоянии Ready, изменяйте HCSCluster.spec.network.subnets, указывая полный объект подсети, а не только имя подсети.
Шаг 1: Настройка пула конфигурации машин
HCSMachineConfigPool определяет сетевую конфигурацию и любые управляемые пулом постоянные диски для ВМ рабочих узлов. Перед развертыванием необходимо спланировать и настроить IP-адреса, имена хостов, слоты постоянных дисков и другие параметры.
Требование к размеру пула
Пул должен содержать как минимум столько записей, сколько рабочих узлов вы планируете развернуть. Недостаточное число записей не позволит выполнить развертывание узлов.
Используйте один селектор подсети для каждой записи networks[]. Для новых манифестов задавайте либо subnetName, либо subnetId, но не оба сразу. В существующих манифестах можно оставить устаревшее поле subenetName; если при обновлении такого манифеста вы также добавляете subnetName, его значение должно в точности совпадать со значением subenetName. Не указывайте конфликтующие значения в subenetName, subnetName и subnetId.
Если вы используете subnetName для рабочих узлов, добавьте то же имя подсети в родительский список HCSCluster.spec.network.subnets до создания или масштабирования пула рабочих узлов. Для существующего кластера в состоянии Ready добавляйте полный объект подсети, включая идентификатор подсети, а не только ее имя.
*Для новых манифестов задавайте либо subnetName, либо subnetId. В существующих манифестах можно продолжать использовать subenetName, а subnetName можно добавлять только если оба поля используют одно и то же значение. Не задавайте конфликтующие значения селектора подсети.
Поля постоянного диска обязательны, если указан persistentDisks.
Используйте persistentDisks[] для локального состояния узла, которое должно сохраняться при замене рабочих узлов. Не объявляйте тот же путь монтирования в HCSMachineTemplate.spec.template.spec.dataVolumes[].
Примечание: В схеме CRD поля subnetName, subenetName и subnetId указаны как необязательные, и допустимые комбинации между ними не выражены. При создании манифестов следуйте приведенным выше правилам уровня провайдера.
Примечание: networks[] может содержать более одной записи, если рабочему узлу требуется несколько NIC. Текущий провайдер использует каждую запись только для подключения NIC с селектором подсети и статическим IP-адресом. Он не поддерживает объявления роли для каждого NIC, выбор шлюза по умолчанию, статические маршруты, метрики маршрутов или параметры DNS для каждого NIC.
Управляемые пулом постоянные диски для рабочих узлов
Объявляйте диски рабочих узлов, которые должны сохраняться при замене, в соответствующей записи HCSMachineConfigPool.spec.configs[].persistentDisks[]. Используйте эту модель для /var/cpaas и для любого другого локального состояния узла, которое необходимо сохранять при поэтапной замене.
- Оставляйте
HCSMachineTemplate.spec.template.spec.dataVolumes[]для временных дисков, которые могут пересоздаваться вместе с каждой ECS. - Для каждого имени хоста сохраняйте уникальные и непрерывные слоты, начиная с
0. Провайдер использует(hostname, slot)как идентификатор постоянного диска. - Рассматривайте
slot,size,type,formatиmountPathкак неизменяемые после того, как провайдер принял запись. - Вы можете обновлять
mountOptions. Изменение вступит в силу после замены рабочего узла. - Вы можете добавлять новые записи
persistentDisks[]. Провайдер создает или выделяет диск EVS, но не подключает его на лету к работающей ECS. Запустите поэтапную замену сMachineDeployment.spec.strategy.rollingUpdate.maxSurge: 0, прежде чем ожидать, что новый диск будет отформатирован и смонтирован внутри гостевой ОС.
Чтобы проверить состояние постоянных дисков во время операций с рабочими узлами, проверьте состояние пула:
Шаг 2: Настройка шаблона машины
HCSMachineTemplate определяет характеристики ВМ для рабочих узлов.
Настраивайте рабочие узлы с системным томом и временными томами данных для путей, которые могут пересоздаваться вместе с каждой ECS, например /var/lib/kubelet и /var/lib/containerd. Помещайте /var/cpaas в HCSMachineConfigPool.spec.configs[].persistentDisks[], если состояние платформы должно сохраняться при замене рабочего узла.
При подготовке шаблона рабочего узла используйте значения API flavorName и availabilityZone, распознаваемые провайдером. Эти значения не являются отображаемыми именами в интерфейсе tenant.
*Обязательно, если указан dataVolumes.
dataVolumes[] пересоздаются вместе с ECS. Не используйте их для /var/cpaas или любого другого пути, который должен сохраняться при поэтапной замене.
Примечание: Не задавайте в манифестах HCSMachineTemplate такие поля идентичности времени выполнения, как providerID или serverId. Эти значения назначает провайдер при создании экземпляров HCS.
Примечание: Администраторы tenant не могут получить значения flavorName и availabilityZone, распознаваемые провайдером, из интерфейса HCS. Получите точные значения у администратора HCS перед применением манифеста.
Шаг 3: Настройка шаблона bootstrap
KubeadmConfigTemplate определяет конфигурацию bootstrap для рабочих узлов.
Контроллер HCS внедряет /etc/kubernetes/pki/kubelet.crt и /etc/kubernetes/pki/kubelet.key при разрешении данных cloud-init для рабочих узлов. Патч kubelet выше настраивает kubelet на использование этих предоставленных контроллером файлов сертификатов.
Шаг 4: Настройка Machine Deployment
MachineDeployment координирует создание и управление рабочими узлами.
Операции управления узлами
В этом разделе рассматриваются распространенные операционные задачи по управлению рабочими узлами.
Масштабирование рабочих узлов
Масштабирование рабочих узлов позволяет изменять емкость кластера в зависимости от требований рабочей нагрузки.
Добавление рабочих узлов
Увеличьте количество рабочих узлов, чтобы справиться с возросшей нагрузкой.
Процедура:
-
Проверка текущего состояния узлов
-
Расширение пула конфигурации
Добавьте в пул новые конфигурации машин для дополнительных узлов. Если новым рабочим узлам требуется сохраняемое локальное состояние, например
/var/cpaas, включите соответствующие записиpersistentDisks[]в каждую новую конфигурацию.Измените пул, добавив новые записи IP, затем примените:
При редактировании пула оставляйте все существующие записи
configs[]и принятые записиpersistentDisks[]без изменений, если только вы намеренно не добавляете новый слот диска. -
Увеличение масштаба MachineDeployment
Измените поле
replicasна требуемое количество узлов: -
Мониторинг процесса масштабирования
Удаление рабочих узлов
Уменьшите количество рабочих узлов, чтобы снизить емкость кластера.
Предупреждение о потере данных
При масштабировании вниз удаляются рабочие узлы и их экземпляры ECS. Тома dataVolumes[], принадлежащие шаблону, не сохраняются. Управляемые пулом постоянные диски, объявленные в HCSMachineConfigPool.spec.configs[].persistentDisks[], остаются отслеживаемыми пулом и могут быть повторно использованы, пока соответствующая запись имени хоста остается в пуле. Убедитесь, что:
- рабочие нагрузки могут переносить потерю узла благодаря корректной репликации
- критически важные данные не хранятся только на удаляемых узлах
- приложения спроектированы для горизонтального масштабирования
Процедура:
-
Уменьшение масштаба MachineDeployment
-
Мониторинг процесса удаления
Контроллер Cluster API выполнит следующие действия:
- выполнит drain выбранных узлов (по возможности выведет pods)
- удалит базовые ВМ с платформы HCS
- удалит ресурсы machine
Обновление инфраструктуры машин
Чтобы обновить характеристики рабочей машины (CPU, память, диск, образ ВМ), выполните следующие шаги:
Примечание: Обновления инфраструктуры рабочих узлов основаны на поэтапной замене Cluster API. Тома HCS dataVolumes[] не сохраняются при замене. Чтобы сохранить локальное состояние узла, например /var/cpaas, объявите его в HCSMachineConfigPool.spec.configs[].persistentDisks[] до начала rollout и оставьте MachineDeployment.spec.strategy.rollingUpdate.maxSurge: 0.
-
Создание нового шаблона машины
Скопируйте существующий
HCSMachineTemplateи измените необходимые значения:imageName— образ ВМflavorName— тип экземпляраrootVolume.size— размер системного дискаdataVolumes— конфигурации временных дисков данных
Если вам нужно добавить новый управляемый пулом постоянный диск, сначала добавьте его в рабочий
HCSMachineConfigPool. Провайдер создает или выделяет диск EVS, но работающая ECS не смонтирует его, пока эта поэтапная замена не создаст заменяющий рабочий узел.Затем отредактируйте
new-template.yamlперед применением:- Измените
metadata.nameна<new-template> - Не задавайте поля идентичности времени выполнения, включая
spec.template.spec.providerIDиspec.template.spec.serverId - Удалите поля, создаваемые сервером, такие как:
metadata.resourceVersionmetadata.uidmetadata.creationTimestampmetadata.managedFieldsstatus
-
Развертывание нового шаблона
-
Обновление Machine Deployment
Измените
MachineDeployment, чтобы он ссылался на новый шаблон: -
Мониторинг поэтапного обновления
Обновление версии Kubernetes
Обновление версии Kubernetes требует согласованных изменений как в MachineDeployment, так и в базовом шаблоне ВМ.
Примечание: Убедитесь, что версия Kubernetes в шаблоне ВМ совпадает с версией, указанной в MachineDeployment. Несоответствие версий приведет к сбоям присоединения узлов.
Процедура:
-
Обновление шаблона машины
Создайте новый
HCSMachineTemplateс обновленнымimageName, поддерживающим целевую версию Kubernetes. -
Обновление MachineDeployment
Измените следующие поля:
-
spec.template.spec.version— целевая версия Kubernetes -
spec.template.spec.infrastructureRef.name— имя нового шаблона машины
-
-
Мониторинг обновления
Убедитесь, что новые узлы присоединяются к кластеру с правильной версией Kubernetes:
Проверка
После развертывания рабочих узлов проверьте развертывание:
Устранение неполадок
Просмотр журналов контроллера
Распространенные проблемы
Узел не может присоединиться к кластеру
- Проверьте, что шаблон ВМ соответствует версии Kubernetes
- Проверьте сетевое подключение между узлами
- Убедитесь, что в пуле конфигурации есть доступные записи
Machine зависает в состоянии provisioning
- Проверьте доступность ресурсов на платформе HCS
- Проверьте учетные данные и разрешения
- Просмотрите журналы контроллера на наличие сообщений об ошибках