Skip to main content
Version: 1.12-grodno (current)

Terraform Module: k8s_nodes

Модуль развертывает группу узлов (node group) в существующем Kubernetes кластере.


Ресурсы

РесурсОписание
yandex_kubernetes_node_groupГруппа узлов Kubernetes

Переменные

ИмяТипПо умолчаниюОписание
provider-zonestring-Геозона поставщика
provider-tokenstring-Токен для доступа к Yandex Cloud
provider-folderidstring-ID каталога
k8s_cluster_idstring-ID кластера Kubernetes
k8s_cluster_namestring-Имя кластера (используется для именования ресурсов)
node_group_namestringprimaryИмя группы узлов (влияет на имя нод: {cluster}-{group}-{index})
preemptible_k8s_nodesboolfalseИспользовать прерываемые VM
vm_platformstringstandard-v2Тип платформы VM
k8s_worker_nodes_memnumber4RAM в GB
k8s_worker_nodes_coresnumber2Количество vCPU
k8s_worker_nodes_core_fractionnumber100Доля ядер (0-100)
k8s_worker_nodes_boot_disk_typestringnetwork-hddТип диска (network-hdd, network-ssd)
k8s_worker_nodes_boot_disk_sizenumber30Размер диска в GB
subnet_idslist(string)nullСписок ID подсетей
security_group_idslist(string)nullСписок ID security groups
node_labelsmap(string)Kubernetes labels для нод
node_taintslist(string)nullKubernetes taints для нод
auto_scaleobjectсм. нижеПолитика масштабирования

auto_scale структура:

{
initial = 1 # Начальное количество нод
max = 5 # Максимальное количество нод
min = 1 # Минимальное количество нод
}

Именование ресурсов

  • Имя группы узлов: ${k8s_cluster_name}-${node_group_name}
  • Имя инстанса: ${k8s_cluster_name}-${node_group_name}-{instance.index}

Пример использования

module "core_nodes" {
source = "../modules/k8s_nodes"
provider-folderid = var.provider-folderid
provider-token = var.provider-token
k8s_cluster_id = module.k8s.id
k8s_cluster_name = module.k8s.name
node_group_name = "web-api"
preemptible_k8s_nodes = false
k8s_worker_nodes_mem = 8
k8s_worker_nodes_cores = 8
k8s_worker_nodes_boot_disk_type = "network-ssd"
subnet_ids = [module.vpc.subnet_id]
security_group_ids = [module.k8s.k8s-main-sg, module.k8s.k8s-public-services]
node_labels = {
"api_affinity" = "true"
}
auto_scale = {
initial = 2
max = 5
min = 2
}
}