Здравствуйте.
Возникла проблема при попытке развернуть yandex_kubernetes_node_group с помощью terraform. Я написал проект тераформ который поднимает множество других ресурсов от яндекс и у меня не возникло никаких проблем с ними. но когда дело дошло до yandex_kubernetes_node_group я заметил что нода создавалось крайне долго и в конце концов превышала таймаут по умолчанию в 60 минут с ошибкой "time limit exceeded" я подумал что наверное ему не хватает времен и повысил лимит до 120 минут и в конце увидел всё тот же ответ. Тогда я решил попробовать запустить k8s с помощью модуля terraform-yc-kubernetes (
https://github.com/terraform-yc-modules/terraform-...) и всё заработало. Но всё же мне хотелось бы понять почему мой код не работает. Через console.yandex.cloud я понял что ВМ создаётся довольно быстро если не мгновенно, но вот при просмотре группы узлов кластера я вижу что он создаётся бесконечно долго.

в терминале я вижу только
yandex_kubernetes_node_group.kubernetes_node_group: Still creating... [21m0s elapsed]
yandex_kubernetes_node_group.kubernetes_node_group: Still creating... [22m10s elapsed]
yandex_kubernetes_node_group.kubernetes_node_group: Still creating... [22m20s elapsed]
yandex_kubernetes_node_group.kubernetes_node_group: Still creating... [22m30s elapsed]
Код в котором есть ошибка:
terraform {
required_providers {
yandex = {
source = "yandex-cloud/yandex"
}
}
required_version = ">= 0.13"
}
provider "yandex" {
token = var.token
cloud_id = var.cloud_id
folder_id = var.folder_id
zone = "ru-central1-d"
}
resource "yandex_vpc_network" "network" {
name = "practix-network"
}
resource "yandex_vpc_subnet" "subnet_d" {
name = "practix-subnet-d"
zone = "ru-central1-d"
network_id = yandex_vpc_network.network.id
v4_cidr_blocks = ["10.5.0.0/24"]
depends_on = [yandex_vpc_network.network]
}
resource "yandex_vpc_security_group" "security_group" {
name = "security-group"
network_id = yandex_vpc_network.network.id
ingress {
protocol = "TCP"
v4_cidr_blocks = ["10.0.1.0/24", "10.0.2.0/24"]
port = 8080
}
egress {
protocol = "ANY"
v4_cidr_blocks = ["10.0.1.0/24", "10.0.2.0/24"]
from_port = 8090
to_port = 8099
}
egress {
protocol = "UDP"
v4_cidr_blocks = ["10.0.1.0/24"]
from_port = 8090
to_port = 8099
}
depends_on = [yandex_vpc_network.network]
}
resource "yandex_iam_service_account" "service_account" {
name = "practix-service-account"
}
resource "yandex_resourcemanager_folder_iam_member" "editor" {
folder_id = var.folder_id
role = "editor"
member = "serviceAccount:${yandex_iam_service_account.service_account.id}"
depends_on = [yandex_iam_service_account.service_account]
}
resource "yandex_resourcemanager_folder_iam_member" "k8s_clusters_agent" {
folder_id = var.folder_id
role = "k8s.clusters.agent"
member = "serviceAccount:${yandex_iam_service_account.service_account.id}"
depends_on = [yandex_iam_service_account.service_account]
}
resource "yandex_resourcemanager_folder_iam_member" "images_puller" {
folder_id = var.folder_id
role = "container-registry.images.puller"
member = "serviceAccount:${yandex_iam_service_account.service_account.id}"
depends_on = [yandex_iam_service_account.service_account]
}
resource "yandex_resourcemanager_folder_iam_member" "vpc_public_admin" {
folder_id = var.folder_id
role = "vpc.publicAdmin"
member = "serviceAccount:${yandex_iam_service_account.service_account.id}"
depends_on = [yandex_iam_service_account.service_account]
}
resource "yandex_kubernetes_cluster" "kubernetes_cluster" {
name = "kubernetes-cluster"
network_id = yandex_vpc_network.network.id
master {
zonal {
zone = yandex_vpc_subnet.subnet_d.zone
subnet_id = yandex_vpc_subnet.subnet_d.id
}
public_ip = true
security_group_ids = ["${yandex_vpc_security_group.security_group.id}"]
maintenance_policy {
auto_upgrade = true
maintenance_window {
day = "monday"
start_time = "2:00"
duration = "3h"
}
}
}
service_account_id = yandex_iam_service_account.service_account.id
node_service_account_id = yandex_iam_service_account.service_account.id
release_channel = "RAPID"
network_policy_provider = "CALICO"
depends_on = [
yandex_resourcemanager_folder_iam_member.k8s_clusters_agent,
yandex_resourcemanager_folder_iam_member.vpc_public_admin,
yandex_resourcemanager_folder_iam_member.images_puller,
yandex_iam_service_account.service_account,
yandex_vpc_security_group.security_group,
]
}
resource "yandex_kubernetes_node_group" "kubernetes_node_group" {
name = "kubernetes-node-group"
cluster_id = yandex_kubernetes_cluster.kubernetes_cluster.id
instance_template {
platform_id = "standard-v3"
network_interface {
nat = true
subnet_ids = ["${yandex_vpc_subnet.subnet_d.id}"]
}
resources {
memory = 48
cores = 12
core_fraction = 100
}
boot_disk {
type = "network-ssd"
size = 128
}
container_runtime {
type = "containerd"
}
}
scale_policy {
fixed_scale {
size = 1
}
}
allocation_policy {
location {
zone = "ru-central1-d"
}
}
maintenance_policy {
auto_upgrade = true
auto_repair = true
maintenance_window {
day = "monday"
start_time = "5:00"
duration = "3h"
}
}
}
и создание идёт бесконечно.
а вот код с модулём kube который работает, но я хочу понять что я делал не так в коде сверху.
module "kubernetes" {
source = "github.com/terraform-yc-modules/terraform-yc-kubernetes.git"
network_id = "${yandex_vpc_network.network.id}"
master_locations = [
{
zone = "ru-central1-d"
subnet_id = "${yandex_vpc_subnet.subnet_d.id}"
},
]
master_maintenance_windows = [
{
day = "monday"
start_time = "3:00"
duration = "3h"
}
]
node_groups = {
"kubernetes-node-group" = {
node_cores = 12
node_memory = 48
disk_size = 120
fixed_scale = {
size = 1
}
},
}
}