Aktifkan penskalaan otomatis cluster

Dokumen ini menjelaskan penskalaan otomatis untuk cluster pengguna di GKE di VMware.

Penskalaan otomatis cluster meningkatkan atau mengurangi jumlah node dalam kumpulan node berdasarkan permintaan workload Anda.

Sebelum memulai

Baca batasan penskala otomatis cluster.

Autoscaler cluster membuat asumsi berikut:

  • Semua Pod yang direplikasi dapat dimulai ulang pada beberapa node lain, yang dapat menyebabkan gangguan singkat. Jika layanan Anda tidak dapat menoleransi gangguan, sebaiknya jangan gunakan penskala otomatis cluster.

  • Pengguna atau administrator tidak mengelola node secara manual. Jika penskalaan otomatis diaktifkan untuk sebuah kumpulan node, Anda tidak dapat mengganti kolom replicas dari kumpulan node.

  • Semua node dalam satu kumpulan node memiliki kumpulan label yang sama.

Cara kerja penskalaan otomatis cluster

Autoscaler cluster bekerja berdasarkan kumpulan node. Saat mengaktifkan penskalaan otomatis untuk kumpulan node, Anda akan menentukan jumlah minimum dan maksimum node untuk kumpulan tersebut.

Autoscaler cluster menambah atau mengurangi jumlah node dalam kumpulan secara otomatis, berdasarkan permintaan resource (bukan penggunaan resource sebenarnya) dari Pod yang berjalan di node. Aplikasi ini memeriksa status Pod dan node secara berkala, serta mengambil tindakan:

  • Jika Pod tidak dapat dijadwalkan karena jumlah node dalam kumpulan tidak mencukupi, scaler cluster akan menambahkan node, hingga jumlah maksimum yang ditentukan.

  • Jika node kurang dimanfaatkan, dan semua Pod dapat dijadwalkan dengan lebih sedikit node dalam kumpulan, penskalaan otomatis cluster akan menghapus node, hingga ke nilai minimum yang ditentukan. Jika node tidak dapat dikosongkan, node akan dihentikan secara paksa, dan disk yang dikelola Kubernetes yang terpasang akan dilepas dengan aman.

Jika Pod meminta terlalu sedikit resource (atau belum mengubah setelan default, yang mungkin tidak mencukupi) dan node Anda mengalami kekurangan, cluster Autocomplete tidak dapat memperbaiki situasi tersebut. Anda dapat membantu memastikan bahwa scaler cluster berfungsi secara akurat dengan membuat permintaan resource eksplisit untuk semua workload Anda.

Untuk kumpulan node individual, minReplicas harus ≥ 1. Namun, jumlah node cluster pengguna yang tidak tersentuh pada waktu tertentu harus minimal 3. Artinya, jumlah nilai minReplicas untuk semua kumpulan node yang diskalakan otomatis, serta jumlah nilai replicas untuk semua kumpulan node yang tidak diskalakan secara otomatis, harus minimal 3.

Autoscaler cluster mempertimbangkan biaya relatif dari jenis instance di berbagai kumpulan node, dan berupaya memperluas kumpulan node sedemikian rupa untuk meminimalkan pemborosan.

Membuat cluster pengguna dengan penskalaan otomatis

Untuk membuat cluster pengguna dengan penskalaan otomatis yang diaktifkan untuk kumpulan node, isi bagian autoscaling untuk kumpulan node di file konfigurasi cluster pengguna. Contoh:

nodePools:
- name: pool‐1
  …
  replicas: 3
  ...
  autoscaling:
    minReplicas: 1
    maxReplicas: 5

Konfigurasi sebelumnya membuat kumpulan node dengan 3 replika, dan menerapkan penskalaan otomatis dengan ukuran kumpulan node minimum sebagai 1 dan ukuran kumpulan node maksimum sebagai 5.

Nilai minReplicas harus ≥ 1. Kumpulan node tidak dapat memperkecil skala ke nol node.

Menambahkan kumpulan node dengan penskalaan otomatis

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

  1. Edit file konfigurasi cluster pengguna untuk menambahkan kumpulan node baru, dan sertakan bagian autoscaling untuk kumpulan tersebut. Tetapkan nilai replicas, minReplicas, dan maxReplicas sesuai keinginan. Contoh:

    nodePools:
    - name: my-new-node-pool
      …
      replicas: 3
      ...
      autoscaling:
        minReplicas: 2
        maxReplicas: 6
    
  2. Update cluster:

    gkectl update cluster --config USER_CLUSTER_CONFIG \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

Mengaktifkan penskalaan otomatis untuk kumpulan node yang ada

Guna mengaktifkan penskalaan otomatis untuk kumpulan node di cluster yang ada:

  1. Mengedit nodePool tertentu dalam file konfigurasi cluster pengguna, dan menyertakan bagian autoscaling. Tetapkan nilai minReplicas dan maxReplicas sesuai keinginan.

    nodePools:
    - name: my-existing-node-pool
      …
      replicas: 3
      ...
      autoscaling:
        minReplicas: 1
        maxReplicas: 5
    
  2. Update cluster:

    gkectl update cluster --config USER_CLUSTER_CONFIG \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

Menonaktifkan penskalaan otomatis untuk kumpulan node yang ada

Untuk menonaktifkan penskalaan otomatis bagi node pool tertentu:

  1. Edit file konfigurasi cluster pengguna dan hapus bagian autoscaling untuk kumpulan node tersebut.

  2. Jalankan gkectl update cluster.

Memeriksa perilaku penskalaan otomatis cluster

Anda dapat menentukan apa yang dilakukan penskala otomatis cluster dengan beberapa cara.

Memeriksa log penskalaan otomatis cluster

Pertama, cari nama Pod penskalaan otomatis cluster:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get pods -n USER_CLUSTER_NAME | grep cluster-autoscaler

Periksa log di Pod penskalaan otomatis cluster:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG logs cluster-autoscaler-POD_NAME --container cluster-autoscaler -n USER_CLUSTER_NAME

Ganti POD_NAME dengan nama Pod penskalaan otomatis cluster.

Memeriksa peta konfigurasi

Autoscaler cluster memublikasikan peta konfigurasi kube-system/cluster-autoscaler-status.

Untuk melihat peta konfigurasi:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get configmap cluster-autoscaler-status -n kube-system -o yaml

Periksa peristiwa penskalaan otomatis cluster.

Anda dapat memeriksa peristiwa penskalaan otomatis cluster:

  • Di pod (terutama yang tidak dapat dijadwalkan, atau pada node yang kurang dimanfaatkan)
  • Pada node
  • Di config map kube-system/cluster-autoscaler-status.

Batasan

Autoscaler cluster memiliki batasan berikut:

Pemecahan masalah

  • Terkadang, autoscaler cluster tidak dapat menurunkan skala sepenuhnya dan ada node tambahan setelah menurunkan skala. Hal ini dapat terjadi jika Pod sistem yang diperlukan dijadwalkan ke node lain, karena tidak ada pemicu bagi Pod tersebut untuk dipindahkan ke node lain. Lihat Saya memiliki beberapa node dengan pemakaian rendah, tetapi tidak diperkecil skalanya. Mengapa demikian?. Untuk mengatasi batasan ini, Anda dapat mengonfigurasi anggaran gangguan Pod.

  • Jika Anda mengalami masalah saat menurunkan skala cluster, lihat Penjadwalan dan gangguan pod. Anda mungkin perlu menambahkan PodDisruptionBudget untuk Pod kube-system. Untuk mengetahui informasi selengkapnya tentang menambahkan PodDisruptionBudget secara manual untuk Pod kube-system, lihat FAQ tentang penskalaan otomatis cluster Kubernetes.

  • Saat menurunkan skala, penskalaan otomatis cluster akan mengikuti aturan penjadwalan dan penghapusan yang ditetapkan di Pod. Pembatasan ini dapat mencegah node dihapus oleh autoscaler. Penghapusan node dapat dicegah jika node tersebut berisi Pod dengan salah satu kondisi berikut:

  • PodDisruptionBudget aplikasi dapat mencegah penskalaan otomatis. Jika menghapus node akan menyebabkan anggaran terlampaui, skala cluster tidak akan diturunkan.

Informasi selengkapnya

Untuk informasi selengkapnya tentang penskalaan otomatis cluster dan mencegah gangguan, lihat pertanyaan berikut di FAQ tentang penskalaan otomatis cluster Kubernetes: