Mengonfigurasi pembuatan otomatis node pool

Anda dapat mengurangi jumlah pengelolaan infrastruktur manual di cluster Standard Google Kubernetes Engine (GKE) dengan mengizinkan GKE membuat node pool secara otomatis untuk Pod yang tertunda. Dokumen ini menunjukkan cara mengaktifkan pembuatan otomatis node pool untuk cluster dan workload, menetapkan nilai default untuk node yang dibuat otomatis, dan memicu pembuatan otomatis untuk beberapa kasus penggunaan umum.

Dokumen ini ditujukan bagi administrator, operator, dan developer cluster yang mengelola infrastruktur di, dan men-deploy workload ke, cluster Standar. Untuk mengetahui informasi selengkapnya tentang cara kerja pembuatan otomatis node pool dan berbagai metode pengaktifan (seperti ComputeClass dan penyediaan otomatis node tingkat cluster), lihat Tentang pembuatan otomatis node pool.

Batasan

Pembuatan otomatis node pool memiliki batasan berikut:

  • Semua batasan autoscaler cluster juga berlaku untuk pembuatan otomatis kumpulan node.
  • Cluster yang memiliki lebih dari 200 total kumpulan node mungkin mengalami peningkatan latensi selama penskalaan otomatis. Konfigurasi apa pun yang memicu pembuatan node pool baru, seperti pemisahan beban kerja atau penggunaan beberapa ComputeClass, akan meningkatkan jumlah ini. Untuk mengetahui informasi selengkapnya tentang batas cluster, lihat batas dan praktik terbaik di "Merencanakan cluster besar".
  • Setiap batas resource yang Anda tetapkan untuk cluster saat mengaktifkan penyediaan otomatis node juga berlaku untuk node pool yang dibuat GKE untuk ComputeClass.
  • Setelan berikut tidak didukung oleh ComputeClasses:
    • Upgrade lonjakan atau upgrade blue-green.
    • Integritas node dan booting aman.
  • Untuk mengaktifkan pembuatan otomatis node pool untuk ComputeClass di GKE versi yang lebih lama dari 1.33.3-gke.1136000, Anda juga harus mengaktifkan penyediaan otomatis node tingkat cluster. Batasan ini tidak berlaku di GKE versi 1.33.3-gke.1136000 dan yang lebih baru.

Sebelum memulai

Sebelum memulai, pastikan Anda telah melakukan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Jika ingin menggunakan Google Cloud CLI untuk tugas ini, instal lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung menjalankan perintah dalam dokumen ini.

Persyaratan

Anda dapat mengaktifkan pembuatan otomatis node pool untuk seluruh cluster di versi GKE mana pun menggunakan fitur penyediaan otomatis node. Jika Anda ingin menggunakan ComputeClass untuk mengaktifkan pembuatan otomatis node pool di tingkat workload, dan Anda tidak ingin mengaktifkan penyediaan otomatis node, cluster Anda harus memenuhi persyaratan berikut:

  • Gunakan GKE versi 1.33.3-gke.1136000 atau yang lebih baru.
  • Gunakan saluran rilis Cepat.

Untuk memicu pembuatan otomatis node pool untuk konfigurasi node tertentu, Anda harus memenuhi persyaratan versi yang sesuai. Untuk mengetahui informasi selengkapnya tentang dukungan versi untuk berbagai konfigurasi, lihat Catatan rilis GKE (fitur baru) atau dokumentasi untuk kasus penggunaan Anda.

Mengaktifkan pembuatan otomatis tingkat beban kerja

Anda dapat mengaktifkan pembuatan otomatis node pool untuk workload tertentu di cluster dengan menggunakan ComputeClass. Kolom nodePoolAutoCreation dalam spesifikasi ComputeClass mengontrol apakah GKE dapat membuat node pool baru untuk Pod yang memilih ComputeClass tersebut. Pada GKE versi 1.33.3-gke.1136000 dan yang lebih baru, Anda dapat mengaktifkan pembuatan otomatis node pool untuk ComputeClass meskipun cluster tidak mengaktifkan penyediaan otomatis node. Pada versi yang lebih lama dari 1.33.3-gke.1136000, Anda juga harus mengaktifkan penyediaan otomatis node tingkat cluster.

Untuk mengaktifkan pembuatan otomatis node pool untuk ComputeClass, ikuti langkah-langkah berikut:

  1. Gunakan cluster Standar baru atau yang sudah ada yang memenuhi persyaratan berikut:

    • Menggunakan GKE versi 1.33.3-gke.1136000 atau yang lebih baru.
    • Menggunakan saluran rilis Cepat.

    Anda dapat secara opsional membuat cluster Standar baru.

  2. Jika cluster Anda tidak memenuhi persyaratan pada langkah sebelumnya, aktifkan penyediaan otomatis node tingkat cluster.

  3. Simpan contoh ComputeClass berikut sebagai file YAML:

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      -  machineFamily: n4
      -  machineFamily: n2
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    Ganti COMPUTE_CLASS dengan nama untuk ComputeClass baru. Untuk mengetahui informasi selengkapnya tentang kolom yang tersedia di ComputeClasses, lihat ComputeClass CustomResourceDefinition.

  4. Terapkan manifes ComputeClass ke cluster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Ganti PATH_TO_COMPUTECLASS_MANIFEST dengan jalur ke file manifes ComputeClass.

  5. Simpan contoh Deployment berikut, yang memilih ComputeClass, sebagai helloweb-deploy.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: helloweb
      labels:
        app: hello
    spec:
      selector:
        matchLabels:
          app: hello
      template:
        metadata:
          labels:
            app: hello
        spec:
          nodeSelector:
            # Replace with the name of a compute class
            cloud.google.com/compute-class: COMPUTE_CLASS 
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            ports:
            - containerPort: 8080
            resources:
              requests:
                cpu: "250m"
                memory: "1Gi"

  6. Buat Deployment di cluster:

    kubectl apply -f helloweb-deploy.yaml
    
  7. Untuk memverifikasi bahwa GKE membuat node pool baru untuk Pod Anda, dapatkan daftar node pool di cluster Anda:

    gcloud container node-pools list \
        --cluster=CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster Anda.
    • CONTROL_PLANE_LOCATION: region atau zona bidang kontrol cluster, seperti us-central1 atau us-central1-a.

Mengaktifkan penyediaan otomatis node tingkat cluster

Untuk mengaktifkan pembuatan otomatis node pool untuk seluruh cluster GKE Anda, gunakan setelan penyediaan otomatis node. Penyediaan otomatis node memungkinkan GKE membuat node pool baru untuk workload yang tertunda di seluruh cluster berdasarkan konfigurasi dalam spesifikasi Pod atau di ComputeClass. Anda dapat mengaktifkan penyediaan otomatis node untuk cluster baru atau yang sudah ada.

Sebelum mengaktifkan penyediaan otomatis node, rencanakan ukuran rentang alamat IPv4 utama subnet VPC Anda. GKE menggunakan rentang alamat IP ini sebagai rentang alamat IP node utama. Bergantung pada ukuran dan skala cluster Anda, rentang alamat IP node default mungkin tidak memiliki cukup alamat IP untuk ditetapkan ke node baru. Jika Anda memperbarui ukuran rentang alamat IP node setelah membuat cluster, Anda harus memperbarui aturan firewall cluster GKE untuk mengizinkan traffic dari alamat IP baru.

Untuk mendapatkan node pool yang dibuat otomatis di GKE versi yang lebih lama dari 1.33.3-gke.1136000, Anda harus melakukan langkah-langkah di bagian ini. Anda juga dapat mengaktifkan penyediaan otomatis node untuk cluster yang ada dengan mengedit konfigurasi cluster di konsol. Google Cloud

Untuk mengaktifkan penyediaan otomatis node saat Anda membuat cluster baru, pilih salah satu opsi berikut:

Konsol

  1. Di konsol Google Cloud , buka halaman Create a Kubernetes cluster.

    Buka Membuat cluster Kubernetes

  2. Di halaman Cluster basics, tentukan nama dan lokasi untuk cluster baru Anda.

  3. Di menu navigasi, klik Automation.

  4. Centang kotak Enable node auto-provisioning. Bagian Batas akan muncul.

  5. Tentukan batas untuk CPU dan memori.

  6. Klik Simpan perubahan.

gcloud

gcloud container clusters create CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning \
    --min-cpu=MINIMUM_CPU \
    --min-memory=MINIMUM_MEMORY \
    --max-cpu=MAXIMUM_CPU \
    --max-memory=MAXIMUM_MEMORY \
    --autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster untuk mengaktifkan penyediaan otomatis node.
  • CONTROL_PLANE_LOCATION: region atau zona bidang kontrol cluster, seperti us-central1 atau us-central1-a.
  • MINIMUM_CPU: jumlah minimum core dalam cluster.
  • MINIMUM_MEMORY: kapasitas memori minimum, dalam GiB, di cluster.
  • MAXIMUM_CPU: jumlah maksimum core dalam cluster. Batas ini berlaku untuk jumlah core CPU di semua node baru dan yang sudah ada dalam cluster, termasuk kumpulan node yang dibuat secara manual.
  • MAXIMUM_MEMORY: kapasitas memori maksimum, dalam GiB, di cluster. Batas ini berlaku untuk jumlah kapasitas memori di semua kumpulan node baru dan yang sudah ada dalam cluster, termasuk kumpulan node yang dibuat secara manual.

Mengonfigurasi setelan dengan file konfigurasi penyediaan otomatis node

Anda dapat mengonfigurasi setelan konfigurasi node dan batas resource untuk penyediaan otomatis node menggunakan file konfigurasi YAML. File konfigurasi memungkinkan Anda menentukan nilai default secara deklaratif untuk node pool yang dibuat otomatis dan memungkinkan Anda melakukan konfigurasi lanjutan, seperti mengaktifkan perbaikan otomatis node. File ini tidak terkait dengan ComputeClass, yang merupakan resource kustom Kubernetes. Sebagai gantinya, file konfigurasi ada sebagai alternatif yang lebih dapat di-extend daripada menggunakan flag command line untuk menentukan setelan penyediaan otomatis node. Untuk mengetahui informasi selengkapnya, lihat Setelan default tingkat cluster dengan file konfigurasi.

Untuk membuat dan menggunakan file konfigurasi, ikuti langkah-langkah berikut:

  1. Di editor teks, buat file YAML di jalur yang dapat diakses oleh Google Cloud CLI.
  2. Tambahkan konfigurasi yang ingin Anda tetapkan atau ubah, seperti dalam contoh berikut:

    resourceLimits:
      - resourceType: 'cpu'
        minimum: 4
        maximum: 10
      - resourceType: 'memory'
        maximum: 64
      - resourceType: 'nvidia-tesla-t4'
        maximum: 4
    management:
      autoRepair: true
      autoUpgrade: true
    shieldedInstanceConfig:
      enableSecureBoot: true
      enableIntegrityMonitoring: true
    

    Contoh ini memiliki setelan berikut untuk penyediaan otomatis node:

    • resourceLimits: menetapkan batas resource untuk CPU, kapasitas memori, dan GPU NVIDIA T4 di cluster. Batas ini berlaku untuk jumlah kapasitas resource dalam cluster, termasuk dalam kumpulan node yang dibuat secara manual.
    • management: mengaktifkan perbaikan otomatis node dan upgrade otomatis node untuk semua node pool baru yang dibuat otomatis di cluster.
    • shieldedInstanceConfig: mengaktifkan booting aman dan pemantauan integritas node untuk semua node pool baru yang dibuat otomatis di cluster.
  3. Berikan file konfigurasi ke GKE dengan menentukan flag --autoprovisioning-config-file dan flag --enable-autoprovisioning untuk cluster baru atau yang sudah ada:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster.
    • PATH_TO_CONFIGURATION_FILE: jalur ke file konfigurasi.

Setelah Anda menerapkan file konfigurasi ke cluster, GKE akan menggunakan setelan dalam file untuk node pool yang baru dibuat secara otomatis di cluster. Setelan ini tidak berlaku untuk node pool yang sudah ada yang dibuat GKE di cluster.

Mengonfigurasi batas resource untuk penyediaan otomatis node

Saat menggunakan penyediaan otomatis node tingkat cluster, Anda harus mengonfigurasi batas untuk jumlah total resource yang dapat dimiliki cluster di semua node pool-nya. Untuk mengaktifkan penyediaan otomatis node bagi cluster, Anda harus menentukan batas untuk kapasitas CPU dan memori di cluster. Selain itu, untuk menggunakan jenis resource terlampir lainnya seperti GPU dan TPU, Anda harus menentukan batas untuk resource tersebut. Batas ini hanya diperlukan jika Anda mengaktifkan setelan penyediaan otomatis node untuk cluster Anda. Jika hanya menggunakan ComputeClass untuk mendapatkan kumpulan node yang dibuat secara otomatis, Anda tidak perlu mengonfigurasi batas resource.

Anda dapat menambahkan atau mengubah batas resource untuk pembuatan otomatis node pool menggunakan salah satu metode berikut:

Untuk mengonfigurasi batas resource untuk cluster yang ada, pilih salah satu opsi berikut:

Konsol

  1. Di konsol Google Cloud , buka halaman Kubernetes clusters.

    Buka cluster Kubernetes

  2. Klik nama cluster. Halaman Cluster details akan terbuka.

  3. Klik tab Detail.

  4. Di bagian Automation, di baris Node auto-provisioning, klik Edit. Panel Edit node auto-provisioning akan terbuka.

  5. Centang kotak Enable node auto-provisioning.

  6. Di bagian Limits, tentukan nilai minimum dan maksimum untuk kapasitas CPU dan memori di cluster.

  7. Untuk mengonfigurasi batas resource lain, seperti GPU atau TPU, lakukan hal berikut:

    1. Klik Tambahkan referensi.
    2. Dari daftar drop-down Resource type, pilih model GPU atau jenis mesin TPU, seperti NVIDIA A100 80GB atau ct5p.
    3. Tentukan nilai minimum dan maksimum untuk resource.
  8. Opsional: Di bagian Lokasi node pool, pilih zona tertentu agar GKE membuat node di zona tersebut. Misalnya, jika Anda berencana menjalankan workload GPU, pilih zona yang memiliki ketersediaan tinggi untuk jenis GPU yang Anda pilih.

  9. Klik Simpan perubahan.

gcloud

Jalankan salah satu perintah berikut:

  • Tentukan batas resource CPU dan memori:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --min-cpu=MINIMUM_CPU \
        --min-memory=MINIMUM_MEMORY \
        --max-cpu=MAXIMUM_CPU \
        --max-memory=MAXIMUM_MEMORY
    

    Ganti kode berikut:

    • MINIMUM_CPU: jumlah minimum core dalam cluster.
    • MINIMUM_MEMORY: kapasitas memori minimum, dalam GiB, di cluster.
    • MAXIMUM_CPU: jumlah maksimum core dalam cluster. Batas ini berlaku untuk jumlah core CPU di semua kumpulan node dalam cluster, termasuk kumpulan node yang dibuat secara manual.
    • MAXIMUM_MEMORY: kapasitas memori maksimum, dalam GiB, di cluster. Batas ini berlaku untuk jumlah kapasitas memori di semua kumpulan node dalam cluster, termasuk kumpulan node yang dibuat secara manual.
  • Tentukan batas resource GPU:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --min-cpu=MINIMUM_CPU \
        --min-memory=MINIMUM_MEMORY \
        --max-cpu=MAXIMUM_CPU \
        --max-memory=MAXIMUM_MEMORY \
        --min-accelerator=type=GPU_TYPE,count=MINIMUM_GPU_COUNT \
        --max-accelerator=type=GPU_TYPE,count=MAXIMUM_GPU_COUNT
    

    Ganti kode berikut:

    • GPU_TYPE: jenis GPU yang akan ditetapkan batasnya, seperti nvidia-l4.
    • MINIMUM_GPU_COUNT: jumlah minimum GPU dari jenis yang ditentukan yang dapat dimiliki cluster.
    • MAXIMUM_GPU_COUNT: jumlah maksimum GPU dari jenis yang ditentukan yang dapat dimiliki cluster.
  • Tentukan batas resource TPU:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --min-cpu=MINIMUM_CPU \
        --min-memory=MINIMUM_MEMORY \
        --max-cpu=MAXIMUM_CPU \
        --max-memory=MAXIMUM_MEMORY \
        --min-accelerator=type=TPU_TYPE,count=MINIMUM_TPU_COUNT \
        --max-accelerator=type=TPU_TYPE,count=MAXIMUM_TPU_COUNT
    

    Ganti kode berikut:

    • TPU_TYPE: jenis TPU untuk menetapkan batas. Nilai berikut didukung:
      • tpu-v4-podslice: TPU v4.
      • tpu-v5-lite-podslice: TPU v5e dengan jenis mesin yang diawali dengan ct5lp-.
      • tpu-v5p-slice: TPU v5e dengan jenis mesin yang diawali dengan ct5p-.
      • tpu-v6e-slice: TPU Trillium.
    • MINIMUM_TPU_COUNT: jumlah minimum chip TPU dari jenis yang ditentukan yang dapat dimiliki cluster. Jika nilai yang Anda tentukan lebih besar daripada jumlah chip TPU dalam slice TPU multi-host, slice TPU Anda mungkin tidak dapat diturunkan skalanya.
    • MAXIMUM_TPU_COUNT: jumlah maksimum chip TPU dari jenis yang ditentukan yang dapat dimiliki cluster. Untuk slice TPU multi-host, tentukan nilai yang lebih besar dari jumlah chip di setiap slice sehingga GKE dapat menskalakan slice secara atomik. Jumlah chip dalam slice adalah hasil kali topologi TPU. Misalnya, jika topologinya adalah 2x2x2, jumlah chip dalam slice adalah 8, yang berarti nilai MAXIMUM_TPU_COUNT harus lebih besar dari 8.

File konfigurasi

  1. Di file konfigurasi, tentukan salah satu set kolom berikut di kolom resourceLimits:

    • Tentukan batas resource CPU dan memori:

      resourceLimits:
        - resourceType: 'cpu'
          minimum: MINIMUM_CPU
          maximum: MAXIMUM_CPU
        - resourceType: 'memory'
          minimum: MINIMUM_MEMORY
          maximum: MAXIMUM_MEMORY
      

      Ganti kode berikut:

      • MINIMUM_CPU: jumlah minimum core dalam cluster.
      • MINIMUM_MEMORY: kapasitas memori minimum, dalam GiB, di cluster.
      • MAXIMUM_CPU: jumlah maksimum core dalam cluster. Batas ini berlaku untuk jumlah core CPU di semua kumpulan node dalam cluster, termasuk kumpulan node yang dibuat secara manual.
      • MAXIMUM_MEMORY: kapasitas memori maksimum, dalam GiB, di cluster. Batas ini berlaku untuk jumlah kapasitas memori di semua kumpulan node dalam cluster, termasuk kumpulan node yang dibuat secara manual.
    • Tentukan batas resource GPU:

      resourceLimits:
        - resourceType: 'cpu'
          minimum: MINIMUM_CPU
          maximum: MAXIMUM_CPU
        - resourceType: 'memory'
          minimum: MINIMUM_MEMORY
          maximum: MAXIMUM_MEMORY
        - resourceType: 'GPU1_TYPE'
          minimum: MINIMUM_GPU1_COUNT
          maximum: MAXIMUM_GPU1_COUNT
        - resourceType: 'GPU2_TYPE'
          minimum: MINIMUM_GPU2_COUNT
          maximum: MAXIMUM_GPU2_COUNT
      

      Ganti kode berikut:

      • GPU1_TYPE,GPU2_TYPE: jenis GPU yang akan ditetapkan batasnya, seperti nvidia-l4.
      • MINIMUM_GPU1_COUNT,MINIMUM_GPU2_COUNT: jumlah minimum GPU dari jenis yang ditentukan yang dapat dimiliki cluster.
      • MAXIMUM_GPU1_COUNT,MAXIMUM_GPU2_COUNT: jumlah maksimum GPU dari jenis yang ditentukan yang dapat dimiliki cluster.
    • Tentukan batas resource TPU:

      resourceLimits:
        - resourceType: 'cpu'
          minimum: MINIMUM_CPU
          maximum: MAXIMUM_CPU
        - resourceType: 'memory'
          minimum: MINIMUM_MEMORY
          maximum: MAXIMUM_MEMORY
        - resourceType: 'TPU1_TYPE'
          minimum: MINIMUM_TPU1_COUNT
          maximum: MAXIMUM_TPU1_COUNT
        - resourceType: 'TPU2_TYPE'
          minimum: MINIMUM_TPU2_COUNT
          maximum: MAXIMUM_TPU2_COUNT
      

      Ganti kode berikut:

      • TPU1_TYPE,TPU2_TYPE: jenis TPU untuk menetapkan batas. Nilai berikut ini didukung:
        • tpu-v4-podslice: TPU v4.
        • tpu-v5-lite-podslice: TPU v5e dengan jenis mesin yang diawali dengan ct5lp-.
        • tpu-v5p-slice: TPU v5e dengan jenis mesin yang diawali dengan ct5p-.
        • tpu-v6e-slice: TPU Trillium.
      • MINIMUM_TPU1_COUNT,MINIMUM_TPU2_COUNT: jumlah minimum chip TPU dari jenis yang ditentukan yang dapat dimiliki cluster. Jika nilai yang Anda tentukan lebih besar daripada jumlah chip TPU dalam slice TPU multi-host, slice TPU Anda mungkin tidak diturunkan skalanya.
      • MAXIMUM_TPU1_COUNT,MAXIMUM_TPU2_COUNT: jumlah maksimum chip TPU dari jenis yang ditentukan yang dapat dimiliki cluster. Untuk slice TPU multi-host, tentukan nilai yang lebih besar daripada jumlah chip di setiap slice agar GKE dapat menskalakan slice secara atomik. Jumlah chip dalam slice adalah hasil kali topologi TPU. Misalnya, jika topologi untuk TPU1_TYPE adalah 2x2x2, jumlah chip dalam slice adalah 8, yang berarti nilai MAXIMUM_TPU1_COUNT harus lebih besar dari 8.
  2. Berikan file konfigurasi ke GKE dengan menentukan flag --autoprovisioning-config-file dan flag --enable-autoprovisioning untuk cluster baru atau yang sudah ada:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster.
    • PATH_TO_CONFIGURATION_FILE: jalur ke file konfigurasi.

Menandai node pool yang ada sebagai dibuat otomatis

Setelah mengaktifkan penyediaan otomatis node tingkat cluster, Anda dapat menandai node pool yang ada di cluster sebagai dibuat otomatis. GKE mengelola penskalaan di node pool ini, termasuk menghapus node pool saat kosong. Anda dapat menandai node pool yang dibuat secara manual sebagai dibuat otomatis agar GKE dapat mengelola node pool untuk Anda.

Jika Anda menonaktifkan penyediaan otomatis untuk cluster, GKE akan berhenti mengelola semua node pool yang ada dan dibuat secara otomatis di cluster. Jika Anda mengaktifkan kembali penyediaan otomatis untuk cluster nanti, GKE tidak akan melanjutkan pengelolaan node pool yang ada tersebut secara otomatis. Anda harus menandai node pool yang sudah ada tersebut sebagai dibuat otomatis.

Untuk menandai node pool yang sudah ada sebagai dibuat otomatis, jalankan perintah berikut:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning

Ganti NODE_POOL_NAME dengan nama node pool.

Mengonfigurasi setelan default untuk node pool yang dibuat otomatis

GKE menggunakan ComputeClass dan spesifikasi Pod Anda untuk menentukan jenis node yang dapat menjalankan Pod yang tertunda secara optimal. Secara opsional, Anda dapat mengonfigurasi setelan default yang diterapkan GKE ke node pool yang dibuat otomatis, seperti akun layanan Identity and Access Management (IAM) kustom untuk node atau konfigurasi boot disk kustom. Setelan default ini menggantikan nilai default yang sesuai yang ditetapkan Google untuk cluster Anda. Misalnya, Anda dapat menetapkan image node Ubuntu sebagai default untuk node pool yang dibuat otomatis, yang menggantikan image node Container-Optimized OS default GKE.

Anda dapat mengonfigurasi setelan default di tingkat cluster menggunakan penyediaan otomatis node atau di tingkat workload di ComputeClasses. Sebelum Anda mengonfigurasi setelan di salah satu tingkat ini, pertimbangkan hal berikut:

  • Setelan tingkat cluster berlaku untuk node pool yang dibuat otomatis di cluster, dan setelan ComputeClass hanya berlaku untuk workload yang menggunakan ComputeClass tersebut.
  • Jika Anda menentukan setelan default yang sama di ComputeClass dan di tingkat cluster, GKE akan menggunakan setelan ComputeClass untuk workload yang menggunakan ComputeClass.
  • Nilai default yang Anda konfigurasi hanya berlaku untuk node pool yang dibuat otomatis baru. Node pool yang ada tidak terpengaruh.

Bagian berikut menunjukkan cara mengonfigurasi setelan default tertentu.

Menetapkan image node default

Pilih salah satu opsi berikut:

ComputeClass

  1. Dalam manifes ComputeClass, gunakan kolom nodePoolConfig.imageType. Kolom ini tersedia di GKE versi 1.32.4-gke.1198000 dan yang lebih baru.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - machineFamily: n4
      - machineFamily: n4d
      nodePoolConfig:
        imageType: IMAGE_TYPE
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    Ganti IMAGE_TYPE dengan nilai untuk image node, yang dapat berupa salah satu dari berikut ini:

    • cos_containerd: Container-Optimized OS dengan containerd.
    • ubuntu_containerd: Ubuntu dengan containerd.
  2. Terapkan manifes ComputeClass ke cluster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Ganti PATH_TO_COMPUTECLASS_MANIFEST dengan jalur ke file manifes ComputeClass.

gcloud

Untuk menetapkan image node default di command line, gunakan flag --autoprovisioning-image-type:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning \
    --autoprovisioning-image-type=IMAGE_TYPE

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster.
  • IMAGE_TYPE: image node, yang dapat berupa salah satu dari berikut ini:
    • cos_containerd: Container-Optimized OS dengan containerd.
    • ubuntu_containerd: Ubuntu dengan containerd.

Untuk menetapkan image node default dalam file konfigurasi, ikuti langkah-langkah berikut:

  1. Di file konfigurasi, tentukan kolom imageType:

      imageType: 'IMAGE_TYPE'
    

    Jika file konfigurasi Anda memiliki setelan lain, jangan ubah setelan tersebut. Setiap modifikasi atau penghapusan dalam file konfigurasi juga akan memodifikasi setelan tingkat cluster yang sesuai.

  2. Berikan file konfigurasi ke GKE dengan menentukan flag --autoprovisioning-config-file dan flag --enable-autoprovisioning untuk cluster baru atau yang sudah ada:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster.
    • PATH_TO_CONFIGURATION_FILE: jalur ke file konfigurasi.

Menetapkan akun layanan IAM default untuk node

Node GKE menggunakan akun layanan IAM untuk tugas sistem seperti logging dan pemantauan. Untuk mengubah akun layanan IAM untuk node pool yang dibuat secara otomatis, pilih salah satu opsi berikut:

ComputeClass

  1. Dalam manifes Computeclass, gunakan kolom nodePoolConfig.serviceAccount. Kolom ini tersedia di GKE versi 1.31.4-gke.1072000 dan yang lebih baru.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - machineFamily: n4
      - machineFamily: n4d
      nodePoolConfig:
        serviceAccount: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    Ganti kode berikut:

    • SERVICE_ACCOUNT_NAME: nama akun layanan IAM, seperti my-node-account.
    • PROJECT_ID: project ID project akun layanan.
  2. Terapkan manifes ComputeClass ke cluster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Ganti PATH_TO_COMPUTECLASS_MANIFEST dengan jalur ke file manifes ComputeClass.

gcloud

Saat menggunakan gcloud CLI untuk mengonfigurasi akun layanan default untuk node pool yang dibuat otomatis, Anda juga harus menentukan cakupan akses yang diperlukan node pool agar berfungsi dengan benar.

Untuk menetapkan akun layanan dan cakupan akses default di command line, gunakan flag --autoprovisioning-service-account dan --autoprovisioning-scopes:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning \
    --autoprovisioning-service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --autoprovisioning-scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/trace.append

Ganti kode berikut:

  • SERVICE_ACCOUNT_NAME: nama akun layanan IAM, seperti my-node-account.
  • PROJECT_ID: project ID project akun layanan.

Untuk menyetel akun layanan dan cakupan akses default dalam file konfigurasi, ikuti langkah-langkah berikut:

  1. Di file konfigurasi, tentukan kolom serviceAccount dan scopes:

    serviceAccount: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
    scopes: https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/trace.append
    

    Jika file konfigurasi Anda memiliki setelan lain, jangan ubah setelan tersebut. Setiap modifikasi atau penghapusan dalam file konfigurasi juga akan memodifikasi setelan tingkat cluster yang sesuai.

  2. Berikan file konfigurasi ke GKE dengan menentukan flag --autoprovisioning-config-file dan flag --enable-autoprovisioning untuk cluster baru atau yang sudah ada:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster.
    • PATH_TO_CONFIGURATION_FILE: jalur ke file konfigurasi.

Menetapkan zona default untuk node yang dibuat otomatis

Secara default, GKE membuat node secara otomatis di zona berikut, bergantung pada jenis cluster:

  • Cluster regional: GKE membuat node di tiga zona acak di region cluster.
  • Cluster zona: GKE membuat node di zona yang sama dengan bidang kontrol cluster.

Anda dapat menentukan daftar zona secara manual tempat GKE membuat node secara otomatis. Zona ini harus berada di region yang sama dengan bidang kontrol cluster. Misalnya, jika Anda memiliki cluster zona dengan bidang kontrol di us-central1-a, Anda dapat menentukan zona apa pun di region us-central1 agar GKE membuat node secara otomatis. Jika Anda mengubah zona default untuk node yang dibuat otomatis di cluster yang ada, perubahan hanya berlaku untuk node pool baru yang dibuat GKE.

Untuk menentukan zona default bagi node yang dibuat secara otomatis, pilih salah satu opsi berikut:

ComputeClass

  1. Dalam manifes ComputeClass, gunakan kolom spec.priorityDefaults.location.zones. Kolom ini tersedia di GKE versi 1.33.1-gke.1545000 dan yang lebih baru.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorityDefaults:
        location:
          zones: ['ZONE1','ZONE2','...']
      priorities:
      - machineFamily: n4
      - machineFamily: n4d
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    Ganti ZONE1,ZONE2,... dengan daftar zona default yang dipisahkan koma untuk node yang dibuat otomatis, seperti 'us-central1-a','us-central1-b', 'us-central1-f'. GKE menggunakan zona ini jika aturan tertentu di kolom spec.priorities tidak menyertakan daftar zona eksplisit.

  2. Terapkan manifes ComputeClass ke cluster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Ganti PATH_TO_COMPUTECLASS_MANIFEST dengan jalur ke file manifes ComputeClass.

gcloud

Untuk menetapkan zona default bagi pembuatan otomatis node pool di command line, gunakan flag --autoprovisioning-locations:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning \
    --autoprovisioning-locations=ZONE1,ZONE2,...

Ganti ZONE1,ZONE2,... dengan daftar zona default yang dipisahkan koma untuk node yang dibuat otomatis, seperti 'us-central1-a','us-central1-b', 'us-central1-f'.

Untuk menyetel zona default untuk pembuatan otomatis node pool menggunakan file konfigurasi, ikuti langkah-langkah berikut:

  1. Tentukan kolom autoprovisioningLocations di file konfigurasi:

    autoprovisioningLocations:
    - ZONE1
    - ZONE2
    

    Ganti ZONE1,ZONE2 dengan zona default untuk node yang dibuat otomatis, seperti 'us-central1-a' dan 'us-central1-b'.

    Jika file konfigurasi Anda memiliki setelan lain, jangan ubah setelan tersebut. Setiap modifikasi atau penghapusan dalam file konfigurasi juga akan memodifikasi setelan tingkat cluster yang sesuai.

  2. Berikan file konfigurasi ke GKE dengan menentukan flag --autoprovisioning-config-file dan flag --enable-autoprovisioning untuk cluster baru atau yang sudah ada:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster.
    • PATH_TO_CONFIGURATION_FILE: jalur ke file konfigurasi.

Menetapkan kunci enkripsi yang dikelola pelanggan untuk enkripsi boot disk

Anda dapat menentukan kunci enkripsi yang dikelola pelanggan (CMEK) di Cloud Key Management Service yang digunakan GKE untuk mengenkripsi boot disk node di node pool yang dibuat otomatis. Anda harus membuat kunci sebelum menggunakannya dengan pembuatan otomatis node pool. Untuk menyetel CMEK bagi boot disk node Anda, pilih salah satu opsi berikut:

ComputeClass

Di ComputeClasses, Anda harus menentukan kunci di setiap aturan prioritas di kolom spec.priorities di ComputeClass.

  1. Dalam manifes ComputeClass, gunakan kolom priorities.storage.bootDiskKMSKey:

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - machineFamily: n4
        storage:
          bootDiskKMSKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
      - machineFamily: n4d
        storage:
          bootDiskKMSKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    Ganti kode berikut:

    • KEY_PROJECT_ID: project ID project yang memiliki kunci.
    • KEY_LOCATION: lokasi key ring.
    • KEY_RING: nama key ring yang berisi kunci.
    • KEY_NAME: nama kunci.
  2. Terapkan manifes ComputeClass ke cluster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Ganti PATH_TO_COMPUTECLASS_MANIFEST dengan jalur ke file manifes ComputeClass.

gcloud

  1. Tentukan kolom bootDiskKmsKey di file konfigurasi:

    bootDiskKmsKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
    

    Ganti kode berikut:

    • KEY_PROJECT_ID: project ID project yang memiliki kunci.
    • KEY_LOCATION: lokasi key ring.
    • KEY_RING: nama key ring yang berisi kunci.
    • KEY_NAME: nama kunci.

    Jika file konfigurasi Anda memiliki setelan lain, jangan ubah setelan tersebut. Setiap modifikasi atau penghapusan dalam file konfigurasi juga akan memodifikasi setelan tingkat cluster yang sesuai.

  2. Berikan file konfigurasi ke GKE dengan menentukan flag --autoprovisioning-config-file dan flag --enable-autoprovisioning untuk cluster baru atau yang sudah ada:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster.
    • PATH_TO_CONFIGURATION_FILE: jalur ke file konfigurasi.

Mengonfigurasi integritas node dan booting aman

Anda dapat mengaktifkan booting aman dan pemantauan integritas untuk node pool yang dibuat otomatis hanya dengan menggunakan file konfigurasi penyediaan otomatis node.

  1. Tentukan kolom shieldedInstanceConfig di file konfigurasi:

    shieldedInstanceConfig:
      enableSecureBoot: true
      enableIntegrityMonitoring: true
    

    Jika file konfigurasi Anda memiliki setelan lain, jangan ubah setelan tersebut. Setiap modifikasi atau penghapusan dalam file konfigurasi juga akan memodifikasi setelan tingkat cluster yang sesuai.

  2. Berikan file konfigurasi ke GKE dengan menentukan flag --autoprovisioning-config-file dan flag --enable-autoprovisioning untuk cluster baru atau yang sudah ada:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster.
    • PATH_TO_CONFIGURATION_FILE: jalur ke file konfigurasi.

Mengonfigurasi perbaikan otomatis node dan upgrade otomatis

Anda dapat mengubah setelan untuk perbaikan otomatis node dan upgrade otomatis node di node pool yang dibuat secara otomatis. Fitur ini diaktifkan secara default di semua cluster dan node pool GKE. Sebaiknya Anda tetap mengaktifkan fitur ini untuk meningkatkan keandalan dan stabilitas di cluster Anda.

Untuk mengubah setelan perbaikan otomatis node dan upgrade otomatis node, pilih salah satu opsi berikut:

ComputeClass

  1. Dalam manifes ComputeClass, gunakan kolom autoRepair dan kolom autoUpgrade di kolom spec.nodePoolConfig. Kolom ini tersedia di GKE versi 1.34.0-gke.2201000 dan yang lebih baru.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      nodePoolConfig:
        autoRepair: true
        autoUpgrade: true
      priorities:
      - machineFamily: n4
      - machineFamily: n4d
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    
  2. Terapkan manifes ComputeClass ke cluster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Ganti PATH_TO_COMPUTECLASS_MANIFEST dengan jalur ke file manifes ComputeClass.

gcloud

  • Untuk mengaktifkan setelan perbaikan otomatis dan upgrade otomatis di command line, gunakan --enable-autoprovisioning-autorepair dan --enable-autoprovisioning-autoupgrade flag:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --enable-autoprovisioning-autorepair \
        --enable-autoprovisioning-autoupgrade
    
  • Untuk menonaktifkan setelan perbaikan otomatis dan upgrade otomatis di command line, gunakan flag --no-enable-autoprovisioning-autorepair dan --no-enable-autoprovisioning-autoupgrade:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --no-enable-autoprovisioning-autorepair \
        --no-enable-autoprovisioning-autoupgrade
    
  • Untuk mengubah setelan perbaikan otomatis dan upgrade otomatis node menggunakan file konfigurasi, ikuti langkah-langkah berikut:

    1. Tentukan kolom management.autoRepair dan management.autoUpgrade dalam file konfigurasi:

      management:
        autoRepair: true
        autoUpgrade: true
      

      Jika file konfigurasi Anda memiliki setelan lain, jangan ubah setelan tersebut. Setiap modifikasi atau penghapusan dalam file konfigurasi juga akan memodifikasi setelan tingkat cluster yang sesuai.

    2. Berikan file konfigurasi ke GKE dengan menentukan flag --autoprovisioning-config-file dan flag --enable-autoprovisioning untuk cluster baru atau yang sudah ada:

      gcloud container clusters create CLUSTER_NAME \
          --location=CONTROL_PLANE_LOCATION \
          --enable-autoprovisioning \
          --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
      

      Ganti kode berikut:

      • CLUSTER_NAME: nama cluster.
      • PATH_TO_CONFIGURATION_FILE: jalur ke file konfigurasi.

Mengonfigurasi setelan upgrade lonjakan

Anda dapat menentukan setelan upgrade lonjakan di node pool yang dibuat otomatis. Upgrade lonjakan adalah strategi upgrade node GKE default. Untuk mengubah setelan upgrade lonjakan, Anda harus mengonfigurasi penyediaan otomatis node tingkat cluster.

  • Untuk menentukan setelan upgrade lonjakan di command line, gunakan flag --autoprovisioning-max-surge-upgrade dan --autoprovisioning-max-unavailable-upgrade:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-max-surge-upgrade=MAX_SURGE \
        --autoprovisioning-max-unavailable-upgrade=MAX_UNAVAILABLE
    

    Ganti kode berikut:

    • MAX_SURGE: jumlah node maksimum yang dapat ditambahkan ke node pool selama upgrade.
    • MAX_UNAVAILABLE: jumlah maksimum node dalam node pool yang tidak dapat tersedia secara bersamaan selama upgrade.
  • Untuk menentukan setelan upgrade lonjakan menggunakan file konfigurasi, ikuti langkah-langkah berikut:

    1. Tentukan kolom upgradeSettings.maxSurgeUpgrade dan upgradeSettings.maxUnavailableUpgrade di file konfigurasi:

      upgradeSettings:
        maxSurgeUpgrade: MAX_SURGE
        maxUnavailableUpgrade: MAX_UNAVAILABLE
      

      Jika file konfigurasi Anda memiliki setelan lain, jangan ubah setelan tersebut. Setiap modifikasi atau penghapusan dalam file konfigurasi juga akan memodifikasi setelan tingkat cluster yang sesuai.

    2. Berikan file konfigurasi ke GKE dengan menentukan flag --autoprovisioning-config-file dan flag --enable-autoprovisioning untuk cluster baru atau yang sudah ada:

      gcloud container clusters create CLUSTER_NAME \
          --location=CONTROL_PLANE_LOCATION \
          --enable-autoprovisioning \
          --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
      

      Ganti kode berikut:

      • CLUSTER_NAME: nama cluster.
      • PATH_TO_CONFIGURATION_FILE: jalur ke file konfigurasi.

Setelan upgrade lonjakan yang Anda tentukan hanya berlaku jika cluster Anda menggunakan upgrade lonjakan untuk mengupgrade node pool yang dibuat otomatis. Untuk mengalihkan strategi upgrade node Anda ke upgrade lonjakan untuk node pool baru yang dibuat otomatis, jalankan perintah berikut:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning \
    --enable-autoprovisioning-surge-upgrade

Saat Anda mengganti strategi upgrade, GKE akan menggunakan setelan apa pun yang sebelumnya Anda konfigurasi untuk strategi upgrade tersebut.

Menggunakan upgrade blue-green untuk node pool baru yang dibuat otomatis

Anda dapat mengalihkan strategi upgrade node ke upgrade biru hijau untuk semua node pool baru yang dibuat otomatis dan menyesuaikan setelan default untuk upgrade biru hijau. Untuk mengubah strategi upgrade, Anda harus mengonfigurasi penyediaan otomatis node tingkat cluster. Setiap perubahan yang Anda lakukan hanya berlaku untuk node pool baru yang dibuat secara otomatis. Anda juga dapat mengupdate node pool yang sudah ada dan dibuat otomatis agar menggunakan upgrade blue-green.

  • Untuk menggunakan upgrade blue-green dan setelan default GKE untuk node pool baru yang dibuat otomatis, jalankan perintah berikut:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION
        --enable-autoprovisioning \
        --enable-autoprovisioning-blue-green-upgrade
    
  • Untuk menggunakan upgrade blue-green dan mengonfigurasi setelan default Anda sendiri untuk node pool baru yang dibuat otomatis, jalankan perintah berikut:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --enable-autoprovisioning-blue-green-upgrade \
        --autoprovisioning-node-pool-soak-duration=NODE_POOL_SOAK_DURATION \
        --autoprovisioning-standard-rollout-policy=batch-node-count=BATCH_NODE_COUNT,batch-soak-duration=BATCH_SOAK_DURATION
    

    Ganti kode berikut:

    • NODE_POOL_SOAK_DURATION: durasi, dalam detik, yang ditunggu GKE setelah mengosongkan semua batch node di pool biru sebelum menghapus pool biru. Nilai defaultnya adalah 3600.
    • BATCH_NODE_COUNT: jumlah node yang akan dikosongkan dalam batch selama fase pengosongan pool biru. Nilai defaultnya adalah 1. Jika Anda menentukan nilai 0, GKE akan melewati fase pengosongan pool biru.
    • BATCH_SOAK_DURATION: durasi, dalam detik, yang ditunggu GKE untuk memulai operasi pengosongan batch setelah operasi pengosongan sebelumnya selesai. Nilai defaultnya adalah 0.

Mengonfigurasi boot disk node kustom

Untuk menentukan jenis dan ukuran boot disk yang dilampirkan GKE ke setiap VM node di node pool yang dibuat otomatis, pilih salah satu opsi berikut:

ComputeClass

  1. Gunakan kolom bootDiskType dan bootDiskSize di kolom spec.priorities.storage di ComputeClass:

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - machineFamily: n4
        storage:
          bootDiskType: BOOT_DISK_TYPE
          bootDiskSize: BOOT_DISK_SIZE
      - machineFamily: n4d
        storage:
          bootDiskType: BOOT_DISK_TYPE
          bootDiskSize: BOOT_DISK_SIZE
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    Ganti kode berikut:

    • BOOT_DISK_TYPE: jenis disk yang akan digunakan sebagai disk boot node. Nilai yang Anda tentukan harus didukung oleh jenis mesin Compute Engine yang digunakan GKE untuk aturan prioritas tersebut. Nilainya harus berupa salah satu dari berikut:
      • pd-balanced: Persistent Disk seimbang.
      • pd-standard: Persistent Disk standar.
      • pd-ssd: Persistent Disk performa (SSD).
      • hyperdisk-balanced: Google Cloud Hyperdisk Seimbang.
    • BOOT_DISK_SIZE: ukuran boot disk node, dalam GiB. Nilai minimum adalah 10.
  2. Terapkan manifes ComputeClass ke cluster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Ganti PATH_TO_COMPUTECLASS_MANIFEST dengan jalur ke file manifes ComputeClass.

gcloud

  1. Di file konfigurasi, tentukan kolom diskSizeGb dan diskType:

    diskSizeGb: BOOT_DISK_SIZE
    diskType: BOOT_DISK_TYPE
    

    Ganti kode berikut:

    • BOOT_DISK_TYPE: jenis disk yang akan digunakan sebagai disk boot node. Nilai yang Anda tentukan harus didukung oleh jenis mesin Compute Engine yang digunakan GKE untuk aturan prioritas tersebut. Nilainya harus berupa salah satu dari berikut:
      • pd-balanced: Persistent Disk seimbang.
      • pd-standard: Persistent Disk standar.
      • pd-ssd: Persistent Disk performa (SSD).
      • hyperdisk-balanced: Google Cloud Hyperdisk Seimbang.
    • BOOT_DISK_SIZE: ukuran boot disk node, dalam GiB. Nilai minimum adalah 10.

    Jika file konfigurasi Anda memiliki setelan lain, jangan ubah setelan tersebut. Setiap modifikasi atau penghapusan dalam file konfigurasi juga akan memodifikasi setelan tingkat cluster yang sesuai.

  2. Berikan file konfigurasi ke GKE dengan menentukan flag --autoprovisioning-config-file dan flag --enable-autoprovisioning untuk cluster baru atau yang sudah ada:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster.
    • PATH_TO_CONFIGURATION_FILE: jalur ke file konfigurasi.

GKE mencadangkan sebagian boot disk node untuk fungsionalitas sistem dan untuk penyimpanan sementara. Untuk mengetahui informasi selengkapnya, lihat Penyimpanan sementara yang didukung oleh boot disk node.

Mengonfigurasi node pool yang dibuat otomatis untuk skenario umum

Bagian berikut menunjukkan cara meminta node pool yang dibuat otomatis untuk kasus penggunaan GKE umum tertentu. Untuk mengetahui informasi selengkapnya tentang kasus penggunaan tambahan dan konfigurasi yang didukung, lihat dokumentasi untuk kasus penggunaan spesifik Anda.

Pilih seri mesin atau jenis mesin

Untuk memilih jenis mesin atau seri mesin Compute Engine yang didukung, pilih salah satu opsi berikut:

ComputeClass

  1. Dalam manifes ComputeClass, tentukan salah satu kolom berikut di kolom spec.priorities. Anda dapat menentukan kedua kolom ini dalam manifes ComputeClass yang sama, tetapi tidak dalam aturan prioritas yang sama.

    • Untuk memilih seri mesin, tentukan kolom machineFamily dalam aturan prioritas:

      apiVersion: cloud.google.com/v1
      kind: ComputeClass
      metadata:
        name: COMPUTE_CLASS
      spec:
        priorities:
        - machineFamily: MACHINE_SERIES
        whenUnsatisfiable: ScaleUpAnyway
        nodePoolAutoCreation:
          enabled: true
      

      Ganti MACHINE_SERIES dengan seri mesin Compute Engine, seperti n4.

    • Untuk memilih jenis mesin, tentukan kolom machineType dalam aturan prioritas:

      apiVersion: cloud.google.com/v1
      kind: ComputeClass
      metadata:
        name: COMPUTE_CLASS
      spec:
        priorities:
        - machineType: MACHINE_TYPE
        whenUnsatisfiable: ScaleUpAnyway
        nodePoolAutoCreation:
          enabled: true
      

      Ganti MACHINE_TYPE dengan jenis mesin Compute Engine, seperti c4-standard-96. Di GKE versi 1.33.2-gke.1111000 dan yang lebih baru, Anda juga dapat menentukan jenis mesin kustom di kolom ini.

    Anda tidak dapat menentukan kolom machineFamily dan kolom machineType dalam aturan prioritas yang sama.

  2. Terapkan manifes ComputeClass ke cluster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Ganti PATH_TO_COMPUTECLASS_MANIFEST dengan jalur ke file manifes ComputeClass.

  3. Pilih ComputeClass dalam beban kerja.

Spesifikasi pod

  1. Dalam manifes Pod, pilih salah satu label node berikut:

    • Untuk memilih seri mesin, gunakan label node cloud.google.com/machine-family:

      apiVersion: v1
      kind: Pod
      metadata:
        name: machine-series-pod
      spec:
        nodeSelector:
          cloud.google.com/machine-family: MACHINE_SERIES
        containers:
        - name: hello-app
          image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
      

      Ganti MACHINE_SERIES dengan seri mesin Compute Engine, seperti n4.

    • Untuk memilih jenis mesin yang telah ditentukan, gunakan label node cloud.google.com/machine-family dan node.kubernetes.io/instance-type:

      apiVersion: v1
      kind: Pod
      metadata:
        name: machine-series-pod
      spec:
        nodeSelector:
          cloud.google.com/machine-family: MACHINE_SERIES
          node.kubernetes.io/instance-type: MACHINE_TYPE
        containers:
        - name: hello-app
          image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
      

      Ganti MACHINE_TYPE dengan jenis mesin Compute Engine dalam seri mesin yang ditentukan. Misalnya, jika Anda menentukan n4 untuk MACHINE_SERIES, Anda dapat menentukan n4-standard-80 untuk MACHINE_TYPE.

      Di GKE versi 1.33.2-gke.1111000, Anda juga dapat menentukan jenis mesin kustom di kolom ini.

  2. Buat Pod:

    kubectl apply -f PATH_TO_POD_MANIFEST
    

    Ganti PATH_TO_POD_MANIFEST dengan jalur ke manifes Pod.

Memilih GPU

Untuk meminta GPU bagi node pool yang dibuat secara otomatis, pilih salah satu opsi berikut:

ComputeClass

  1. Dalam manifes ComputeClass, tentukan kolom spec.priorities.gpu:

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - gpu:
          type: GPU_TYPE
          count: GPU_COUNT
          driverVersion: DRIVER_VERSION
      whenUnsatisfiable: DoNotScaleUp
      nodePoolAutoCreation:
        enabled: true
    

    Ganti kode berikut:

    • GPU_TYPE: Jenis GPU yang akan dilampirkan, seperti nvidia-l4.
    • GPU_COUNT: jumlah GPU yang akan dipasang ke setiap node. Nilai ini harus minimal 1.
    • DRIVER_VERSION: versi driver GPU yang akan diinstal. Nilai ini harus berupa default atau latest. Kolom ini memerlukan GKE versi 1.31.1-gke.1858000 atau yang lebih baru.
  2. Terapkan manifes ComputeClass ke cluster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Ganti PATH_TO_COMPUTECLASS_MANIFEST dengan jalur ke file manifes ComputeClass.

  3. Pilih ComputeClass dalam workload GPU, seperti dalam contoh berikut:

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-gpu-pod
    spec:
      nodeSelector:
        cloud.google.com/compute-class: nvidia-l4-class
      containers:
      - name: my-gpu-container
        image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
        command: ["/bin/bash", "-c", "--"]
        args: ["while true; do sleep 600; done;"]
        resources:
          limits:
          nvidia.com/gpu: 1
    

Spesifikasi pod

Untuk memilih GPU dalam spesifikasi Pod, Anda harus mengonfigurasi penyediaan otomatis node tingkat cluster dan menetapkan batas resource untuk jenis GPU tersebut. Untuk mengonfigurasi batas resource GPU dan memilih GPU di Pod, ikuti langkah-langkah berikut:

  1. Konfigurasi batas resource tingkat cluster untuk GPU yang ingin Anda gunakan, seperti yang dijelaskan di bagian Mengonfigurasi batas resource untuk pembuatan otomatis node pool.
  2. Pilih GPU menggunakan label node dalam spesifikasi Pod:

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-gpu-pod
    spec:
      nodeSelector:
        cloud.google.com/gke-accelerator: GPU_TYPE
        cloud.google.com/gke-accelerator-count: GPU_COUNT
        cloud.google.com/gke-gpu-driver-version: DRIVER_VERSION
      containers:
      - name: my-gpu-container
        image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
        command: ["/bin/bash", "-c", "--"]
        args: ["while true; do sleep 600; done;"]
        resources:
          limits:
          nvidia.com/gpu: GPU_QUANTITY
    

    Ganti kode berikut:

    • GPU_TYPE: Jenis GPU yang akan dilampirkan, seperti nvidia-l4.
    • GPU_COUNT: jumlah GPU yang akan dipasang ke setiap node. Nilai ini harus minimal 1.
    • DRIVER_VERSION: versi driver GPU yang akan diinstal. Nilai ini harus berupa default atau latest. Di GKE versi 1.32.2-gke.1297000 dan yang lebih baru, GKE otomatis menginstal versi driver default. Label node ini memerlukan GKE versi 1.29.2-gke.1108000 atau yang lebih baru. Untuk mengetahui informasi selengkapnya, lihat Menginstal driver menggunakan penyediaan otomatis node dengan GPU.
    • GPU_QUANTITY: jumlah GPU yang akan dipasang ke Pod. Nilai ini harus kurang dari atau sama dengan nilai GPU_COUNT.

Pilih TPU

Anda dapat meminta TPU dalam spesifikasi ComputeClass atau Pod. Bagian ini mengasumsikan bahwa Anda sudah memahami pemilihan Cloud TPU, dan Anda mengetahui jenis, topologi, dan jumlah TPU yang ingin digunakan. Langkah-langkah yang Anda ikuti bergantung pada cara Anda memilih TPU:

Membatasi runtime node yang dibuat otomatis

Anda dapat menentukan durasi maksimum setelah GKE menghentikan node yang dibuat secara otomatis. Batasan Compute Engine berlaku untuk batas waktu ini.

Pilih salah satu opsi berikut:

ComputeClass

  1. Dalam manifes ComputeClass, gunakan kolom spec.priorities.maxRunDurationSeconds. Kolom ini tersedia di GKE versi 1.32.1-gke.1159000 dan yang lebih baru.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - machine-family: n4
        maxRunDurationSeconds: MAX_RUN_DURATION
      whenUnsatisfiable: DoNotScaleUp
      nodePoolAutoCreation:
        enabled: true
    

    Ganti MAX_RUN_DURATION dengan waktu, dalam detik, saat node yang dibuat otomatis dapat berjalan sebelum GKE menghentikan node.

  2. Terapkan manifes ComputeClass ke cluster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Ganti PATH_TO_COMPUTECLASS_MANIFEST dengan jalur ke file manifes ComputeClass.

  3. Pilih ComputeClass dalam beban kerja.

Spesifikasi pod

  1. Dalam manifes Pod, gunakan pemilih node untuk label node cloud.google.com/gke-max-run-duration-seconds. Label node ini tersedia di GKE versi 1.31.2-gke.1518000 dan yang lebih baru.

    apiVersion: v1
    kind: Pod
    metadata:
      name: machine-series-pod
    spec:
      nodeSelector:
        cloud.google.com/machine-family: n4
        cloud.google.com/gke-max-run-duration-seconds: MAX_RUN_DURATION
      containers:
      - name: hello-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
    

    Ganti MAX_RUN_DURATION dengan waktu, dalam detik, saat node yang dibuat otomatis dapat berjalan sebelum GKE menghentikan node.

  2. Buat Pod:

    kubectl apply -f PATH_TO_POD_MANIFEST
    

    Ganti PATH_TO_POD_MANIFEST dengan jalur ke manifes Pod.

Menentukan platform CPU minimum

Penyediaan otomatis node mendukung pembuatan node pool dengan platform CPU minimum yang ditentukan. Anda dapat menentukan platform CPU minimum di tingkat workload (direkomendasikan) atau di tingkat cluster.

Menonaktifkan pembuatan otomatis node pool

Bagian berikut menunjukkan cara menonaktifkan pembuatan otomatis node pool untuk node pool tertentu atau untuk seluruh cluster. Anda juga dapat menonaktifkan pembuatan otomatis node pool di ComputeClass dengan menentukan nilai false di kolom nodePoolAutoCreation.enabled ComputeClass. Namun, sebaiknya jangan menonaktifkan pembuatan otomatis untuk ComputeClass, karena pembuatan otomatis adalah manfaat utama ComputeClass yang memungkinkan Anda menggunakan fitur seperti migrasi aktif dan prioritas penggantian.

Menonaktifkan pembuatan otomatis untuk node pool tertentu

Anda dapat menghentikan GKE mengelola node di node pool yang dibuat otomatis. Tindakan ini memiliki efek berikut:

  • Autoscaler cluster berhenti membuat atau menghapus node di node pool tersebut. Jika Anda ingin GKE melakukan penskalaan otomatis pada node, Anda dapat mengaktifkan autoscaler cluster untuk node pool tersebut secara terpisah.
  • GKE tidak menghapus node pool saat jumlah node adalah nol.
  • GKE akan terus menempatkan Pod yang tertunda di node yang ada di node pool tersebut yang memiliki ketersediaan. Jika penyediaan otomatis node masih diaktifkan untuk cluster, GKE juga dapat membuat node pool baru untuk Pod yang tertunda sesuai kebutuhan.

Untuk menonaktifkan pembuatan otomatis bagi node pool tertentu, jalankan perintah berikut:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --no-enable-autoprovisioning

Menonaktifkan penyediaan otomatis node untuk cluster

Anda dapat menonaktifkan pembuatan otomatis node pool untuk seluruh cluster dengan menonaktifkan setelan cluster penyediaan otomatis node. Tindakan ini memiliki efek berikut:

  • Autoscaler cluster berhenti membuat dan menghapus node di node pool yang ada yang dibuat secara otomatis. Node pool yang dibuat secara manual dan menggunakan autoscaler cluster tidak terpengaruh.
  • GKE tidak otomatis membuat node pool baru untuk workload yang tertunda. Pantau cluster Anda untuk menghindari Pod yang macet.
  • Jika cluster memenuhi persyaratan berikut, GKE akan terus membuat node pool baru untuk ComputeClass yang mengaktifkan pembuatan otomatis:

    • Menggunakan GKE versi 1.33.3-gke.1136000 atau yang lebih baru.
    • Terdaftar di saluran rilis Cepat.

    Jika cluster tidak memenuhi persyaratan ini, GKE tidak akan membuat node pool baru untuk ComputeClass yang mengaktifkan pembuatan otomatis.

Jika Anda mengaktifkan kembali setelan penyediaan otomatis node tingkat cluster nanti, GKE tidak akan mengaktifkan kembali pembuatan otomatis node pool di node pool yang ada. Anda harus menandai setiap node pool sebagai dibuat otomatis.

Untuk menonaktifkan setelan penyediaan otomatis node tingkat cluster, pilih salah satu opsi berikut:

Konsol

  1. Di konsol Google Cloud , buka halaman Kubernetes clusters:

    Buka cluster Kubernetes

  2. Klik nama cluster yang akan diubah. Halaman Cluster details akan terbuka.

  3. Klik tab Detail.

  4. Di bagian Automation, di baris Node auto-provisioning, klik Edit. Panel Edit penyediaan otomatis node akan muncul.

  5. Hapus centang pada kotak Enable node auto-provisioning.

  6. Klik Simpan perubahan.

gcloud

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --no-enable-autoprovisioning

Langkah berikutnya