Задать вопрос

Бесконечный yandex_kubernetes_node_group.kubernetes_node_group: Still creating. Что делать?

Здравствуйте.

Возникла проблема при попытке развернуть 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 я понял что ВМ создаётся довольно быстро если не мгновенно, но вот при просмотре группы узлов кластера я вижу что он создаётся бесконечно долго. 67b2422c73d00534497487.png 67b248306fb52354130059.png
в терминале я вижу только
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
      }
    },
  }
}
  • Вопрос задан
  • 22 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы