VK Cloud logo
Обновлена 15 апреля 2024 г. в 11:13

Создание кластера Kubernetes

Далее приведены примеры создания разных кластеров Kubernetes с помощью Terraform. Подробно процедура создания кластера описана в разделе Создание кластера с помощью Terraform.

Перед созданием кластера

  1. Ознакомьтесь с доступными ресурсами и квотами для региона, в котором планируется создать кластер. Для разных регионов могут быть настроены разные квоты.

    Если вы хотите увеличить квоты, обратитесь в техническую поддержку.

  2. Ознакомьтесь с особенностями использования Terraform в сервисе Cloud Containers.

  3. Установите Terraform и настройте провайдер, если этого еще не сделано.

    Поместите настройки провайдера в файл конфигурации Terraform provider.tf.

1. Создайте файл с описанием сетевой инфраструктуры для кластера

Создайте файл конфигурации Terraform network.tf с описанием сетевой инфраструктуры для кластера:

data "vkcs_networking_network" "extnet" {  name = "internet"}resource "vkcs_networking_network" "k8s" {  name           = "k8s-net"  admin_state_up = true}resource "vkcs_networking_subnet" "k8s" {  name            = "k8s-subnet"  network_id      = vkcs_networking_network.k8s.id  cidr            = "192.168.199.0/24"  dns_nameservers = ["8.8.8.8", "8.8.4.4"]}resource "vkcs_networking_router" "k8s" {  name                = "k8s-router"  admin_state_up      = true  external_network_id = data.vkcs_networking_network.extnet.id}resource "vkcs_networking_router_interface" "k8s" {  router_id = vkcs_networking_router.k8s.id  subnet_id = vkcs_networking_subnet.k8s.id}

2. Создайте файл с описанием кластера Kubernetes

В примерах ниже кластеры создаются в следующей конфигурации:

  • Регион Москва, зона доступности GZ1.

  • Версия Kubernetes 1.25.

  • Один master-узел STD3-4-8.

  • Два worker-узла STD2-2-4:

    • С двумя метками (labels):

      • env:test
      • disktype:ssd
    • С двумя ограничениями (taints):

      • taintkey1:taintvalue1: PreferNoSchedule
      • taintkey2:taintvalue2: PreferNoSchedule
    • Каждому кластеру назначается внешний IP-адрес.

Выберите один из примеров создания кластера и создайте файл конфигурации Terraform main.tf с нужным содержимым:

data "vkcs_compute_flavor" "k8s-master-flavor" {    name = "STD3-4-8"}data "vkcs_compute_flavor" "k8s-node-group-flavor" { name = "STD2-2-4"}data "vkcs_kubernetes_clustertemplate" "k8s-template" {    version = "1.25"}resource "vkcs_kubernetes_cluster" "k8s-cluster" {  depends_on = [    vkcs_networking_router_interface.k8s,  ]  name                = "k8s-cluster-tf"  cluster_template_id = data.vkcs_kubernetes_clustertemplate.k8s-template.id  master_flavor       = data.vkcs_compute_flavor.k8s-master-flavor.id  master_count        = 1  network_id          = vkcs_networking_network.k8s.id  subnet_id           = vkcs_networking_subnet.k8s.id  availability_zone   = "GZ1"  floating_ip_enabled = true}resource "vkcs_kubernetes_node_group" "k8s-node-group" {  name = "k8s-node-group"  cluster_id = vkcs_kubernetes_cluster.k8s-cluster.id  flavor_id = data.vkcs_compute_flavor.k8s-node-group-flavor.id  node_count = 2  labels {        key = "env"        value = "test"    }  labels {        key = "disktype"        value = "ssd"    }  taints {        key = "taintkey1"        value = "taintvalue1"        effect = "PreferNoSchedule"    }  taints {        key = "taintkey2"        value = "taintvalue2"        effect = "PreferNoSchedule"    }}

3. Создайте необходимые ресурсы с помощью Terraform

  1. Поместите файлы конфигурации Terraform provider.tf, network.tf и main.tf в одну директорию.

  2. Перейдите в эту директорию.

  3. Выполните команду:

    terraform init
  4. Выполните команду:

    terraform apply

    При запросе подтверждения введите yes.

  5. Дождитесь завершения операции.

Удалите неиспользуемые ресурсы

Если созданные с помощью Terraform ресурсы вам больше не нужны, удалите их:

  1. Перейдите в директорию с файлами конфигурации Terraform.

  2. Выполните команду:

    terraform destroy

    При запросе подтверждения введите yes.

  3. Дождитесь завершения операции.