Переменные в шаблоне узла Yandex Managed Service for Kubernetes
В Managed Service for Kubernetes создаются группы однотипных узлов кластера из шаблона. Чтобы такие узлы имели разные характеристики, используйте механизм подстановок переменных в шаблоне.
Поддерживаются системные и пользовательские переменные.
Подробнее о переменных и этапах их подстановки читайте на странице Переменные в шаблоне виртуальной машины.
Например, с помощью переменных вы можете создать мультизональную группу узлов из пулов резервов ВМ, размещенных в разных зонах доступности.
Использование переменных доступно с помощью CLI, Terraform и API.
Примеры
В примере создается группа узлов в трех зонах доступности с одним узлом из пулов резервов ВМ в каждой зоне.
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— пользовательские переменные с идентификаторами пулов резервов ВМ в разных зонах доступности.
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— идентификаторы групп безопасности.
Примеры для группы с узлами из пула резервов ВМ в одной зоне доступности приведены на странице Пулы резервов виртуальных машин для групп узлов.