Горизонтальное масштабирование кластера
Горизонтальное масштабирование заключается в добавлении новых узлов в кластер 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, как и на остальных узлах кластера, которые использовались на подготовительном этапе. |
-
Запустите процесс масштабирования узлов кластера с помощью команды:
nova-ctl scale --ssh-user <имя_пользователя> --ssh-key <закрытый ключ SSH>В качестве аргументов
--ssh-keyи--ssh-userукажите информацию, использованную на этапе конфигурации ключевой пары SSH. -
Далее для временного редактирования будет открыт файл конфигурации кластера в текстовом редакторе
vi. -
Добавьте новый узел в блок конфигурации 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" -
На запрос
Enter Vault root token:введите токен доступа к хранилищу секретов StarVault с привилегиямиroot, после чего начнется процесс добавления узла в кластер. -
Дождитесь сообщения об успешном выполнении операции.
Пример вывода
■ Validating cluster nodes... done ■ Validating license... done ■ Cleaning up... done ■ Preparing cluster nodes... done 🚀 Cluster is successfully scaled. -
Проверьте состояние узлов кластера Kubernetes после успешного масштабирования согласно руководству.
2. Масштабирование кластера, установленного в среде zVirt (IPI)
2.1. Предварительные условия
-
На локальном компьютере установлена утилита nova-ctl
-
Имеется доступ к Kubernetes API с привилегиями администратора кластера (
cluster-admin) -
Имеется закрытый ключ SSH на локальном компьютере, который нужно предоставить утилите
nova-ctl -
Имеется токен доступа к хранилищу секретов StarVault с привилегиями
root
|
Если вы решили использовать новый шаблон для виртуальной машины, то при его подготовке используйте такие же имя пользователя и открытую часть ключа SSH, как и на остальных узлах кластера, которые использовались на подготовительном этапе. |
-
Запустите процесс масштабирования узлов кластера с помощью команды:
nova-ctl scale --ssh-user <имя_пользователя> --ssh-key <закрытый ключ SSH>В качестве аргументов
--ssh-keyи--ssh-userукажите информацию, использованную на этапе конфигурации ключевой пары SSH. -
Далее для временного редактирования будет открыт файл конфигурации кластера в текстовом редакторе
vi. -
Добавьте новый узел в блок конфигурации 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" -
При необходимости добавьте в блок 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" -
На запрос
Enter Vault root token:введите токен доступа к хранилищу секретов StarVault с привилегиямиroot, после чего начнется процесс добавления узла в кластер. -
В процессе масштабирования будет запрошено подтверждение на создание виртуальных машин и сетевых интерфейсов в среде виртуализации 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 -
Дождитесь сообщения об успешном выполнении операции.
Пример вывода
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. -
Проверьте состояние узлов кластера 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)
-
Подготовьте 2 новых узла согласно разделу Подготовка к установке. Используйте такие же имя пользователя и открытую часть ключа SSH, как и на существующих узлах кластера.
-
Запустите процесс масштабирования:
nova-ctl scale --ssh-user <имя_пользователя> --ssh-key <закрытый ключ SSH> -
Далее для временного редактирования будет открыт файл конфигурации кластера в текстовом редакторе
vi. -
Добавьте 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" -
Утилита запросит 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>" -
На запрос
Enter StarVault root token:введите токен доступа к StarVault с привилегиямиroot. -
Дождитесь сообщения об успешном выполнении операции:
■ Validating license... done ■ Preparing infrastructure... done ■ Validating cluster nodes... done ■ Preparing cluster nodes... done ■ Scaling Kubernetes cluster... done ✓ Cluster is successfully scaled. -
Сохраните новые ключи распечатки из файла
starvault-unseal-keys.txtв надежном месте. -
Проверьте состояние узлов кластера Kubernetes:
kubectl get nodesВсе мастер-узлы должны иметь статус
Readyи рольcontrol-plane.
3.5. Уменьшение количества мастер-узлов (3 → 1)
|
После уменьшения до 1 мастер-узла кластер потеряет отказоустойчивость control plane. Убедитесь, что это соответствует требованиям к кластеру. |
-
Запустите процесс масштабирования:
nova-ctl scale --ssh-user <имя_пользователя> --ssh-key <закрытый ключ SSH> -
Далее для временного редактирования будет открыт файл конфигурации кластера в текстовом редакторе
vi. -
Для удаляемых мастер-узлов измените значение ключа
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" -
Утилита запросит 3 действующих ключа распечатки StarVault. Введите их интерактивно (аналогично предыдущему разделу) или передайте через флаги.
-
На запрос
Enter Vault root token:введите токен доступа к StarVault с привилегиямиroot. -
Дождитесь сообщения об успешном выполнении операции и сохраните новые ключи распечатки из файла
starvault-unseal-keys.txt. -
Проверьте состояние узлов кластера 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)
-
Подготовьте 2 новых узла согласно разделу Подготовка к установке. Используйте такие же имя пользователя и открытую часть ключа SSH, как и на существующих узлах кластера.
-
Запустите процесс масштабирования:
nova-ctl scale --ssh-user <имя_пользователя> --ssh-key <закрытый ключ SSH> -
Далее для временного редактирования будет открыт файл конфигурации кластера в текстовом редакторе
vi. -
Добавьте 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" -
Утилита запросит 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>" -
На запрос
Enter Vault root token:введите токен доступа к StarVault с привилегиямиroot. -
В процессе масштабирования будет запрошено подтверждение на создание виртуальных машин и сетевых интерфейсов в среде виртуализации 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 -
Дождитесь сообщения об успешном выполнении операции:
■ Validating license... done ■ Preparing infrastructure... done ■ Validating cluster nodes... done ■ Preparing cluster nodes... done ■ Scaling Kubernetes cluster... done ✓ Cluster is successfully scaled. -
Сохраните новые ключи распечатки из файла
starvault-unseal-keys.txtв надежном месте. -
Проверьте состояние узлов кластера Kubernetes:
kubectl get nodesВсе мастер-узлы должны иметь статус
Readyи рольcontrol-plane.