Mengaktifkan penskalaan otomatis cluster

Dokumen ini menjelaskan penskalaan otomatis untuk cluster pengguna di Google Distributed Cloud.

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

Sebelum memulai

Baca batasan autoscaler cluster.

Autoscaler cluster membuat asumsi berikut:

  • Semua Pod yang direplikasi dapat dimulai ulang di beberapa node lain, yang mungkin menyebabkan gangguan singkat. Jika layanan Anda tidak dapat mentoleransi gangguan, sebaiknya jangan gunakan autoscaler cluster.

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

  • 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 menentukan jumlah minimum dan maksimum node untuk kumpulan tersebut.

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

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

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

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

Untuk setiap node pool, minReplicas harus ≥ 1. Namun, jumlah node cluster pengguna yang tidak tercemar pada waktu tertentu harus minimal 3. Ini berarti jumlah nilai minReplicas untuk semua kumpulan node yang diskalakan secara otomatis, ditambah jumlah nilai minReplicas untuk semua kumpulan node yang tidak diskalakan secara otomatis, harus setidaknya 3.replicas

Autoscaler cluster mempertimbangkan biaya relatif jenis instance di berbagai kumpulan node, dan berupaya memperluas kumpulan node dengan cara yang menyebabkan pemborosan seminimal mungkin.

Membuat cluster pengguna dengan penskalaan otomatis

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

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

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

Nilai minReplicas harus ≥ 1. Node pool tidak dapat diskalakan ke nol node.

Menambahkan node pool 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 node. 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 node pool yang sudah ada

Untuk mengaktifkan penskalaan otomatis untuk node pool di cluster yang ada:

  1. Edit nodePool tertentu dalam file konfigurasi cluster pengguna, dan sertakan 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 node pool yang sudah 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 autoscaler cluster

Anda dapat menentukan tindakan autoscaler cluster dengan beberapa cara.

Memeriksa log autoscaler cluster

Pertama, temukan nama Pod autoscaler cluster:

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

Periksa log di Pod autoscaler cluster:

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

Ganti POD_NAME dengan nama Pod autoscaler 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:

  • Pada pod (terutama yang tidak dapat dijadwalkan, atau pada node yang kurang digunakan)
  • Pada node
  • Pada peta konfigurasi 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 mendownscale cluster, lihat Gangguan dan penjadwalan Pod. Anda mungkin harus menambahkan PodDisruptionBudget untuk Pod kube-system. Untuk mengetahui informasi selengkapnya tentang menambahkan PodDisruptionBudget secara manual untuk Pod kube-system, lihat FAQ tentang autoscaler cluster Kubernetes.

  • Saat menurunkan skala, autoscaler 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 penghapusan node akan menyebabkan anggaran terlampaui, cluster tidak akan diperkecil skalanya.

Informasi selengkapnya

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