• Русский
  • Управление узлами в VMware vSphere

    В этом документе описано, как управлять worker-узлами в VMware vSphere после запуска базового cluster. Операции жизненного цикла узлов управляются ресурсами VSphereMachineConfigPool, VSphereMachineTemplate, KubeadmConfigTemplate и MachineDeployment.

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

    Перед началом убедитесь, что выполнены следующие условия:

    • workload cluster успешно создан. См. Создание cluster в VMware vSphere.
    • В worker machine config pool достаточно доступных слотов.
    • control plane находится в исправном состоянии и доступен.
    • Вы знаете, какие manifest-файлы в настоящее время определяют worker-узлы.

    Шаги

    Масштабирование worker-узлов

    При добавлении новых worker-узлов сначала обновите worker machine config pool, а затем увеличьте значение replica count.

    1. Добавьте один или несколько новых слотов узлов в 03-vspheremachineconfigpool-worker.yaml.
    2. Обновите replicas в 30-workers-md-0.yaml.
    3. Примените обновленные manifest-файлы.

    Используйте следующий порядок:

    kubectl apply -f 03-vspheremachineconfigpool-worker.yaml
    kubectl apply -f 30-workers-md-0.yaml

    Примечание: Если MachineDeployment.spec.replicas больше числа доступных слотов в VSphereMachineConfigPool.spec.configs[], новые worker-узлы не смогут быть назначены корректно.

    Развертывание обновленной конфигурации worker-узлов

    Когда требуется изменить спецификации worker VM, создайте новый VSphereMachineTemplate и обновите MachineDeployment, чтобы он ссылался на него. Это запускает rolling update, который заменяет worker-узлы на узлы с новой конфигурацией.

    WARNING

    Templates неизменяемы

    Ресурсы VSphereMachineTemplate нельзя изменять на месте. Необходимо создать новый template с новым именем и обновить ссылку в MachineDeployment. Дополнительные сведения см. в документации Cluster API.

    К типичным изменениям относятся:

    • имя VM template (spec.template.spec.template)
    • размер CPU или memory (numCPUs, memoryMiB)
    • расположение system disk или data disk (diskGiB, dataDisks)
    1. Экспортируйте существующий template

      kubectl get vspheremachinetemplate <cluster_name>-worker -n <namespace> -o yaml > new-worker-template.yaml
    2. Измените template

      Отредактируйте new-worker-template.yaml:

      • Укажите metadata.name как новое уникальное имя (например, <cluster_name>-worker-v2)
      • Обновите нужные поля specification
      • Удалите поля, сгенерированные server: metadata.resourceVersion, metadata.uid, metadata.generation, metadata.creationTimestamp, metadata.managedFields, metadata.annotations["kubectl.kubernetes.io/last-applied-configuration"] и status
    3. Примените новый template

      kubectl apply -f new-worker-template.yaml
    4. Обновите ссылку в MachineDeployment

      kubectl patch machinedeployment <cluster_name>-md-0 -n <namespace> \
        --type='merge' -p='{
          "spec": {
            "template": {
              "spec": {
                "infrastructureRef": {
                  "name": "<new-template-name>"
                }
              }
            }
          }
        }'

      Если вам также нужно изменить bootstrap settings, см. ниже Обновление Bootstrap Templates.

    5. Отслеживайте rolling update

      kubectl -n <namespace> get machinedeployment <cluster_name>-md-0 -w
      kubectl -n <namespace> get machine
    TIP

    Откат неудачного обновления

    Если rolling update завершится неудачей (например, новые VM не смогут загрузиться), верните ссылку MachineDeployment на имя предыдущего template. Старый template по-прежнему существует, и Cluster API откатится к нему.

    Проверка состояния worker-узлов

    Выполните следующие команды, чтобы проверить состояние management-cluster и workload-cluster:

    kubectl -n <namespace> get machinedeployment,machine,vspheremachine,vspherevm
    kubectl --kubeconfig=/tmp/<cluster_name>.kubeconfig get nodes -o wide

    Убедитесь в следующем:

    • Достигнуто целевое количество worker replica.
    • Каждый новый worker-узел присоединяется к cluster.
    • В конечном итоге узлы переходят в состояние Ready.

    Обновление Bootstrap Templates

    Ресурсы KubeadmConfigTemplate также являются неизменяемыми. Изменения существующего template не запускают rolling update уже созданных machines. Чтобы обновить bootstrap configuration, создайте новый template и обновите ссылку в MachineDeployment.

    1. Экспортируйте существующий template

      kubectl get kubeadmconfigtemplate <cluster_name>-worker-bootstrap -n <namespace> -o yaml > new-bootstrap-template.yaml
    2. Измените template

      Отредактируйте new-bootstrap-template.yaml:

    3. Примените новый template

      kubectl apply -f new-bootstrap-template.yaml
    4. Обновите ссылку в MachineDeployment

      kubectl patch machinedeployment <cluster_name>-md-0 -n <namespace> \
        --type='merge' -p='{
          "spec": {
            "template": {
              "spec": {
                "bootstrap": {
                  "configRef": {
                    "name": "<new-bootstrap-template-name>"
                  }
                }
              }
            }
          }
        }'

      Controller Cluster API запускает rolling update. Существующие machines продолжают использовать старую bootstrap configuration, пока их не заменят.

    INFO

    Обновляете версию Kubernetes? Полный workflow обновления control plane и worker-узлов см. в разделе Обновление Cluster в VMware vSphere.

    Устранение неполадок

    Если управление worker-узлами не выполняется, сначала проверьте следующее:

    • Проверьте условия VSphereMachine на наличие MachineConfigPoolReady. Если значение False, причина указывает, почему не удалось выделить slot:
      • PoolBoundToOtherConsumer: pool уже привязан к другому KubeadmControlPlane или MachineDeployment.
      • NoAvailableSlots: отсутствуют слоты, соответствующие требуемому datacenter или failure domain.
    • Убедитесь, что в worker machine config pool по-прежнему есть свободные слоты.
    • Убедитесь, что IP-адреса worker, gateway и параметры DNS заданы корректно.
    • Убедитесь, что worker VM template по-прежнему соответствует требуемой версии Kubernetes и требованиям guest-tools.
    • Проверьте VSphereVM.status.addresses, если node ожидает выделения IP.

    Следующие шаги

    Если вам нужно изменить worker networking, placement или disk topology, продолжите с разделом Расширение deployment cluster в VMware vSphere.