• Русский
  • Обновление кластеров в Huawei Cloud Stack

    В этом руководстве описано, как обновлять кластеры Kubernetes в Huawei Cloud Stack с минимальным временем простоя, сохраняя стабильность и целостность данных.

    Обзор

    Обновление кластеров на HCS включает несколько компонентов и выполняется по структурированному процессу, чтобы обеспечить надежность системы:

    • Обновление control plane: обновление компонентов control plane Kubernetes и базовой инфраструктуры
    • Обновление worker nodes: обновление worker nodes с новыми образами машин и версиями Kubernetes
    • Обновление инфраструктуры: изменение характеристик виртуальных машин, хранилища и сетевых конфигураций

    Cluster API оркестрирует декларативные поэтапные обновления со встроенными механизмами безопасности.

    INFO

    Предварительные требования

    Перед началом убедитесь, что:

    • control plane доступен
    • все узлы в состоянии Ready

    Для первоначального развертывания см. руководство Create Cluster.

    WARNING

    Кластеры с одним control plane

    Процесс обновления, описанный в этом документе, применяется к кластерам HCS с высокодоступным control plane. Кластеры HCS с одним control plane поддерживаются для создания, но не поддерживаются для обновления через этот процесс.

    WARNING

    Потеря данных во время обновлений

    Обновления используют механизм поэтапной замены Cluster API. Текущий провайдер HCS не сохраняет и не переподключает диски данных при замене узла. Когда узел заменяется, старая VM и прикрепленные к ней тома могут быть удалены вместе. Не рассматривайте локальные данные узла на дисках данных HCS как сохраняемое состояние. Переместите состояние в внешнее постоянное хранилище или выполните резервное копирование и миграцию перед началом обновления.

    Обновление control plane

    Обновление control plane включает обновление Kubernetes API server, etcd, scheduler и controller manager, а также базовой инфраструктуры VM.

    Для control plane HCS, использующих фиксированный по размеру HCSMachineConfigPool, во время обновления сохраняйте KubeadmControlPlane.spec.rolloutStrategy.rollingUpdate.maxSurge: 0. Этот стандартный путь уменьшения и последующего увеличения обычно не требует дополнительных IP-адресов control plane. Добавляйте дополнительные записи hostname и static IP в пул control plane только если вы планируете увеличить число реплик control plane или намеренно задать maxSurge больше 0.

    Обновление образа инфраструктуры

    Обновление базовых образов машин для узлов control plane обеспечивает исправления безопасности, улучшение производительности и обновление системных компонентов.

    Порядок действий

    1. Создайте обновленный шаблон машины

      Скопируйте существующий HCSMachineTemplate, на который ссылается KubeadmControlPlane, и измените требуемые параметры:

      kubectl get hcsmachinetemplate <current-template-name> -n cpaas-system -o yaml > new-cp-template.yaml
    2. Измените параметры шаблона

      Измените новый шаблон:

      • Установите metadata.name в значение <new-template-name>
      • Удалите из скопированного манифеста метаданные и поля status, сгенерированные сервером.
      • Оставьте поля идентичности выполнения не заданными, включая spec.template.spec.providerID и spec.template.spec.serverId. Провайдер HCS присваивает эти значения при создании экземпляров.
      • При необходимости обновите:
        • spec.template.spec.imageName
        • spec.template.spec.flavorName
        • spec.template.spec.rootVolume.size
        • spec.template.spec.dataVolumes
    3. Разверните обновленный шаблон

      Примените новый шаблон машины:

      kubectl apply -f new-cp-template.yaml -n cpaas-system
    4. Обновите ссылку control plane

      Измените ресурс KubeadmControlPlane, чтобы он ссылался на новый шаблон:

      kubectl patch kubeadmcontrolplane <kcp-name> -n cpaas-system --type='merge' -p='{"spec":{"machineTemplate":{"infrastructureRef":{"name":"<new-template-name>"}}}}'
    5. Отслеживайте поэтапное обновление

      control plane автоматически выполнит поэтапное обновление:

      kubectl get kubeadmcontrolplane <kcp-name> -n cpaas-system -w
      kubectl get machines -n cpaas-system -l cluster.x-k8s.io/control-plane

    Обновление версии Kubernetes

    Обновление версии Kubernetes включает обновление как программного обеспечения control plane, так и поддерживающих образов виртуальных машин.

    Предварительные требования

    • Проверьте совместимость целевой версии Kubernetes с существующими рабочими нагрузками
    • Убедитесь, что шаблон VM поддерживает целевую версию Kubernetes. Сопоставление версий см. в OS Support Matrix.
    • Изучите путь обновления Kubernetes и политику version skew

    Порядок действий

    1. Обновите ссылку на шаблон VM

      Обновите spec.template.spec.imageName в указанном HCSMachineTemplate. Новый шаблон VM должен соответствовать целевой версии Kubernetes.

    2. Обновите версию control plane

      Измените поле spec.version в ресурсе KubeadmControlPlane (обязательно). Для стандартного пути control plane со static IP сохраняйте spec.rolloutStrategy.rollingUpdate.maxSurge: 0. Меняйте параметры обновления за пределами этого только после того, как вы расширите HCSMachineConfigPool control plane, добавив дополнительные слоты для hostname и IP.

    3. Проверьте ход обновления

      Отслеживайте процесс поэтапного обновления:

      # Check control plane status
      kubectl get kubeadmcontrolplane <kcp-name> -n cpaas-system
      
      # Monitor individual machines
      kubectl get machines -n cpaas-system -l cluster.x-k8s.io/control-plane
      
      # Verify cluster health
      kubectl get nodes

    Обновление worker nodes

    Обновление worker nodes выполняется через ресурсы MachineDeployment.

    INFO

    Подробные процедуры для worker nodes см. в разделе Managing Nodes.

    Дополнительные материалы