Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

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

Горизонтальное масштабирование заключается в добавлении новых узлов в кластер Kubernetes и выполняется с помощью утилиты nova-ctl.

Если требуется, чтобы новый узел балансировал трафик в кластер, ознакомьтесь в разделе Node Local Gateway с метками и аннотациями, которые необходимо добавить.

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

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

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

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

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

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

  • Имеется токен доступа к хранилищу секретов StarVault с привилегиями root

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

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

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

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

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

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

    Пример добавления узла в блок ClusterNodes
    nova-ctl scale --ssh-user nova-installer --ssh-key id_rsa.pem
        spec:
        ...
            clusterNodes:
            ...
            worker: # Роль узла в кластере Kubernetes.
            - hostGroup: "worker" # Существующий узел в кластере Kubernetes.
              networkSpec:
                hostname: "worker01.mycompany.local"
                ip: "172.31.101.26"
              state: "present"
            ...
            - hostGroup: "worker" # Добавляемый узел в кластер Kubernetes.
              networkSpec:
                hostname: "worker02.mycompany.local"
                ip: "172.31.101.27"
              state: "present"
  4. На запрос Enter Vault root token: введите токен доступа к хранилищу секретов StarVault с привилегиями 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)

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

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

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

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

  • Имеется токен доступа к хранилищу секретов StarVault с привилегиями root

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

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

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

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

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

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

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

    Пример добавления группы узлов 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: введите токен доступа к хранилищу секретов StarVault с привилегиями root, после чего начнется процесс добавления узла в кластер.

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

    Пример вывода
    nova-ctl scale --ssh-user nova-installer --ssh-key id_rsa.pem
    
    ■ Validating license... done
    ■ 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 после успешного масштабирования согласно руководству.

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

Масштабирование мастер-узлов — операция повышенной ответственности. Внимательно прочитайте данный раздел перед началом работы.

Платформа Nova Container Platform поддерживает следующие конфигурации мастер-узлов:

Конфигурация

Описание

1 мастер

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

3 мастера

Три мастер-узла. Обеспечивается отказоустойчивость control plane (кластер выдерживает потерю 1 мастер).

Переход между конфигурациями возможен в обоих направлениях: 1 → 3 и 3 → 1.

3.1. Особенности операции

При масштабировании мастер-узлов автоматически выполняется перевыпуск ключей распечатки хранилища секретов StarVault:

  • Старые ключи для распечатки станут недействительными сразу после завершения операции

  • Новые ключи для распечатки будут выведены в консоль и сохранены в файл starvault-unseal-keys.txt на локальном компьютере

  • Резервная копия состояния StarVault создается автоматически перед началом операции

Сохраните новые ключи распечатки в надежном месте сразу после завершения операции. Потеря ключей означает невозможность распечатать StarVault после перезапуска.

Перед началом операции сохраните старые ключи распечатки для восстановления кластера в случае возникновения ошибки во время масштабирования.

3.2. Ограничения

  • Одновременное добавление и удаление мастер-узлов не поддерживается

  • Одновременное масштабирование мастер-узлов и worker-узлов не поддерживается

  • Поддерживаемые конфигурации: только 1 мастер или 3 мастера (конфигурация из 2 мастер-узлов не поддерживается)

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

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

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

  • Имеется закрытый ключ SSH на локальном компьютере

  • Имеется токен доступа к хранилищу секретов StarVault с привилегиями root

  • Имеется 3 действующих ключа распечатки StarVault

3.4. Увеличение количества мастер-узлов (1 → 3)

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

  2. Запустите процесс масштабирования:

    nova-ctl scale --ssh-user <имя_пользователя> --ssh-key <закрытый ключ SSH>
  3. Далее для временного редактирования будет открыт файл конфигурации кластера в текстовом редакторе vi.

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

    Пример добавления мастер-узлов в блок ClusterNodes
    spec:
      ...
      clusterNodes:
        ...
        master:
          - hostGroup: "master" # Существующий мастер-узел.
            networkSpec:
              hostname: "master01.mycompany.local"
              ip: "172.31.101.25"
            state: "present"
          - hostGroup: "master" # Добавляемый мастер-узел.
            networkSpec:
              hostname: "master02.mycompany.local"
              ip: "172.31.101.28"
            state: "present"
          - hostGroup: "master" # Добавляемый мастер-узел.
            networkSpec:
              hostname: "master03.mycompany.local"
              ip: "172.31.101.29"
            state: "present"
  5. Утилита запросит 3 действующих ключа распечатки StarVault. Введите их интерактивно:

    Enter starvault unseal key 1: ******
    Enter starvault unseal key 2: ******
    Enter starvault unseal key 3: ******

    Либо передайте ключи через флаги командной строки:

    nova-ctl scale --ssh-user <имя_пользователя> --ssh-key <закрытый ключ SSH> \
      --starvault-unseal-key="<ключ 1>" \
      --starvault-unseal-key="<ключ 2>" \
      --starvault-unseal-key="<ключ 3>"
  6. На запрос Enter StarVault root token: введите токен доступа к StarVault с привилегиями root.

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

    ■ Validating license... done
    ■ Preparing infrastructure... done
    ■ Validating cluster nodes... done
    ■ Preparing cluster nodes... done
    ■ Scaling Kubernetes cluster... done
    
    ✓ Cluster is successfully scaled.
  8. Сохраните новые ключи распечатки из файла starvault-unseal-keys.txt в надежном месте.

  9. Проверьте состояние узлов кластера Kubernetes:

    kubectl get nodes

    Все мастер-узлы должны иметь статус Ready и роль control-plane.

3.5. Уменьшение количества мастер-узлов (3 → 1)

После уменьшения до 1 мастер-узла кластер потеряет отказоустойчивость control plane. Убедитесь, что это соответствует требованиям к кластеру.

  1. Запустите процесс масштабирования:

    nova-ctl scale --ssh-user <имя_пользователя> --ssh-key <закрытый ключ SSH>
  2. Далее для временного редактирования будет открыт файл конфигурации кластера в текстовом редакторе vi.

  3. Для удаляемых мастер-узлов измените значение ключа state с "present" на "absent" и сохраните изменения.

    Пример удаления мастер-узлов
    spec:
      ...
      clusterNodes:
        ...
        master:
          - hostGroup: "master" # Остающийся мастер-узел.
            networkSpec:
              hostname: "master01.mycompany.local"
              ip: "172.31.101.25"
            state: "present"
          - hostGroup: "master" # Удаляемый мастер-узел.
            networkSpec:
              hostname: "master02.mycompany.local"
              ip: "172.31.101.28"
            state: "absent"
          - hostGroup: "master" # Удаляемый мастер-узел.
            networkSpec:
              hostname: "master03.mycompany.local"
              ip: "172.31.101.29"
            state: "absent"
  4. Утилита запросит 3 действующих ключа распечатки StarVault. Введите их интерактивно (аналогично предыдущему разделу) или передайте через флаги.

  5. На запрос Enter Vault root token: введите токен доступа к StarVault с привилегиями root.

  6. Дождитесь сообщения об успешном выполнении операции и сохраните новые ключи распечатки из файла starvault-unseal-keys.txt.

  7. Проверьте состояние узлов кластера Kubernetes:

    kubectl get nodes

    Все мастер-узлы должны иметь статус Ready и роль control-plane.

4. Масштабирование мастер-узлов IPI (zVirt)

Масштабирование мастер-узлов — операция повышенной ответственности. Внимательно прочитайте этот раздел перед началом работы.

Платформа Nova Container Platform поддерживает следующие конфигурации мастер-узлов:

Конфигурация

Описание

1 master

Одиночный master-узел. Отказоустойчивость control plane не обеспечивается.

3 master

Три мастер-узла. Обеспечивается отказоустойчивость control plane (кластер выдерживает потерю 1 master).

Переход между конфигурациями возможен в обоих направлениях: 1 → 3 и 3 → 1.

4.1. Особенности операции

При масштабировании мастер-узлов автоматически выполняется перевыпуск ключей распечатки хранилища секретов StarVault:

  • Старые ключи распечатки станут недействительными сразу после завершения операции

  • Новые ключи распечатки будут выведены в консоль и сохранены в файл starvault-unseal-keys.txt на локальном компьютере

  • Резервная копия состояния StarVault создается автоматически перед началом операции

Сохраните новые ключи распечатки в надежном месте сразу после завершения операции. Потеря ключей распечатки означает невозможность распечатать StarVault после перезапуска.

Перед началом операции сохраните старые ключи распечатки для восстановления кластера в случае возникновения ошибки во время масштабирования.

4.2. Ограничения

  • Одновременное добавление и удаление мастер-узлов не поддерживается

  • Одновременное масштабирование мастер-узлов и worker-узлов не поддерживается

  • Поддерживаемые конфигурации: только 1 master или 3 master (конфигурация из 2 мастер-узлов не поддерживается)

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

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

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

  • Имеется закрытый ключ SSH на локальном компьютере

  • Имеется токен доступа к хранилищу секретов StarVault с привилегиями root

  • Имеется 3 действующих ключа распечатки StarVault

4.4. Увеличение количества мастер-узлов (1 → 3)

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

  2. Запустите процесс масштабирования:

    nova-ctl scale --ssh-user <имя_пользователя> --ssh-key <закрытый ключ SSH>
  3. Далее для временного редактирования будет открыт файл конфигурации кластера в текстовом редакторе vi.

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

    Пример добавления мастер-узлов в блок ClusterNodes
    spec:
      ...
      clusterNodes:
        ...
        master:
          - hostGroup: "master" # Существующий master-узел.
            networkSpec:
              hostname: "master01.mycompany.local"
              ip: "172.31.101.25"
            state: "present"
          - hostGroup: "master" # Добавляемый master-узел.
            networkSpec:
              hostname: "master02.mycompany.local"
              ip: "172.31.101.28"
            state: "present"
          - hostGroup: "master" # Добавляемый master-узел.
            networkSpec:
              hostname: "master03.mycompany.local"
              ip: "172.31.101.29"
            state: "present"
  5. Утилита запросит 3 действующих ключа распечатки StarVault. Введите их интерактивно:

    Enter starvault unseal key 1: ******
    Enter starvault unseal key 2: ******
    Enter starvault unseal key 3: ******

    Либо передайте ключи через флаги командной строки:

    nova-ctl scale --ssh-user <имя_пользователя> --ssh-key <закрытый ключ SSH> \
      --starvault-unseal-key="<ключ 1>" \
      --starvault-unseal-key="<ключ 2>" \
      --starvault-unseal-key="<ключ 3>"
  6. На запрос Enter Vault root token: введите токен доступа к StarVault с привилегиями root.

  7. В процессе масштабирования будет запрошено подтверждение на создание виртуальных машин и сетевых интерфейсов в среде виртуализации 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 master02-nova-internal
    * create ovirt_vm master03-nova-internal
    * create ovirt_nic master02-nova-internal
    * create ovirt_nic master03-nova-internal
    * create ovirt_vm_start master02-nova-internal
    * create ovirt_vm_start master03-nova-internal Are you sure you want to apply these changes? (yes/no) [no] yes
  8. Дождитесь сообщения об успешном выполнении операции:

    ■ Validating license... done
    ■ Preparing infrastructure... done
    ■ Validating cluster nodes... done
    ■ Preparing cluster nodes... done
    ■ Scaling Kubernetes cluster... done
    
    ✓ Cluster is successfully scaled.
  9. Сохраните новые ключи распечатки из файла starvault-unseal-keys.txt в надежном месте.

  10. Проверьте состояние узлов кластера Kubernetes:

    kubectl get nodes

    Все мастер-узлы должны иметь статус Ready и роль control-plane.