Menskalakan cluster secara otomatis


Halaman ini menunjukkan cara menskalakan cluster Google Kubernetes Engine (GKE) Standard secara otomatis. Untuk mempelajari cara kerja autoscaler cluster, lihat Autoscaler cluster.

Dengan cluster Autopilot, Anda tidak perlu khawatir dengan penyediaan node atau pengelolaan node pool karena node pool disediakan otomatis melalui penyediaan otomatis node, dan penskalaan otomatis untuk memenuhi persyaratan workload Anda.

Menggunakan autoscaler cluster

Bagian berikut menjelaskan cara menggunakan autoscaler cluster.

Membuat cluster dengan penskalaan otomatis

Anda dapat membuat cluster dengan penskalaan otomatis yang diaktifkan menggunakan Google Cloud CLI atau konsol Google Cloud.

gcloud

Untuk membuat cluster dengan penskalaan otomatis yang diaktifkan, gunakan flag --enable-autoscaling, lalu tentukan --min-nodes dan --max-nodes:

gcloud container clusters create CLUSTER_NAME \
    --enable-autoscaling \
    --num-nodes NUM_NODES \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
    --region=COMPUTE_REGION

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster yang akan dibuat.
  • NUM_NODES: jumlah node yang akan dibuat di setiap lokasi.
  • MIN_NODES: jumlah minimum node yang akan diskalakan secara otomatis untuk node pool yang ditentukan per zona. Guna menentukan jumlah minimum node untuk seluruh node pool di GKE versi 1.24 dan yang lebih baru, gunakan --total-min-nodes. Flag --total-min-nodes dan --total-max-nodes tidak dapat muncul bersamaan dengan flag --min-nodes dan --max-nodes.
  • MAX_NODES: jumlah maksimum node yang akan diskalakan secara otomatis untuk node pool yang ditentukan per zona. Guna menentukan jumlah maksimum node untuk seluruh node pool di GKE versi 1.24 dan yang lebih baru, gunakan --total-max-nodes. Flag --total-min-nodes dan --total-max-nodes tidak dapat muncul bersamaan dengan flag --min-nodes dan --max-nodes.
  • COMPUTE_REGION: region Compute Engine untuk cluster baru. Untuk cluster zona, gunakan --zone=COMPUTE_ZONE.

Contoh: Membuat cluster dengan penskalaan otomatis node diaktifkan serta node min dan maks

Perintah berikut membuat cluster dengan 90 node, atau 30 node di setiap 3 zona yang ada di region tersebut. Penskalaan otomatis node diaktifkan dan mengubah ukuran jumlah node berdasarkan muatan cluster. Autoscaler cluster dapat mengurangi ukuran node pool default hingga 15 node atau menambah node pool hingga maksimum 50 node per zona.

gcloud container clusters create my-cluster --enable-autoscaling \
    --num-nodes=30 \
    --min-nodes=15 --max-nodes=50 \
    --region=us-central

Contoh: Membuat cluster dengan penskalaan otomatis node diaktifkan dan node total

Perintah berikut membuat cluster dengan 30 node, atau 10 node di setiap 3 zona yang ada di region tersebut. Penskalaan otomatis node diaktifkan dan mengubah ukuran jumlah node berdasarkan muatan cluster. Dalam contoh ini, ukuran total cluster dapat berkisar antara 10 hingga 60 node, terlepas dari penyebaran antar-zona.

gcloud container clusters create my-cluster --enable-autoscaling \
    --num-nodes 10 \
    --region us-central1 \
    --total-min-nodes 10  --total-max-nodes 60

Konsol

Untuk membuat cluster baru dengan penskalaan otomatis diaktifkan untuk node pool default:

  1. Buka halaman Google Kubernetes Engine di konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Klik Create.

  3. Konfigurasikan cluster Anda sesuai keinginan.

  4. Dari panel navigasi, di bagian Node Pools, klik default-pool.

  5. Centang kotak Enable autoscaling.

  6. Ubah nilai minimum node pada kolom Minimum number of nodes dan nilai maksimum node pada kolom Maximum number of nodes sesuai keinginan.

  7. Klik Create.

Menambahkan node pool dengan penskalaan otomatis

Anda dapat membuat node pool dengan penskalaan otomatis yang diaktifkan menggunakan gcloud CLI atau konsol Google Cloud.

gcloud

Untuk menambahkan node pool dengan penskalaan otomatis ke cluster yang ada, gunakan perintah berikut:

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-autoscaling \
    --min-nodes=MIN_NODES \
    --max-nodes=MAX_NODES \
    --region=COMPUTE_REGION

Ganti kode berikut:

  • POOL_NAME: nama node pool yang diinginkan.
  • CLUSTER_NAME: nama cluster tempat node pool dibuat.
  • MIN_NODES: jumlah minimum node yang akan diskalakan secara otomatis untuk node pool yang ditentukan per zona. Guna menentukan jumlah minimum node untuk seluruh node pool di GKE versi 1.24 dan yang lebih baru, gunakan --total-min-nodes. Flag --total-min-nodes dan --total-max-nodes tidak dapat muncul bersamaan dengan flag --min-nodes dan --max-nodes.
  • MAX_NODES: jumlah maksimum node yang akan diskalakan secara otomatis untuk node pool yang ditentukan per zona. Guna menentukan jumlah maksimum node untuk seluruh node pool di GKE versi 1.24 dan yang lebih baru, gunakan --total-max-nodes. Flag --total-min-nodes dan --total-max-nodes tidak dapat muncul bersamaan dengan flag --min-nodes dan --max-nodes.
  • COMPUTE_REGION: region Compute Engine untuk cluster baru. Untuk cluster zona, gunakan --zone=COMPUTE_ZONE.

Contoh: Menambahkan node pool dengan penskalaan otomatis node diaktifkan

Perintah berikut membuat node pool dengan penskalaan otomatis node yang menskalakan node pool ke maksimum 5 node dan minimal 1 node:

gcloud container node-pools create my-node-pool \
    --cluster my-cluster \
    --enable-autoscaling \
    --min-nodes 1 --max-nodes 5 \
    --zone us-central1-c

Konsol

Untuk menambahkan node pool dengan penskalaan otomatis ke cluster yang sudah ada:

  1. Buka halaman Google Kubernetes Engine di konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Di daftar cluster, klik nama cluster yang ingin diubah.

  3. Klik Add Node Pool.

  4. Konfigurasikan node pool sesuai keinginan.

  5. Di bagian Size, pilih kotak centang Enable autoscaling.

  6. Ubah nilai minimum node pada kolom Minimum number of nodes dan nilai maksimum node pada kolom Maximum number of nodes sesuai keinginan.

  7. Klik Create.

Mengaktifkan penskalaan otomatis untuk node pool yang sudah ada

Anda dapat mengaktifkan penskalaan otomatis untuk node pool yang sudah ada menggunakan gcloud CLI atau konsol Google Cloud.

gcloud

Guna mengaktifkan penskalaan otomatis untuk node pool yang sudah ada, gunakan perintah berikut:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoscaling \
    --node-pool=POOL_NAME \
    --min-nodes=MIN_NODES \
    --max-nodes=MAX_NODES \
    --region=COMPUTE_REGION

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster yang akan diperbarui.
  • POOL_NAME: nama node pool yang diinginkan. Jika Anda hanya memiliki satu node pool, berikan default-pool sebagai nilainya.
  • MIN_NODES: jumlah minimum node yang akan diskalakan secara otomatis untuk node pool yang ditentukan per zona. Guna menentukan jumlah minimum node untuk seluruh node pool di GKE versi 1.24 dan yang lebih baru, gunakan --total-min-nodes. Flag --total-min-nodes dan --total-max-nodes tidak dapat muncul bersamaan dengan flag --min-nodes dan --max-nodes.
  • MAX_NODES: jumlah maksimum node yang akan diskalakan secara otomatis untuk node pool yang ditentukan per zona. Guna menentukan jumlah maksimum node untuk seluruh node pool di GKE versi 1.24 dan yang lebih baru, gunakan --total-max-nodes. Flag --total-min-nodes dan --total-max-nodes tidak dapat muncul bersamaan dengan flag --min-nodes dan --max-nodes.
  • COMPUTE_REGION: region Compute Engine untuk cluster baru. Untuk cluster zona, gunakan --zone=COMPUTE_ZONE.

Konsol

Guna mengaktifkan penskalaan otomatis untuk node pool yang sudah ada:

  1. Buka halaman Google Kubernetes Engine di konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Di daftar cluster, klik nama cluster yang ingin diubah.

  3. Klik tab Nodes.

  4. Di bagian Node Pools, klik nama node pool yang ingin Anda ubah, lalu klik Edit.

  5. Di bagian Size, pilih kotak centang Enable autoscaling.

  6. Ubah nilai minimum node pada kolom Minimum number of nodes dan nilai maksimum node pada kolom Maximum number of nodes sesuai keinginan.

  7. Klik Save.

Memverifikasi bahwa penskalaan otomatis untuk node pool yang sudah ada telah diaktifkan

Anda dapat memverifikasi bahwa cluster menggunakan penskalaan otomatis dengan Google Cloud CLI atau konsol Google Cloud.

gcloud

Deskipsikan node pool di dalam cluster:

gcloud container node-pools describe NODE_POOL_NAME --cluster=CLUSTER_NAME |grep autoscaling -A 1

Ganti kode berikut:

  • POOL_NAME: nama node pool baru pilihan Anda.
  • CLUSTER_NAME: nama cluster.

Jika penskalaan otomatis diaktifkan, output-nya akan mirip dengan berikut ini:

autoscaling:
  enabled: true

Konsol

  1. Buka halaman Google Kubernetes Engine di konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Di daftar cluster, klik nama cluster yang ingin diverifikasi.

  3. Klik tab Nodes.

  4. Di bagian Node Pools, pastikan status Autoscalling node pool.

Membuat node pool yang memprioritaskan pengoptimalan reservasi yang tidak digunakan

Anda dapat menggunakan flag --location_policy=ANY saat membuat node pool untuk menginstruksikan autoscaler cluster agar memprioritaskan pemanfaatan reservasi yang tidak digunakan:

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location_policy=ANY

Ganti kode berikut:

  • POOL_NAME: nama node pool baru pilihan Anda.
  • CLUSTER_NAME: nama cluster.

Menonaktifkan penskalaan otomatis untuk node pool yang sudah ada

Anda dapat menonaktifkan penskalaan otomatis untuk node pool yang sudah ada menggunakan gcloud CLI atau konsol Google Cloud.

gcloud

Guna menonaktifkan penskalaan otomatis untuk node pool tertentu, gunakan flag --no-enable-autoscaling:

gcloud container clusters update CLUSTER_NAME \
    --no-enable-autoscaling \
    --node-pool=POOL_NAME \
    --region=COMPUTE_REGION

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster yang akan diperbarui.
  • POOL_NAME: nama node pool yang diinginkan.
  • COMPUTE_REGION: region Compute Engine untuk cluster baru. Untuk cluster zona, gunakan --zone=COMPUTE_ZONE.

Ukuran cluster tetap sesuai ukuran node pool default cluster saat ini, yang dapat diperbarui secara manual.

Konsol

Untuk menonaktifkan penskalaan otomatis bagi node pool tertentu:

  1. Buka halaman Google Kubernetes Engine di konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Di daftar cluster, klik nama cluster yang ingin diubah.

  3. Klik tab Nodes.

  4. Di bagian Node Pools, klik nama node pool yang ingin Anda ubah, lalu klik Edit.

  5. Di bagian Size, hapus centang pada kotak Enable autoscaling.

  6. Klik Save.

Mengubah ukuran node pool

Untuk cluster yang mengaktifkan penskalaan otomatis, autoscaler cluster akan otomatis mengubah ukuran node pool dalam batas yang ditentukan oleh nilai ukuran minimum (--min-nodes) dan ukuran maksimum (--max-nodes) atau ukuran total minimum (--total-min-nodes) dan ukuran total maksimum (--total-max-nodes). Kedua flag ini tidak dapat muncul bersamaan. Anda tidak dapat mengubah ukuran node pool secara manual dengan mengubah nilai-nilai ini.

Jika Anda ingin mengubah ukuran node pool secara manual di cluster dengan penskalaan otomatis yang diaktifkan, lakukan hal berikut:

  1. Nonaktifkan penskalaan otomatis pada node pool.
  2. Ubah ukuran cluster secara manual.
  3. Aktifkan kembali penskalaan otomatis dan tentukan ukuran minimum dan maksimum node pool.

Mencegah penjadwalan Pod di node yang dipilih

Anda dapat menggunakan taint startup atau status untuk mencegah penjadwalan Pod di node yang dipilih, bergantung pada kasus penggunaan.

Fitur ini tersedia di GKE versi 1.28 dan yang lebih baru.

Taint startup

Gunakan taint startup jika ada operasi yang harus diselesaikan sebelum Pod dapat berjalan di node. Misalnya, Pod tidak boleh berjalan hingga penginstalan driver di node selesai.

Autoscaler cluster memperlakukan node yang tercemar dengan taint startup sebagai belum siap, tetapi diperhitungkan selama logika penskalaan, dengan asumsi node tersebut akan segera siap.

Taint startup ditentukan sebagai semua taint dengan awalan startup-taint.cluster-autoscaler.kubernetes.io/

Status taint

Gunakan taint status jika GKE tidak boleh menggunakan node tertentu untuk menjalankan Pod.

Autoscaler cluster memperlakukan node yang ternoda dengan taint status sebagai siap, tetapi mengabaikannya selama logika penskalaan. Meskipun node yang tercemar sudah siap, tidak ada Pod yang akan berjalan. Jika Pod memerlukan lebih banyak resource, GKE akan menskalakan cluster dan mengabaikan node yang tercemar.

Status taint didefinisikan sebagai semua taint dengan awalan status-taint.cluster-autoscaler.kubernetes.io/

Mengabaikan taint

Abaikan taint didefinisikan sebagai semua taint dengan awalan ignore-taint.cluster-autoscaler.kubernetes.io/

Pemecahan masalah

Untuk mendapatkan saran pemecahan masalah, lihat halaman berikut:

Langkah selanjutnya