全部产品
Search
文档中心

Container Service for Kubernetes:Gunakan Terraform untuk mengaitkan set penyebaran dengan kolam node

更新时间:Jul 06, 2025

Set penyebaran berisi instance Elastic Compute Service (ECS) yang didistribusikan di beberapa server fisik. Anda dapat menggunakan set penyebaran untuk meningkatkan ketersediaan aplikasi dan menerapkan pemulihan bencana. Kolam node yang dikaitkan dengan set penyebaran berisi node ECS yang didistribusikan di beberapa server fisik. Dengan mengonfigurasi afinitas pod, Anda dapat menyebarkan pod aplikasi ke node ECS yang berbeda, sehingga meningkatkan ketersediaan aplikasi dan memastikan pemulihan bencana. Topik ini menjelaskan cara menggunakan Terraform untuk mengaitkan set penyebaran dengan kolam node.

Catatan

Anda dapat menjalankan kode contoh dalam topik ini hanya dengan beberapa klik. Klik di sini untuk menjalankan kode contoh.

Prasyarat

  • Lingkungan runtime untuk Terraform disiapkan menggunakan salah satu metode berikut:

    • Gunakan Terraform di Terraform Explorer: Alibaba Cloud menyediakan lingkungan runtime online untuk Terraform. Anda dapat masuk ke lingkungan tersebut dan menggunakan Terraform tanpa perlu menginstalnya. Cocok untuk skenario hemat biaya, efisien, dan nyaman.

    • Gunakan Terraform di Cloud Shell: Cloud Shell sudah terinstal dengan Terraform dan dikonfigurasikan dengan kredensial identitas Anda. Anda dapat menjalankan perintah Terraform di Cloud Shell. Cocok untuk skenario hemat biaya, efisien, dan nyaman.

    • Gunakan Terraform di ROS: Resource Orchestration Service (ROS) mendukung integrasi template Terraform. Dengan menggunakan Terraform bersama ROS, Anda dapat mendefinisikan dan mengelola sumber daya di Alibaba Cloud, Amazon Web Services (AWS), atau Microsoft Azure, menentukan parameter sumber daya, dan mengonfigurasikan hubungan dependensi.

    • Instal dan konfigurasikan Terraform pada mesin lokal Anda: Cocok untuk skenario di mana koneksi jaringan tidak stabil atau lingkungan pengembangan kustom diperlukan.

    Catatan

    Terraform versi 0.12.28 atau lebih baru telah diinstal. Anda dapat menjalankan perintah terraform --version untuk memeriksa versi Terraform.

  • Pastikan kuota ECS yang cukup dalam set penyebaran dan ketersediaan inventaris yang memadai untuk tipe instance ECS yang ditentukan. Secara default, setiap set penyebaran dapat berisi hingga 20 instance ECS di setiap zona. Untuk informasi lebih lanjut, lihat Kelola Kuota ECS.

  • Sebuah pasangan AccessKey telah dibuat untuk pengguna Manajemen Akses Sumber Daya (RAM) yang Anda gunakan untuk masuk.

    Catatan

    Secara default, akun Alibaba Cloud memiliki izin penuh atas semua sumber daya yang dimiliki oleh akun tersebut. Kami merekomendasikan menggunakan akun RAM karena memberikan izin sumber daya yang terbatas, meminimalkan risiko keamanan potensial jika kredensial Anda terganggu.

  • Kebijakan berikut dilampirkan ke pengguna RAM yang Anda gunakan untuk menjalankan perintah di Terraform. Kebijakan ini mencakup izin minimum yang diperlukan untuk menjalankan perintah di Terraform. Untuk informasi lebih lanjut, lihat Berikan Izin kepada Pengguna RAM.

    Kebijakan ini memungkinkan pengguna Manajemen Akses Sumber Daya (RAM) untuk membuat, melihat, dan menghapus virtual private cloud (VPC), vSwitch, set penyebaran, dan klaster ACK.

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "vpc:CreateVpc",
                    "vpc:CreateVSwitch",
                    "cs:CreateCluster",
                    "vpc:DescribeVpcAttribute",
                    "vpc:DescribeVSwitchAttributes",
                    "vpc:DescribeRouteTableList",
                    "vpc:DescribeNatGateways",
                    "cs:DescribeTaskInfo",
                    "cs:DescribeClusterDetail",
                    "cs:GetClusterCerts",
                    "cs:CheckControlPlaneLogEnable",
                    "cs:CreateClusterNodePool",
                    "cs:DescribeClusterNodePoolDetail",
                    "cs:ModifyClusterNodePool",
                    "vpc:DeleteVpc",
                    "vpc:DeleteVSwitch",
                    "cs:DeleteCluster",
                    "cs:DeleteClusterNodepool",
                    "ecs:CreateDeploymentSet",
                    "ecs:DescribeDeploymentSets",
                    "ecs:ModifyDeploymentSetAttribute",
                    "ecs:DeleteDeploymentSet"
                ],
                "Resource": "*"
            }
        ]
    }

Informasi latar belakang

Untuk memastikan ketersediaan tinggi aplikasi Anda di suatu zona, Anda harus menyebarkan aplikasi di beberapa host. Namun, ketika server fisik mati, semua pod aplikasi terpengaruh. Untuk menyelesaikan masalah ini, Anda dapat menggunakan set penyebaran yang disediakan oleh ECS. Instance ECS dalam set penyebaran didistribusikan di beberapa server fisik dan diisolasi satu sama lain. Ini membantu mencegah gangguan layanan yang disebabkan oleh titik kegagalan tunggal. Untuk informasi lebih lanjut tentang set penyebaran, lihat Set Penyebaran.

Batasan

Panduan penggunaan fitur klaster

  • Set penyebaran didukung oleh klaster ACK khusus dan klaster ACK dikelola.

  • Anda hanya dapat mengaitkan set penyebaran dengan kolam node saat membuat kolam node. Kolam node yang ada tidak dapat memiliki set penyebaran yang diaktifkan. Anda hanya dapat mengaitkan satu set penyebaran dengan setiap kolam node.

  • Anda tidak dapat menambahkan instance ECS secara manual ke atau menghapus instance ECS dari set penyebaran. Jika Anda ingin mengubah jumlah instance ECS dalam set penyebaran, Anda dapat menskalakan kolam node yang dikaitkan dengan set penyebaran tersebut. Untuk informasi lebih lanjut, lihat Buat dan Kelola Kolam Node.

  • Setelah Anda mengaitkan set penyebaran dengan kolam node, kolam node tidak mendukung instance preemptible.

Batasan kuota dan spesifikasi set penyebaran

  • Batasan Kuota Set Penyebaran

    • Secara default, set penyebaran kolam node diimplementasikan berdasarkan strategi ketersediaan tinggi. Dalam set penyebaran yang mengadopsi strategi ketersediaan tinggi, Anda dapat membuat hingga 20 instance ECS per zona. Anda dapat menggunakan rumus berikut untuk menghitung jumlah maksimum instance ECS yang dapat Anda buat dalam set penyebaran di wilayah Alibaba Cloud: 20 × Jumlah zona dalam wilayah. Pastikan ada instance ECS yang cukup dalam set penyebaran dan stok yang memadai untuk tipe instance yang diperlukan. Untuk informasi lebih lanjut, lihat Set Penyebaran.

      Anda tidak dapat meningkatkan jumlah instance ECS dalam set penyebaran. Namun, jika Anda ingin meningkatkan jumlah maksimum set penyebaran yang dapat dimiliki akun Alibaba Cloud Anda, ajukan permintaan peningkatan kuota di konsol Pusat Kuota. Untuk informasi lebih lanjut tentang batasan dan kuota set penyebaran, lihat Set Penyebaran.

    • Sumber daya instance yang tidak mencukupi di wilayah tersebut dapat mengakibatkan kegagalan dalam membuat instance ECS atau memulai instance pay-as-you-go yang dihentikan dalam mode ekonomis dalam set penyebaran. Tunggu sejenak dan coba buat atau mulai ulang instance tersebut lagi.

  • Batasan Keluarga Instance

    Strategi penyebaran yang dapat digunakan mungkin bervariasi berdasarkan keluarga instance. Tabel berikut menggambarkan strategi penyebaran yang didukung oleh berbagai keluarga instance.

    Catatan

    Untuk memeriksa keluarga instance yang mendukung strategi penyebaran tertentu, panggil operasi DescribeDeploymentSetSupportedInstanceTypeFamily.

    Strategi Penyebaran

    Keluarga Instance yang Mendukung Strategi Penyebaran

    Strategi ketersediaan tinggi atau strategi grup ketersediaan tinggi

    • g8a, g8i, g8y, g7se, g7a, g7, g7h, g7t, g7ne, g7nex, g6, g6e, g6a, g5, g5ne, sn2ne, sn2, and sn1

    • c8a, c8i, c8y, c7se, c7, c7t, c7nex, c7a, c6, c6a, c6e, c5, ic5, and sn1ne

    • r8a, r8i, r8y, r7, r7se, r7t, r7a, r6, r6e, r6a, re6, re6p, r5, re4, se1ne, and se1

    • hfc8i, hfg8i, hfr8i, hfc7, hfg7, hfr7, hfc6, hfg6, hfr6, hfc5, and hfg5

    • d3c, d2s, d2c, d1, d1ne, d1-c14d3, and d1-c8d3

    • i3g, i3, i2, i2g, i2ne, i2gne, and i1

    • ebmg5, ebmc7, ebmg7, ebmr7, sccgn6, scch5, scch5s, sccg5, and sccg5s

    • e, t6, xn4, mn4, n4, e4, n2, and n1

    • gn6i

    Strategi latensi rendah

    • g8a, g8i, g8ae, and g8y

    • c8a, c8i, c8ae, and c8y

    • ebmc8i, ebmg8i, and ebmr8i

    • r8a, r8i, r8ae, and r8y

    • ebmc7, ebmg7, and ebmr7

Sumber daya yang diperlukan

Catatan

Biaya akan dikenakan untuk sumber daya tertentu yang digunakan dalam contoh ini. Lepaskan atau berhenti berlangganan sumber daya tersebut ketika Anda tidak lagi membutuhkannya.

Gunakan Terraform untuk membuat kolam node dan mengaitkan set penyebaran dengan kolam node

  1. Gunakan template berikut untuk membuat kolam node dan mengaitkan set penyebaran dengan kolam node:

    provider "alicloud" {
      region = var.region_id
    }
    
    variable "region_id" {
      type    = string
      default = "cn-shenzhen"
    }
    
    variable "name" {
      default = "tf-example"
    }
    
    variable "strategy" {
      default     = "Availability"
      description = "Strategi penyebaran. Nilai valid: Availability, AvailabilityGroup, LowLatency."
    }
    
    variable "cluster_spec" {
      type        = string
      description = "Spesifikasi klaster Kubernetes, yang bisa kosong. Nilai valid: ack.standard : Klaster dikelola standar; ack.pro.small : Klaster dikelola profesional."
      default     = "ack.pro.small"
    }
    
    # Tentukan zona vSwitches.
    variable "availability_zone" {
      description = "Zona ketersediaan vSwitches."
      default     = ["cn-shenzhen-c", "cn-shenzhen-e", "cn-shenzhen-f"]
    }
    
    # Blok CIDR yang digunakan untuk membuat vSwitches.
    variable "node_vswitch_cidrs" {
      type    = list(string)
      default = ["172.16.0.0/23", "172.16.2.0/23", "172.16.4.0/23"]
    }
    
    # Blok CIDR yang digunakan untuk membuat vSwitches Terway.
    variable "terway_vswitch_cidrs" {
      type    = list(string)
      default = ["172.16.208.0/20", "172.16.224.0/20", "172.16.240.0/20"]
    }
    
    # Tentukan tipe instance ECS dari node pekerja.
    variable "worker_instance_types" {
      description = "Tipe instance ECS yang digunakan untuk meluncurkan node pekerja."
      default     = ["ecs.g6.2xlarge", "ecs.g6.xlarge"]
    }
    
    # Tentukan kata sandi untuk node pekerja.
    variable "password" {
      description = "Kata sandi instance ECS."
      default     = "Test123456"
    }
    
    # Tentukan komponen yang ingin Anda instal di klaster ACK dikelola. Komponen termasuk Terway (plugin jaringan), csi-plugin (plugin volume), csi-provisioner (plugin volume), logtail-ds (plugin logging), controller NGINX Ingress, ack-arms-prometheus (plugin monitoring), dan ack-node-problem-detector (plugin diagnosa node).
    variable "cluster_addons" {
      type = list(object({
        name   = string
        config = string
      }))
    
      default = [
        {
          "name"   = "terway-eniip",
          "config" = "",
        },
        {
          "name"   = "logtail-ds",
          "config" = "{\"IngressDashboardEnabled\":\"true\"}",
        },
        {
          "name"   = "nginx-ingress-controller",
          "config" = "{\"IngressSlbNetworkType\":\"internet\"}",
        },
        {
          "name"   = "arms-prometheus",
          "config" = "",
        },
        {
          "name"   = "ack-node-problem-detector",
          "config" = "{\"sls_project_name\":\"\"}",
        },
        {
          "name"   = "csi-plugin",
          "config" = "",
        },
        {
          "name"   = "csi-provisioner",
          "config" = "",
        }
      ]
    }
    
    # Tentukan awalan nama klaster ACK dikelola.
    variable "k8s_name_prefix" {
      description = "Awalan nama yang digunakan untuk membuat klaster Kubernetes dikelola."
      default     = "tf-ack"
    }
    
    variable "vpc_name" {
      default = "tf-vpc"
    }
    variable "nodepool_name" {
      default = "default-nodepool"
    }
    
    # Nama sumber daya default.
    locals {
      k8s_name_terway = substr(join("-", [var.k8s_name_prefix, "terway"]), 0, 63)
    }
    
    # VPC.
    resource "alicloud_vpc" "default" {
      vpc_name   = var.vpc_name
      cidr_block = "172.16.0.0/12"
    }
    
    # vSwitches node.
    resource "alicloud_vswitch" "vswitches" {
      count      = length(var.node_vswitch_cidrs)
      vpc_id     = alicloud_vpc.default.id
      cidr_block = element(var.node_vswitch_cidrs, count.index)
      zone_id    = element(var.availability_zone, count.index)
    }
    
    # vSwitches pod.
    resource "alicloud_vswitch" "terway_vswitches" {
      count      = length(var.terway_vswitch_cidrs)
      vpc_id     = alicloud_vpc.default.id
      cidr_block = element(var.terway_vswitch_cidrs, count.index)
      zone_id    = element(var.availability_zone, count.index)
    }
    
    # Buat set penyebaran.
    resource "alicloud_ecs_deployment_set" "default" {
      strategy            = var.strategy
      domain              = "Default"
      granularity         = "Host"
      deployment_set_name = var.name
      description         = "example_value"
    }
    
    # Klaster ACK dikelola.
    resource "alicloud_cs_managed_kubernetes" "default" {
      name         = local.k8s_name_terway # Nama klaster ACK.
      cluster_spec = var.cluster_spec      # Buat klaster ACK Pro.
      worker_vswitch_ids           = split(",", join(",", alicloud_vswitch.vswitches.*.id))        # vSwitches yang digunakan oleh kolam node. Tentukan satu atau lebih ID vSwitch. vSwitches harus berada di zona yang ditentukan oleh availability_zone.
      pod_vswitch_ids              = split(",", join(",", alicloud_vswitch.terway_vswitches.*.id)) # vSwitches yang digunakan oleh pod.
      new_nat_gateway              = true                                                          # Tentukan apakah akan membuat NAT gateway saat klaster ACK dibuat. Nilai default: true.
      service_cidr                 = "10.11.0.0/16"                                                # Blok CIDR pod. Jika Anda mengatur parameter cluster_network_type ke flannel, parameter ini diperlukan. Blok CIDR pod tidak boleh sama dengan blok CIDR VPC atau blok CIDR klaster ACK lainnya di VPC. Anda tidak dapat mengubah blok CIDR pod setelah klaster dibuat. Jumlah maksimum host dalam klaster: 256.
      slb_internet_enabled         = true                                                          # Tentukan apakah akan membuat instance SLB yang menghadap internet untuk server API klaster. Nilai default: false.
      enable_rrsa                  = true
      control_plane_log_components = ["apiserver", "kcm", "scheduler", "ccm"] # Log kontrol plane.
    
      dynamic "addons" { # Manajemen komponen.
        for_each = var.cluster_addons
        content {
          name   = lookup(addons.value, "name", var.cluster_addons)
          config = lookup(addons.value, "config", var.cluster_addons)
        }
      }
    }
    
    # Kolam node reguler.
    resource "alicloud_cs_kubernetes_node_pool" "default" {
      cluster_id           = alicloud_cs_managed_kubernetes.default.id              # Nama klaster ACK.
      node_pool_name       = var.nodepool_name                                      # Nama kolam node.
      vswitch_ids          = split(",", join(",", alicloud_vswitch.vswitches.*.id)) # vSwitches yang digunakan oleh kolam node. Tentukan satu atau lebih ID vSwitch. vSwitches harus berada di zona yang ditentukan oleh availability_zone.
      instance_types       = var.worker_instance_types
      instance_charge_type = "PostPaid"
      runtime_name         = "containerd"
      desired_size          = 2            # Jumlah node yang diharapkan dalam kolam node.
      password              = var.password # Kata sandi yang digunakan untuk masuk ke klaster menggunakan SSH.
      install_cloud_monitor = true         # Tentukan apakah akan menginstal agen CloudMonitor pada node dalam klaster.
      system_disk_category  = "cloud_essd"
      system_disk_size      = 100
      image_type            = "AliyunLinux"
      deployment_set_id     = alicloud_ecs_deployment_set.default.id
    
      data_disks {              # Konfigurasi disk data node.
        category = "cloud_essd" # Kategori disk.
        size     = 120          # Ukuran disk.
      }
    }
    
  2. Jalankan perintah berikut untuk menginisialisasi lingkungan runtime Terraform:

    terraform init

    Jika informasi berikut dikembalikan, Terraform telah diinisialisasi:

    Terraform has been successfully initialized!
    
    You may now begin working with Terraform. Try running "terraform plan" to see
    any changes that are required for your infrastructure. All Terraform commands
    should now work.
    
    If you ever set or change modules or backend configuration for Terraform,
    rerun this command to reinitialize your working directory. If you forget, other
    commands will detect it and remind you to do so if necessary.
  3. Jalankan perintah berikut untuk membuat kolam node:

    terraform apply 

    Jika informasi berikut dikembalikan, kolam node telah dikaitkan dengan set penyebaran:

    Apakah Anda ingin melakukan tindakan ini?
      Terraform akan melakukan tindakan yang dijelaskan di atas.
      Hanya 'yes' yang akan diterima untuk menyetujui.
    
      Masukkan nilai: yes
    
    ...
    
    Apply complete! Resources: 10 ditambahkan, 0 diubah, 0 dihapus.
  4. Verifikasi hasilnya

    Jalankan perintah terraform show

    Jalankan perintah berikut untuk memeriksa sumber daya yang dibuat oleh Terraform:

    terraform show

    image

    Masuk ke konsol ACK

    Anda dapat menemukan kolam node yang Anda buat di halaman Node Pools di konsol ACK. Anda dapat mengklik Edit di kolom Actions untuk melihat set penyebaran yang terkait.image

Bersihkan sumber daya

Jika Anda tidak lagi memerlukan sumber daya yang dibuat atau dikelola oleh Terraform sebelumnya, jalankan perintah terraform destroy untuk melepaskan sumber daya. Untuk informasi lebih lanjut tentang perintah terraform destroy, lihat Perintah Umum.

terraform destroy

Contoh

Catatan

Anda dapat menjalankan kode contoh dalam topik ini hanya dengan beberapa klik. Klik di sini untuk menjalankan kode contoh.

Kode contoh

provider "alicloud" {
  region = var.region_id
}

variable "region_id" {
  type    = string
  default = "cn-shenzhen"
}

variable "name" {
  default = "tf-example"
}

variable "strategy" {
  default     = "Availability"
  description = "Strategi penyebaran. Nilai valid: Availability, AvailabilityGroup, LowLatency."
}

variable "cluster_spec" {
  type        = string
  description = "Spesifikasi klaster Kubernetes, yang bisa kosong. Nilai valid: ack.standard : Klaster dikelola standar; ack.pro.small : Klaster dikelola profesional."
  default     = "ack.pro.small"
}

# Tentukan zona vSwitches.
variable "availability_zone" {
  description = "Zona ketersediaan vSwitches."
  default     = ["cn-shenzhen-c", "cn-shenzhen-e", "cn-shenzhen-f"]
}

# Blok CIDR yang digunakan untuk membuat vSwitches.
variable "node_vswitch_cidrs" {
  type    = list(string)
  default = ["172.16.0.0/23", "172.16.2.0/23", "172.16.4.0/23"]
}

# Blok CIDR yang digunakan untuk membuat vSwitches Terway.
variable "terway_vswitch_cidrs" {
  type    = list(string)
  default = ["172.16.208.0/20", "172.16.224.0/20", "172.16.240.0/20"]
}

# Tentukan tipe instance ECS dari node pekerja.
variable "worker_instance_types" {
  description = "Tipe instance ECS yang digunakan untuk meluncurkan node pekerja."
  default     = ["ecs.g6.2xlarge", "ecs.g6.xlarge"]
}

# Tentukan kata sandi untuk node pekerja.
variable "password" {
  description = "Kata sandi instance ECS."
  default     = "Test123456"
}

# Tentukan komponen yang ingin Anda instal di klaster ACK dikelola. Komponen termasuk Terway (plugin jaringan), csi-plugin (plugin volume), csi-provisioner (plugin volume), logtail-ds (plugin logging), controller NGINX Ingress, ack-arms-prometheus (plugin monitoring), dan ack-node-problem-detector (plugin diagnosa node).
variable "cluster_addons" {
  type = list(object({
    name   = string
    config = string
  }))

  default = [
    {
      "name"   = "terway-eniip",
      "config" = "",
    },
    {
      "name"   = "logtail-ds",
      "config" = "{\"IngressDashboardEnabled\":\"true\"}",
    },
    {
      "name"   = "nginx-ingress-controller",
      "config" = "{\"IngressSlbNetworkType\":\"internet\"}",
    },
    {
      "name"   = "arms-prometheus",
      "config" = "",
    },
    {
      "name"   = "ack-node-problem-detector",
      "config" = "{\"sls_project_name\":\"\"}",
    },
    {
      "name"   = "csi-plugin",
      "config" = "",
    },
    {
      "name"   = "csi-provisioner",
      "config" = "",
    }
  ]
}

# Tentukan awalan nama klaster ACK dikelola.
variable "k8s_name_prefix" {
  description = "Awalan nama yang digunakan untuk membuat klaster Kubernetes dikelola."
  default     = "tf-ack"
}

variable "vpc_name" {
  default = "tf-vpc"
}
variable "nodepool_name" {
  default = "default-nodepool"
}

# Nama sumber daya default.
locals {
  k8s_name_terway = substr(join("-", [var.k8s_name_prefix, "terway"]), 0, 63)
}

# VPC.
resource "alicloud_vpc" "default" {
  vpc_name   = var.vpc_name
  cidr_block = "172.16.0.0/12"
}

# vSwitches node.
resource "alicloud_vswitch" "vswitches" {
  count      = length(var.node_vswitch_cidrs)
  vpc_id     = alicloud_vpc.default.id
  cidr_block = element(var.node_vswitch_cidrs, count.index)
  zone_id    = element(var.availability_zone, count.index)
}

# vSwitches pod.
resource "alicloud_vswitch" "terway_vswitches" {
  count      = length(var.terway_vswitch_cidrs)
  vpc_id     = alicloud_vpc.default.id
  cidr_block = element(var.terway_vswitch_cidrs, count.index)
  zone_id    = element(var.availability_zone, count.index)
}

# Buat set penyebaran.
resource "alicloud_ecs_deployment_set" "default" {
  strategy            = var.strategy
  domain              = "Default"
  granularity         = "Host"
  deployment_set_name = var.name
  description         = "example_value"
}

# Klaster ACK dikelola.
resource "alicloud_cs_managed_kubernetes" "default" {
  name         = local.k8s_name_terway # Nama klaster ACK.
  cluster_spec = var.cluster_spec      # Buat klaster ACK Pro.
  worker_vswitch_ids           = split(",", join(",", alicloud_vswitch.vswitches.*.id))        # vSwitches yang digunakan oleh kolam node. Tentukan satu atau lebih ID vSwitch. vSwitches harus berada di zona yang ditentukan oleh availability_zone.
  pod_vswitch_ids              = split(",", join(",", alicloud_vswitch.terway_vswitches.*.id)) # vSwitch yang digunakan oleh pod.
  new_nat_gateway              = true                                                          # Tentukan apakah akan membuat NAT gateway saat klaster ACK dibuat. Nilai default: true.
  service_cidr                 = "10.11.0.0/16"                                                # Blok CIDR pod. Jika Anda mengatur parameter cluster_network_type ke flannel, parameter ini diperlukan. Blok CIDR pod tidak boleh sama dengan blok CIDR VPC atau blok CIDR klaster ACK lainnya di VPC. Anda tidak dapat mengubah blok CIDR pod setelah klaster dibuat. Jumlah maksimum host dalam klaster: 256.
  slb_internet_enabled         = true                                                          # Tentukan apakah akan membuat instance SLB yang menghadap internet untuk server API klaster. Nilai default: false.
  enable_rrsa                  = true
  control_plane_log_components = ["apiserver", "kcm", "scheduler", "ccm"] # Log kontrol plane.

  dynamic "addons" { # Manajemen komponen.
    for_each = var.cluster_addons
    content {
      name   = lookup(addons.value, "name", var.cluster_addons)
      config = lookup(addons.value, "config", var.cluster_addons)
    }
  }
}

# Kolam node reguler.
resource "alicloud_cs_kubernetes_node_pool" "default" {
  cluster_id           = alicloud_cs_managed_kubernetes.default.id              # Nama klaster ACK.
  node_pool_name       = var.nodepool_name                                      # Nama kolam node.
  vswitch_ids          = split(",", join(",", alicloud_vswitch.vswitches.*.id)) # vSwitches yang digunakan oleh kolam node. Tentukan satu atau lebih ID vSwitch. vSwitches harus berada di zona yang ditentukan oleh availability_zone.
  instance_types       = var.worker_instance_types
  instance_charge_type = "PostPaid"
  runtime_name         = "containerd"
  desired_size          = 2            # Jumlah node yang diharapkan dalam kolam node.
  password              = var.password # Kata sandi yang digunakan untuk masuk ke klaster menggunakan SSH.
  install_cloud_monitor = true         # Tentukan apakah akan menginstal agen CloudMonitor pada node dalam klaster.
  system_disk_category  = "cloud_essd"
  system_disk_size      = 100
  image_type            = "AliyunLinux"
  deployment_set_id     = alicloud_ecs_deployment_set.default.id

  data_disks {              # Konfigurasi disk data node.
    category = "cloud_essd" # Kategori disk.
    size     = 120          # Ukuran disk.
  }
}

Jika Anda ingin melihat contoh yang lebih lengkap, kunjungi Contoh Lainnya dan pilih direktori layanan cloud yang sesuai.

Referensi