Создать группу с виртуальными машинами из пула резервов Yandex Compute Cloud
Примечание
В регионе Казахстан доступна только зона доступности kz1-a.
Важно
Пулы резервов ВМ тарифицируются: взимается плата за весь свободный объем зарезервированных вычислительных ресурсов ВМ, кластеров GPU и программно ускоренных сетей согласно правилам тарификации Yandex Compute Cloud. Подробнее см. в разделе Использование пулов резервов ВМ.
Функциональность пулов резервов ВМ находится на стадии Preview.
Пул резервов виртуальных машин — это зарезервированная пользователем в заданной зоне доступности совокупность вычислительных ресурсов, которые будут гарантированно доступны пользователю для создания в этой зоне доступности виртуальных машин в определенной конфигурации.
Вы можете использовать пулы резервов для групп ВМ. Это обеспечивает гарантированную доступность ресурсов для ВМ группы.
Пулы резервов ВМ несовместимы с выделенными хостами, прерываемыми ВМ и виртуальными машинами с уровнем производительности vCPU менее 100%. Кроме того, в настоящее время пулы резервов ВМ не поддерживают группы размещения.
Пулы резервов ВМ создаются в конкретных зонах доступности. Чтобы автоматизировать распределение ВМ мультизональной группы в пулах резервов ВМ конкретной зоны доступности, используйте переменные в шаблоне ВМ.
Подробнее читайте на странице Пулы резервов виртуальных машин в Compute Cloud.
Создать группу в одной зоне доступности с ВМ из пула резервов этой зоны
-
Создайте сервисный аккаунт, от имени которого группа будет управлять ВМ, с ролью compute.admin.
-
Создайте пул резервов ВМ с конфигурацией, которую вы хотите использовать для ВМ группы.
Примечание
Конфигурация пула резервов ВМ должна соответствовать конфигурации группы ВМ, которую вы хотите создать, в части:
- платформы;
- количества vCPU;
- объема RAM;
- зоны доступности.
Количество ВМ в группе в каждой зоне доступности не должно превышать размер пулов резервов ВМ в этих зонах.
-
Создайте группу ВМ:
CLITerraformAPIЕсли у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду
yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров--folder-nameили--folder-id. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.-
Создайте файл
specification.yamlсо спецификацией группы ВМ, например:name: first-fixed-group service_account_id: <идентификатор_сервисного_аккаунта> instance_template: platform_id: standard-v4a resources_spec: memory: 2g cores: 2 boot_disk_spec: mode: READ_WRITE disk_spec: image_id: fd83esfomhq25p2ono90 type_id: network-hdd size: 20g network_interface_specs: - network_id: <идентификатор_сети> primary_v4_address_spec: {} subnet_ids: - <идентификатор_подсети> security_group_ids: - <идентификатор_группы_безопасности> reserved_instance_pool_id: <идентификатор_пула_резервов_ВМ> deploy_policy: max_unavailable: 1 max_expansion: 0 scale_policy: fixed_scale: size: 3 allocation_policy: zones: - zone_id: kz1-aГде:
service_account_id— идентификатор сервисного аккаунта, созданного ранее.network_id— идентификатор сети.subnet_ids— идентификатор подсети.security_group_ids— идентификатор группы безопасности.reserved_instance_pool_id— идентификатор пула резервов ВМ, созданного ранее.zone_id— зона доступности.
Подробнее о параметрах группы ВМ читайте на странице Спецификация группы виртуальных машин в формате YAML.
-
Примените спецификацию, для этого в терминале выполните команду:
yc compute instance-group create \ --file specification.yamlПодробнее о команде читайте в справочнике CLI.
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры группы ВМ:
resource "yandex_compute_instance_group" "first-fixed-group" { name = "first-fixed-group" service_account_id = "<идентификатор_сервисного_аккаунта>" instance_template { platform_id = "standard-v4a" resources { memory = 2 cores = 2 } boot_disk { mode = "READ_WRITE" initialize_params { image_id = "fd83esfomhq25p2ono90" } } network_interface { network_id = "<идентификатор_сети>" subnet_ids = ["<идентификатор_подсети>"] security_group_ids = ["<идентификатор_группы_безопасности>"] } reserved_instance_pool_id = "<идентификатор_пула_резервов_ВМ>" } scale_policy { fixed_scale { size = 3 } } allocation_policy { zones = ["kz1-a"] } deploy_policy { max_unavailable = 1 max_expansion = 0 } }Где:
service_account_id— идентификатор сервисного аккаунта, созданного ранее.network_id— идентификатор сети.subnet_ids— идентификатор подсети.security_group_ids— идентификатор группы безопасности.reserved_instance_pool_id— идентификатор пула резервов ВМ, созданного ранееzones— зона доступности.
Подробнее о параметрах группы ВМ читайте на странице Спецификация группы виртуальных машин в формате YAML.
-
Создайте группу ВМ:
-
В терминале перейдите в директорию с конфигурационным файлом.
-
Проверьте корректность конфигурации с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
-
Подробнее о ресурсе
yandex_compute_instance_groupчитайте в справочнике Terraform.Воспользуйтесь методом REST API create для ресурса InstanceGroup или вызовом gRPC API InstanceGroupService/Create.
Для указания пула резервов используйте параметр
instanceTemplate.reservedInstancePoolId(instance_template.reserved_instance_pool_id). -
Создать группу в трех зонах доступности с ВМ из пулов резервов каждой зоны
-
Создайте сервисный аккаунт, от имени которого группа будет управлять ВМ, с ролью compute.admin.
-
Создайте пулы резервов ВМ в трех зонах доступности с конфигурацией, которую вы хотите использовать для ВМ группы.
Примечание
Конфигурация пула резервов ВМ должна соответствовать конфигурации группы ВМ, которую вы хотите создать, в части:
- платформы;
- количества vCPU;
- объема RAM;
- зоны доступности.
Количество ВМ в группе в каждой зоне доступности не должно превышать размер пулов резервов ВМ в этих зонах.
-
Создайте группу ВМ:
CLITerraformAPIЕсли у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду
yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров--folder-nameили--folder-id. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.-
Создайте файл
specification.yamlсо спецификацией группы ВМ, например:name: first-fixed-group service_account_id: <идентификатор_сервисного_аккаунта> variables: - key: pool_kz1-a value: <идентификатор_пула_резервов_в_зоне_a> - key: pool_kz1-b value: <идентификатор_пула_резервов_в_зоне_b> - key: pool_kz1-d value: <идентификатор_пула_резервов_в_зоне_d> instance_template: platform_id: standard-v4a resources_spec: memory: 2g cores: 2 boot_disk_spec: mode: READ_WRITE disk_spec: image_id: fd83esfomhq25p2ono90 type_id: network-hdd size: 20g network_interface_specs: - network_id: <идентификатор_сети> primary_v4_address_spec: {} subnet_ids: - <идентификатор_подсети_в_зоне_a> - <идентификатор_подсети_в_зоне_b> - <идентификатор_подсети_в_зоне_d> security_group_ids: - <идентификатор_группы_безопасности> reserved_instance_pool_id: "{pool_{instance.zone_id}}" deploy_policy: max_unavailable: 1 max_expansion: 0 scale_policy: fixed_scale: size: 3 allocation_policy: zones: - zone_id: kz1-a - zone_id: kz1-b - zone_id: kz1-dГде:
service_account_id— идентификатор сервисного аккаунта, созданного ранее.network_id— идентификатор сети.subnet_ids— идентификаторы подсетей.security_group_ids— идентификатор группы безопасности.variables— пользовательские переменные с идентификаторами пулов резервов ВМ в разных зонах доступности.reserved_instance_pool_id— идентификаторы пулов резервов ВМ, которые будут получены в результате подстановки системной переменнойinstance.zone_id(зона доступности конкретной ВМ) и пользовательских переменных, заданных в параметреvariables.zone_id— зоны доступности.
Подробнее о параметрах группы ВМ читайте на странице Спецификация группы виртуальных машин в формате YAML.
-
Примените спецификацию, для этого в терминале выполните команду:
yc compute instance-group create \ --file specification.yamlПодробнее о команде читайте в справочнике CLI.
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры группы ВМ:
resource "yandex_compute_instance_group" "ig-1" { name = "fixed-group" service_account_id = "<идентификатор_сервисного_аккаунта>" # Переменные для пулов резервов ВМ variables = { pool_kz1-a = "<идентификатор_пула_резервов_в_зоне_a>" pool_kz1-b = "<идентификатор_пула_резервов_в_зоне_b>" pool_kz1-d = "<идентификатор_пула_резервов_в_зоне_d>" } instance_template { platform_id = "standard-v4a" resources { memory = 2 cores = 2 } boot_disk { mode = "READ_WRITE" initialize_params { image_id = "fd83esfomhq25p2ono90" } } network_interface { network_id = "<идентификатор_сети>" subnet_ids = ["<идентификатор_подсети_в_зоне_a>", "<идентификатор_подсети_в_зоне_b", "<идентификатор_подсети_в_зоне_d>"] security_group_ids = ["<идентификатор_группы_безопасности>"] } # instance.zone_id - системная переменная с идентификатором зоны reserved_instance_pool_id = "{pool_{instance.zone_id}}" } scale_policy { fixed_scale { size = 3 } } allocation_policy { zones = ["kz1-a", "kz1-b", "kz1-d"] } deploy_policy { max_unavailable = 1 max_expansion = 0 } }Где:
service_account_id— идентификатор сервисного аккаунта, созданного ранее.network_id— идентификатор сети.subnet_ids— идентификаторы подсетей.security_group_ids— идентификатор группы безопасности.variables— пользовательские переменные с идентификаторами пулов резервов ВМ в разных зонах доступности.reserved_instance_pool_id— идентификаторы пулов резервов ВМ, которые будут получены в результате подстановки системной переменнойinstance.zone_id(зона доступности конкретной ВМ) и пользовательских переменных, заданных в параметреvariables.zones— зоны доступности.
Подробнее о параметрах группы ВМ читайте на странице Спецификация группы виртуальных машин в формате YAML.
-
Создайте группу ВМ:
-
В терминале перейдите в директорию с конфигурационным файлом.
-
Проверьте корректность конфигурации с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
-
Подробнее о ресурсе
yandex_compute_instance_groupчитайте в справочнике Terraform.Воспользуйтесь методом REST API create для ресурса InstanceGroup или вызовом gRPC API InstanceGroupService/Create.
Для указания пула резервов используйте параметр
instanceTemplate.reservedInstancePoolId(instance_template.reserved_instance_pool_id).Переменные задаются в параметре
variables. -