Управление узлами в Huawei Cloud Stack
В этом документе описано, как управлять рабочими узлами с помощью ресурсов Cluster API Machine на платформе Huawei Cloud Stack.
Содержание
Предварительные требованияОбзорРазвертывание рабочих узловШаг 1: Настройка Machine Configuration PoolШаг 2: Настройка Machine TemplateШаг 3: Настройка Bootstrap TemplateШаг 4: Настройка Machine DeploymentОперации управления узламиМасштабирование рабочих узловДобавление рабочих узловУдаление рабочих узловОбновление инфраструктуры машинОбновление версии KubernetesПроверкаУстранение неполадокПросмотр логов контроллераРаспространенные проблемыПредварительные требования
Важные предварительные требования
- Перед выполнением операций с узлами должен быть развернут control plane. Инструкции по настройке см. в Create Cluster.
- Убедитесь, что у вас есть надлежащий доступ к платформе HCS и необходимые разрешения.
При использовании примеров YAML в этом документе заменяйте только значения, заключенные в <>, на значения, соответствующие вашей среде. Остальные поля сохраняйте без изменений, если только политика вашего кластера не требует другого значения.
Обзор
Рабочие узлы управляются через ресурсы Cluster API Machine, что обеспечивает декларативное и автоматизированное управление жизненным циклом узлов. Процесс развертывания включает:
- Пул конфигурации машин - параметры сети для рабочих узлов
- Шаблон машины - спецификации VM
- Конфигурация bootstrap - параметры инициализации узла
- Развертывание машин - оркестрация создания и управления узлами
Развертывание рабочих узлов
Перед подготовкой YAML для рабочих узлов завершите контрольный список входных данных HCS в Infrastructure Resources for Huawei Cloud Stack. В частности, укажите каждый worker subnet в HCSCluster.spec.network.subnets, выделите IP-адреса для рабочих узлов из заранее спланированных свободных диапазонов IP и соберите значения API flavorName и availabilityZone, распознаваемые провайдером. Если вы добавляете новый worker subnet в существующий кластер в состоянии Ready, обновите HCSCluster.spec.network.subnets, указав полный объект subnet, а не только имя subnet.
Шаг 1: Настройка Machine Configuration Pool
HCSMachineConfigPool определяет сетевую конфигурацию для VM рабочих узлов. Перед развертыванием необходимо спланировать и настроить IP-адреса, имена хостов и другие сетевые параметры.
Требование к размеру пула
Пул должен содержать как минимум столько записей, сколько рабочих узлов вы планируете развернуть. Недостаточное количество записей не позволит развернуть узлы.
Для каждой записи networks[] используйте один selector subnet. Для новых манифестов задавайте либо subnetName, либо subnetId, но не оба сразу. В существующих манифестах можно оставить устаревшее поле subenetName; если при обновлении такого манифеста вы также добавляете subnetName, его значение должно в точности совпадать со значением subenetName. Не задавайте конфликтующие значения для subenetName, subnetName и subnetId.
Если вы используете subnetName для рабочих узлов, добавьте то же имя subnet в родительский список HCSCluster.spec.network.subnets до создания или масштабирования worker pool. Для существующего кластера в состоянии Ready добавьте полный объект subnet, включая ID subnet, а не только имя subnet.
*Для новых манифестов задавайте либо subnetName, либо subnetId. В существующих манифестах можно по-прежнему использовать subenetName, а subnetName можно добавлять только в том случае, если оба поля имеют одинаковое значение. Не задавайте конфликтующие значения selector subnet.
Примечание: В схеме CRD поля subnetName, subenetName и subnetId указаны как необязательные, и допустимые комбинации этих полей не выражены. При создании манифестов соблюдайте описанные выше правила уровня провайдера.
Примечание: networks[] может содержать более одной записи, если рабочему узлу требуется несколько NIC. Текущий провайдер использует каждую запись только для подключения NIC с selector subnet и статическим IP. Он не поддерживает объявление ролей на уровне NIC, выбор default gateway, статические маршруты, route metrics или настройки DNS для отдельных NIC.
Шаг 2: Настройка Machine Template
HCSMachineTemplate определяет спецификации VM для рабочих узлов.
Настройте рабочие узлы с системным томом и data volumes для /var/lib/kubelet, /var/lib/containerd и /var/cpaas. Вы можете добавить дополнительные data volumes, но сохраните эти пути, чтобы bootstrap узла и компоненты платформы могли использовать ожидаемые каталоги runtime. Эти пути не означают, что data volumes будут сохраняться при замене узлов.
При подготовке шаблона для рабочих узлов используйте значения API flavorName и availabilityZone, распознаваемые провайдером. Эти значения не являются отображаемыми именами в UI tenant.
*Обязательно, если указан dataVolumes.
Примечание: Не задавайте в манифестах HCSMachineTemplate поля идентичности runtime, такие как providerID или serverId. Провайдер назначает эти значения при создании экземпляров HCS.
Примечание: Администраторы tenant не могут получить значения flavorName и availabilityZone, распознаваемые провайдером, из UI HCS. Получите точные значения у администратора HCS перед применением манифеста.
Шаг 3: Настройка Bootstrap Template
KubeadmConfigTemplate определяет конфигурацию bootstrap для рабочих узлов.
Контроллер HCS внедряет /etc/kubernetes/pki/kubelet.crt и /etc/kubernetes/pki/kubelet.key при обработке worker cloud-init data. Приведенный выше kubelet patch настраивает kubelet на использование этих сертификатов, предоставляемых контроллером.
Шаг 4: Настройка Machine Deployment
MachineDeployment оркестрирует создание и управление рабочими узлами.
Операции управления узлами
В этом разделе описаны распространенные операционные задачи по управлению рабочими узлами.
Масштабирование рабочих узлов
Масштабирование рабочих узлов позволяет изменять емкость кластера в зависимости от нагрузки.
Добавление рабочих узлов
Увеличьте количество рабочих узлов, чтобы обработать возросшую нагрузку.
Порядок действий:
-
Проверьте текущее состояние узлов
-
Расширьте пул конфигурации
Добавьте в пул новые IP-конфигурации для дополнительных узлов.
Измените пул, добавив новые записи IP, затем примените изменения:
-
Увеличьте масштаб MachineDeployment
Обновите поле
replicasдо нужного количества узлов: -
Отслеживайте ход масштабирования
Удаление рабочих узлов
Уменьшите количество рабочих узлов, чтобы сократить емкость кластера.
Предупреждение о потере данных
При уменьшении масштаба узлы и связанные с ними диски удаляются. Убедитесь, что:
- Рабочие нагрузки могут пережить потерю узла за счет надлежащей репликации
- На удаляемых узлах не хранится критически важные данные в единственном экземпляре
- Приложения спроектированы для горизонтального масштабирования
Порядок действий:
-
Уменьшите масштаб MachineDeployment
-
Отслеживайте ход удаления
Контроллер Cluster API выполнит:
- Drain выбранных узлов (по возможности evict pods)
- Удаление базовых VM с платформы HCS
- Удаление ресурсов machine
Обновление инфраструктуры машин
Чтобы обновить спецификации worker machine (CPU, memory, disk, VM image), выполните следующие действия:
Примечание: Обновления worker infrastructure основаны на поэтапной замене ресурсов Cluster API. Текущий провайдер HCS не сохраняет и не подключает повторно data disk при замене узла. Когда рабочий узел заменяется, старая VM и подключенные к ней тома могут быть удалены вместе. Перенесите stateful data во внешнее постоянное хранилище или завершите резервное копирование и миграцию до начала обновления.
-
Создайте новый Machine Template
Скопируйте существующий
HCSMachineTemplateи измените необходимые значения:-
imageName- образ VM -
flavorName- тип экземпляра -
rootVolume.size- размер системного диска -
dataVolumes- конфигурации data disk
Затем отредактируйте
new-template.yamlперед применением:- Измените
metadata.nameна<new-template> - Не задавайте поля идентичности runtime, включая
spec.template.spec.providerIDиspec.template.spec.serverId - Удалите поля, сгенерированные сервером, такие как:
metadata.resourceVersionmetadata.uidmetadata.creationTimestampmetadata.managedFieldsstatus
-
-
Разверните новый шаблон
-
Обновите Machine Deployment
Измените
MachineDeployment, чтобы он ссылался на новый шаблон: -
Отслеживайте rolling update
Обновление версии Kubernetes
Обновление версии Kubernetes требует согласованных изменений как в MachineDeployment, так и в базовом шаблоне VM.
Примечание: Убедитесь, что версия Kubernetes в шаблоне VM совпадает с версией, указанной в MachineDeployment. Несовпадение версий приведет к ошибкам присоединения узла.
Порядок действий:
-
Обновите Machine Template
Создайте новый
HCSMachineTemplateс обновленнымimageName, который поддерживает целевую версию Kubernetes. -
Обновите MachineDeployment
Измените следующие поля:
-
spec.template.spec.version- целевая версия Kubernetes -
spec.template.spec.infrastructureRef.name- имя нового шаблона машины
-
-
Отслеживайте обновление
Убедитесь, что новые узлы присоединяются к кластеру с правильной версией Kubernetes:
Проверка
После развертывания рабочих узлов проверьте развертывание:
Устранение неполадок
Просмотр логов контроллера
Распространенные проблемы
Узел не может присоединиться к кластеру
- Убедитесь, что шаблон VM соответствует версии Kubernetes
- Проверьте сетевую связность между узлами
- Убедитесь, что в пуле конфигурации есть доступные записи
Machine застрял в состоянии provisioning
- Проверьте доступность ресурсов на платформе HCS
- Убедитесь в корректности учетных данных и разрешений
- Проверьте сообщения об ошибках в логах контроллера