Создание группы с узлами из пула резервов ВМ Yandex Compute Cloud
Примечание
В регионе Казахстан доступна только зона доступности kz1-a.
Примечание
В регионе Казахстан доступны только платформы standard-v3 (Intel Ice Lake) и standard-v3-t4i (Intel Ice Lake with T4i). Другие типы платформ, кластеры GPU и выделенные хосты недоступны.
Важно
Пулы резервов ВМ тарифицируются: взимается плата за весь свободный объем зарезервированных вычислительных ресурсов ВМ, кластеров GPU и программно ускоренных сетей согласно правилам тарификации Yandex Compute Cloud. Подробнее см. в разделе Использование пулов резервов ВМ.
Функциональность пулов резервов ВМ находится на стадии Preview.
Пул резервов виртуальных машин — это зарезервированная пользователем в заданной зоне доступности совокупность вычислительных ресурсов, которые будут гарантированно доступны пользователю для создания в этой зоне доступности виртуальных машин в определенной конфигурации.
В Managed Service for Kubernetes вы можете использовать пулы резервов ВМ для групп узлов фиксированного размера. Это обеспечивает гарантированную доступность ресурсов для узлов кластера.
Подробнее читайте на страницах Пулы резервов виртуальных машин для групп узлов Yandex Managed Service for Kubernetes и Пулы резервов виртуальных машин в Compute Cloud.
Важно
Использование пулов резервов ВМ не поддерживается для групп узлов со следующими параметрами:
- с автоматическим масштабированием;
- c уровнем производительности vCPU менее 100%;
- c прерываемыми ВМ;
- с использованием групп размещения ВМ.
Создать группу узлов в одной зоне доступности с узлами из пула резервов ВМ этой зоны
-
Создайте пул резервов ВМ с конфигурацией, которую вы хотите использовать для узлов кластера Managed Service for Kubernetes.
Примечание
Конфигурация группы узлов должна соответствовать конфигурации пула резервов ВМ в части:
- платформы;
- количества vCPU;
- объема RAM;
- зоны доступности.
Количество узлов в группе в каждой зоне доступности не должно превышать размер пулов резервов ВМ в этих зонах.
-
Создайте кластер Managed Service for Kubernetes.
-
Создайте группу узлов:
CLITerraformЕсли у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду
yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров--folder-nameили--folder-id.В терминале выполните команду:
yc managed-kubernetes node-group create \ --name k8s-reserved-ng \ --cluster-id <идентификатор_кластера> \ --platform-id standard-v4a \ --cores 4 \ --memory 8 \ --disk-size 64 \ --disk-type network-ssd \ --fixed-size 2 \ --location zone=kz1-a,subnet-id=<идентификатор_подсети> \ --network-interface security-group-ids=[<идентификаторы_групп_безопасности>] \ --reserved-instance-pool-id <идентификатор_пула_резервов>Где:
--cluster-id— идентификатор кластера.--location— зона доступности и идентификатор подсети.--network-interface security-group-ids— идентификаторы групп безопасности.--reserved-instance-pool-id— идентификатор пула резервов ВМ.
Подробнее о команде читайте в справочнике CLI.
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры группы узлов:
resource "yandex_kubernetes_node_group" "k8s-reserved-ng" { cluster_id = "<идентификатор_кластера>" name = "k8s-reserved-ng" instance_template { platform_id = "standard-v4a" reserved_instance_pool_id = "<идентификатор_пула_резервов>" resources { cores = 4 memory = 8 } boot_disk { size = 64 type = "network-ssd" } network_interface { subnet_ids = ["<идентификатор_подсети>"] security_group_ids = ["<идентификаторы_групп_безопасности>"] nat = true } } scale_policy { fixed_scale { size = 2 } } allocation_policy { location { zone = "kz1-a" } } }Где:
cluster_id— идентификатор кластера.subnet_ids— идентификатор подсети.security_group_ids— идентификаторы групп безопасности.reserved_instance_pool_id— идентификатор пула резервов ВМ.
-
Создайте группу узлов:
-
В терминале перейдите в директорию с конфигурационным файлом.
-
Проверьте корректность конфигурации с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
-
Подробнее о ресурсе
yandex_kubernetes_node_groupчитайте в справочнике Terraform.
Создать группу узлов в трех зонах доступности с узлами из пулов резервов ВМ в каждой зоне
-
Создайте пул резервов ВМ с конфигурацией, которую вы хотите использовать для узлов кластера Managed Service for Kubernetes.
Примечание
Конфигурация группы узлов должна соответствовать конфигурации пула резервов ВМ в части:
- платформы;
- количества vCPU;
- объема RAM;
- зоны доступности.
Количество узлов в группе в каждой зоне доступности не должно превышать размер пулов резервов ВМ в этих зонах.
-
Создайте кластер Managed Service for Kubernetes.
-
Создайте группу узлов:
Совет
Пулы резервов ВМ создаются в конкретной зоне доступности. Чтобы автоматизировать распределение узлов мультизональной группы в пулах резервов ВМ конкретной зоны доступности, используйте переменные в шаблоне узла.
CLITerraformЕсли у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду
yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров--folder-nameили--folder-id.В терминале выполните команду:
yc managed-kubernetes node-group create \ --name k8s-multizone-reserved-ng \ --cluster-id <идентификатор_кластера> \ --platform-id standard-v4a \ --cores 4 \ --memory 8 \ --disk-size 64 \ --disk-type network-ssd \ --fixed-size 3 \ --location zone=kz1-a,subnet-id=<идентификатор_подсети_в_зоне_a> \ --location zone=kz1-b,subnet-id=<идентификатор_подсети_в_зоне_b> \ --location zone=kz1-d,subnet-id=<идентификатор_подсети_в_зоне_d> \ --network-interface security-group-ids=[<идентификаторы_групп_безопасности>] \ --reserved-instance-pool-id '{pool_{instance.zone_id}}' \ --variables \ pool_ru-central1-a=<идентификатор_пула_в_зоне_a>,\ pool_ru-central1-b=<идентификатор_пула_в_зоне_b>,\ pool_ru-central1-d=<идентификатор_пула_в_зоне_d>Где:
--cluster-id— идентификатор кластера.--location— зоны доступности и идентификаторы подсетей в них.--network-interface security-group-ids— идентификаторы групп безопасности.--reserved-instance-pool-id— идентификаторы пулов резервов ВМ, которые будут получены в результате подстановки системной переменнойinstance.zone_id(зона доступности конкретного узла) и пользовательских переменных, заданных в параметре--variables.--variables— пользовательские переменные с идентификаторами пулов резервов ВМ в разных зонах доступности.
Подробнее о команде читайте в справочнике CLI.
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры группы узлов:
resource "yandex_kubernetes_node_group" "k8s-multizone-reserved-ng" { cluster_id = "<идентификатор_кластера>" name = "k8s-multizone-reserved-ng" # Переменные для пулов резервов variables = { pool_ru-central1-a = "<идентификатор_пула_резервов_в_зоне_a>" pool_ru-central1-b = "<идентификатор_пула_резервов_в_зоне_b>" pool_ru-central1-d = "<идентификатор_пула_резервов_в_зоне_d>" } instance_template { name = "test-{instance.zone_id}-{instance.index}" # instance.zone_id - системная переменная с идентификатором зоны reserved_instance_pool_id = "{pool_{instance.zone_id}}" platform_id = "standard-v4a" resources { cores = 4 memory = 8 } boot_disk { size = 64 type = "network-ssd" } network_interface { nat = true subnet_ids = [ "<идентификатор_подсети_в_зоне_a>", "<идентификатор_подсети_в_зоне_b>", "<идентификатор_подсети_в_зоне_d>" ] security_group_ids = ["<идентификаторы_групп_безопасности>"] } } scale_policy { fixed_scale { size = 3 } } allocation_policy { location { zone = "kz1-a" } location { zone = "kz1-b" } location { zone = "kz1-d" } } }Где:
cluster_id— идентификатор кластера.variables— пользовательские переменные с идентификаторами пулов резервов ВМ в разных зонах доступности.name— имя узла в группе, которое будет сформировано с использованием системных переменныхinstance.zone_id(зона доступности конкретного узла) иinstance.index(уникальный номер узла в группе, начиная с 1).reserved_instance_pool_id— идентификаторы пулов резервов ВМ, которые будут получены в результате подстановки системной переменнойinstance.zone_idи пользовательских переменных, заданных в параметреvariables.subnet_ids— идентификаторы подсетей.security_group_ids— идентификаторы групп безопасности.
-
Создайте группу узлов:
-
В терминале перейдите в директорию с конфигурационным файлом.
-
Проверьте корректность конфигурации с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
-
Подробнее о ресурсе
yandex_kubernetes_node_groupчитайте в справочнике Terraform.