Горизонтальное масштабирование кластера Kubernetes

1. Масштабирование кластера, установленного универсальным методом (UPI)

Необходимые условия

  • Вы подготовили виртуальный или физический узел для добавления в кластер согласно разделу Подготовка к установке платформы Nova Container Platform.

  • На вашем локальном компьютере установлена утилита nova-ctl.

  • У вас есть доступ к Kubernetes API с привилегиями администратора кластера (cluster-admin).

  • У вас есть закрытый ключ SSH на вашем локальном компьютере, который нужно предоставить утилите nova-ctl.

  • У вас есть токен доступа к хранилищу секретов Secrets Manager с привилегиями root.

При подготовке нового узла используйте такие же имя пользователя и открытую часть ключа SSH, как и на остальных узлах кластера, которые использовались на подготовительном этапе.

Процедура

  1. Запустите процесс масштабирования узлов кластера с помощью команды:

    nova-ctl scale --ssh-user <имя_пользователя> --ssh-key <закрытый ключ SSH>

    В качестве аргументов --ssh-key и --ssh-user укажите информацию, использованную на этапе конфигурации ключевой пары SSH.

  2. Далее для временного редактирования будет открыт файл конфигурации кластера в текстовом редакторе vi.

  3. Добавьте новый узел в блок конфигурации ClusterNodes и сохраните изменения.

    Пример

    nova-ctl scale --ssh-user nova-installer --ssh-key id_rsa.pem
        spec:
        ...
            clusterNodes:
            ...
            worker: # Роль узла в кластере Kubernetes.
            - hostGroup: "worker" # Существующий узел в кластере Kubernetes.
              networkSpec:
                hostname: "worker01.nova.internal"
                ip: "172.31.101.26"
              state: "present"
            ...
            - hostGroup: "worker" # Добавляемый узел в кластер Kubernetes.
              networkSpec:
                hostname: "worker02.nova.internal"
                ip: "172.31.101.27"
              state: "present"
  4. На запрос Enter Vault root token: введите токен доступа к хранилищу секретов Secrets Manager с привилегиями root, после чего начнется процесс добавления узла в кластер.

  5. Дождитесь сообщения об успешном выполнении операции.

    Пример

    ■ Validating cluster nodes... done
    ■ Validating license... done
    ■ Cleaning up... done
    ■ Preparing cluster nodes... done
    
    🚀 Cluster is successfully scaled.
  6. Проверьте состояние узлов кластера Kubernetes после успешного масштабирования согласно руководству.

2. Масштабирование кластера, установленного в среде zVirt (IPI)

Необходимые условия

  • Вы подготовили виртуальный или физический узел для добавления в кластер согласно разделу Подготовка к установке платформы Nova Container Platform.

  • На вашем локальном компьютере установлена утилита nova-ctl.

  • У вас есть доступ к Kubernetes API с привилегиями администратора кластера (cluster-admin).

  • У вас есть закрытый ключ SSH на вашем локальном компьютере, который нужно предоставить утилите nova-ctl.

  • У вас есть токен доступа к хранилищу секретов Secrets Manager с привилегиями root.

Если вы решили использовать новый шаблон для виртуальной машины, то при его подготовке используйте такие же имя пользователя и открытую часть ключа SSH, как и на остальных узлах кластера, которые использовались на подготовительном этапе.

Процедура

  1. Запустите процесс масштабирования узлов кластера с помощью команды: bash nova-ctl scale --ssh-user <имя_пользователя> --ssh-key <закрытый ключ SSH>

    В качестве аргументов --ssh-key и --ssh-user укажите информацию, использованную на этапе конфигурации ключевой пары SSH.

  2. Далее для временного редактирования будет открыт файл конфигурации кластера в текстовом редакторе vi.

  3. Добавьте новый узел в блок конфигурации ClusterNodes и сохраните изменения.

    Пример

    nova-ctl scale --ssh-user nova-installer --ssh-key id_rsa.pem
        spec:
        ...
            clusterNodes:
            ...
            worker: # Роль узла в кластере Kubernetes.
            - hostGroup: "worker" # Существующий узел в кластере Kubernetes.
              networkSpec:
                hostname: "worker01.nova.internal"
                ip: "10.251.11.120"
                gateway: "10.251.11.254"
                netmask: "255.255.255.0"
                dns:
                - "10.251.1.2"
              state: "present"
            ...
            - hostGroup: "example-worker" # Добавляемый узел в кластер Kubernetes.
              networkSpec:
                hostname: "worker02.nova.internal"
                ip: "10.251.11.119"
                gateway: "10.251.11.254"
                netmask: "255.255.255.0"
                dns:
                - "10.251.1.2"
              state: "present"
  4. При необходимости вы можете добавить в блок hostGroup описание новой группы узлов, в которой можно указать идентификатор нового шаблона виртуальной машины.

    Пример

    nova-ctl scale --ssh-user nova-installer --ssh-key id_rsa.pem
        spec:
        ...
          infrastructureProvider:
          ...
            zvirt:
            ...
              hostGroup:
              ...
              - name: "example-worker"
                templateId: "729df7ab-900b-4df7-ac40-01b70629dd4e"
                vnicProfileId: "9a58ffa8-98d8-472c-9198-5f54a9f8aaac"
                cpuCores: 1
                cpuSockets: 8
                cpuThreads: 1
                memory: "8GiB"
                maximumMemory: "16GiB"
  5. На запрос Enter Vault root token: введите токен доступа к хранилищу секретов Secrets Manager с привилегиями root, после чего начнется процесс добавления узла в кластер.

  6. В процессе масштабирования будет запрошено подтверждение на создание виртуальных машин и сетевых интерфейсов в среде виртуализации zVirt.

    Пример

    nova-ctl scale –ssh-user nova-installer –ssh-key id_rsa.pem
    
    ■ Validating license… done ☕️ 3/8: Preparing infrastructure… The following actions will be preformed:
    * create ovirt_vm worker01-nova-internal
    * create ovirt_vm worker02-nova-internal
    * create ovirt_nic worker01-nova-internal
    * create ovirt_nic worker02-nova-internal
    * create ovirt_vm_start worker01-nova-internal
    * create ovirt_vm_start worker02-nova-internal Are you sure you want to apply these changes? (yes/no) [no] yes
  7. Дождитесь сообщения об успешном выполнении операции.

    Пример

    nova-ctl scale --ssh-user nova-installer --ssh-key id_rsa.pem
    ■ Validating license... done
    ■ Preparing infrastructure... done
    ■ Validating cluster nodes... done
    ■ Preparing cluster nodes... done
    ■ Scaling Kubernetes cluster... done
    
    🚀 Cluster is successfully scaled.
  8. Проверьте состояние узлов кластера Kubernetes после успешного масштабирования согласно руководству.