Aktifkan penskalaan otomatis cluster

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

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

Sebelum memulai

Baca tentang batasan autoscaler cluster.

Penskala otomatis cluster membuat asumsi berikut:

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

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

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

Cara kerja penskalaan otomatis cluster

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

Penskala otomatis cluster menambah atau mengurangi jumlah node dalam kumpulan secara otomatis, berdasarkan permintaan sumber daya (bukan sumber daya aktual utilisasi) atas Pod yang berjalan di node. Secara berkala memeriksa status Pod dan node, lalu mengambil tindakan:

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

  • Jika node kurang dimanfaatkan, dan semua Pod dapat dijadwalkan dengan lebih sedikit node dalam kumpulan, autoscaler cluster akan menghapus node, hingga ke jumlah yang ditentukan minimum. Jika sebuah node tidak dapat dikeringkan dengan baik, node akan dipaksa dihentikan, dan disk yang dikelola Kubernetes yang terpasang dilepas dengan aman.

Jika Pod Anda meminta terlalu sedikit resource (atau belum mengubah default-nya, (mungkin tidak mencukupi) dan {i>node<i} Anda mengalami kekurangan, yaitu cluster autoscaler tidak dapat memperbaiki situasi tersebut. Anda dapat membantu memastikan bahwa autoscaler cluster bekerja 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 diwarnai pada waktu tertentu harus minimal 3. Ini berarti jumlah nilai minReplicas untuk semua kumpulan node yang diskalakan otomatis, ditambah jumlah nilai replicas untuk semua kumpulan node yang tidak diskalakan secara otomatis, minimal 3.

Penskala otomatis cluster mempertimbangkan biaya relatif dari jenis instance berbagai kumpulan node, dan mencoba memperluas kumpulan node menghasilkan limbah yang seminimal mungkin.

Membuat cluster pengguna dengan penskalaan otomatis

Untuk membuat cluster pengguna dengan penskalaan otomatis yang diaktifkan untuk kumpulan node, isi kolom autoscaling untuk kumpulan node pada 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 1 dan ukuran kumpulan node maksimum sebagai 5.

Nilai minReplicas harus ≥ 1. Kumpulan node tidak dapat diperkecil hingga nol node.

Menambahkan kumpulan node dengan penskalaan otomatis

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

  1. Mengedit file konfigurasi cluster pengguna untuk menambahkan node pool baru, dan menyertakan bagian autoscaling untuk kolam renang. 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 dalam cluster yang ada:

  1. Mengedit nodePool tertentu di 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 autoscaler cluster

Anda dapat mengetahui tindakan yang dilakukan autoscaler cluster dengan beberapa cara.

Memeriksa log autoscaler cluster

Pertama, cari nama cluster autoscaler Pod:

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 kube-system/cluster-autoscaler-status peta konfigurasi.

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 dimanfaatkan)
  • Pada node
  • Pada config map kube-system/cluster-autoscaler-status.

Batasan

Penskala otomatis 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 dalam menurunkan skala cluster, lihat Penjadwalan dan gangguan pod. Anda mungkin harus menambahkan PodDisruptionBudget untuk Pod kube-system. Sebagai informasi selengkapnya tentang cara menambahkan PodDisruptionBudget secara manual untuk kube-system Pod, lihat FAQ autoscaler cluster Kubernetes.

  • Saat memperkecil skala, autoscaler cluster mematuhi aturan penjadwalan dan penghapusan yang ditetapkan pada 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 mungkin mencegah penskalaan otomatis. Jika menghapus node akan menyebabkan anggaran terlampaui, cluster tidak akan diturunkan skalanya.

Informasi selengkapnya

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