Penskalaan otomatis Pod horizontal


Halaman ini memberikan ringkasan penskalaan otomatis Pod horizontal dan menjelaskan cara kerjanya di Google Kubernetes Engine (GKE). Anda juga dapat membaca cara mengonfigurasi dan menggunakan penskalaan otomatis Pod horizontal pada cluster Anda.

Horizontal Pod Autoscaler mengubah bentuk workload Kubernetes dengan otomatis meningkatkan atau mengurangi jumlah Pod sebagai respons terhadap konsumsi memori atau CPU workload, atau sebagai respons terhadap metrik kustom yang dilaporkan dari dalam Kubernetes atau metrik eksternal dari sumber di luar cluster Anda.

Cluster GKE dengan penyediaan otomatis node akan otomatis menskalakan jumlah node dalam cluster berdasarkan perubahan jumlah Pod. Oleh karena itu, sebaiknya gunakan penskalaan otomatis Pod horizontal untuk semua cluster.

Alasan menggunakan penskalaan otomatis Pod horizontal

Saat pertama kali men-deploy workload ke cluster Kubernetes, Anda mungkin tidak yakin dengan persyaratan resource-nya dan bagaimana persyaratan tersebut dapat berubah, bergantung pada pola penggunaan, dependensi eksternal, atau faktor lainnya. Penskalaan otomatis Pod horizontal membantu memastikan bahwa workload berfungsi secara konsisten dalam berbagai situasi, dan memungkinkan Anda mengontrol biaya dengan hanya membayar kapasitas ekstra saat Anda membutuhkannya.

Tidak selalu mudah untuk memprediksi indikator yang menunjukkan kurangnya resource atau kurang dimanfaatkannya workload Anda. Horizontal Pod Autoscaler dapat otomatis menskalakan jumlah Pod dalam workload berdasarkan satu atau beberapa metrik dari jenis berikut:

  • Penggunaan resource sebenarnya: saat penggunaan CPU atau memori Pod tertentu melebihi nilai minimum. Hal ini dapat dinyatakan sebagai nilai mentah atau sebagai persentase jumlah yang diminta Pod untuk resource tersebut.

  • Metrik kustom: berdasarkan metrik yang dilaporkan oleh objek Kubernetes dalam cluster, seperti kecepatan permintaan klien per detik atau penulisan I/O per detik.

    Cara ini dapat berguna jika aplikasi Anda rentan terhadap bottleneck jaringan, bukan CPU atau memori.

  • Metrik eksternal: didasarkan pada metrik dari aplikasi atau layanan yang eksternal ke cluster Anda.

    Misalnya, workload Anda mungkin memerlukan lebih banyak CPU saat menyerap sejumlah besar permintaan dari pipeline seperti Pub/Sub. Anda dapat membuat metrik eksternal untuk ukuran antrean, dan mengonfigurasi Horizontal Pod Autoscaler agar otomatis meningkatkan jumlah Pod saat ukuran antrean mencapai batas yang ditentukan, dan untuk mengurangi jumlah Pod saat ukuran antrean menyusut.

Anda dapat menggabungkan Horizontal Pod Autoscaler dengan Vertical Pod Autoscaler, dengan beberapa batasan.

Cara kerja penskalaan otomatis Pod horizontal

Setiap Horizontal Pod Autoscaler yang dikonfigurasi beroperasi menggunakan loop kontrol. Horizontal Pod Autoscaler yang terpisah ada untuk setiap alur kerja. Setiap Horizontal Pod Autoscaler secara berkala memeriksa metrik workload tertentu terhadap batas target yang Anda konfigurasikan, dan mengubah bentuk workload secara otomatis.

Resource Per Pod

Untuk resource yang dialokasikan per Pod, seperti CPU, pengontrol membuat kueri API metrik resource untuk setiap container yang berjalan di Pod.

  • Jika Anda menentukan nilai mentah untuk CPU atau memori, nilai tersebut akan digunakan.
  • Jika Anda menentukan nilai persentase untuk CPU atau memori, Horizontal Pod Autoscaler menghitung nilai penggunaan rata-rata sebagai persentase permintaan memori atau CPU Pod tersebut.
  • Metrik kustom dan eksternal dinyatakan sebagai nilai mentah atau nilai rata-rata.

Pengontrol menggunakan nilai rata-rata atau mentah untuk metrik yang dilaporkan guna menghasilkan rasio, dan menggunakan rasio tersebut untuk menskalakan workload secara otomatis. Anda dapat membaca deskripsi dariAlgoritma Horizontal Pod Autoscaler dalam dokumentasi project Kubernetes.

Merespons beberapa metrik

Jika Anda mengonfigurasi workload untuk menskalakan otomatis berdasarkan beberapa metrik, Horizontal Pod Autoscaler akan mengevaluasi setiap metrik secara terpisah dan menggunakan algoritma penskalaan untuk menentukan skala workload baru berdasarkan setiap metrik. Skala terbesar dipilih untuk tindakan penskalaan otomatis.

Jika satu atau beberapa metrik tidak tersedia karena alasan tertentu, Horizontal Pod Autoscaler masih meningkatkan skala berdasarkan ukuran terbesar yang dihitung, tetapi tidak menurunkan skalanya.

Mencegah thrashing

Thrashing mengacu pada situasi saat Horizontal Pod Autoscaler mencoba melakukan tindakan penskalaan otomatis berikutnya sebelum workload selesai merespons tindakan penskalaan otomatis sebelumnya. Untuk mencegah thrashing, Horizontal Pod Autoscaler memilih rekomendasi terbesar berdasarkan lima menit terakhir.

Batasan

  • Jangan gunakan Horizontal Pod Autoscaler bersama dengan Vertical Pod Autoscaler pada CPU atau memori. Anda dapat menggunakan Horizontal Pod Autoscaler dengan Vertical Pod Autoscaler untuk metrik lainnya.
  • Jika Anda memiliki Deployment, jangan mengonfigurasi penskalaan otomatis Pod horizontal pada ReplicaSet atau Pengontrol Replikasi yang mencadangkannya. Saat Anda melakukan update berkelanjutan pada Pengontrol Deployment atau Replikasi, update tersebut akan diganti dengan Pengontrol Replikasi yang baru. Sebagai gantinya, konfigurasikan penskalaan otomatis Pod horizontal pada Deployment itu sendiri.
  • Anda tidak dapat menggunakan penskalaan otomatis Pod horizontal untuk workload yang tidak dapat diskalakan, seperti DaemonSets.
  • Anda tidak dapat menggunakan metrik kustom atau eksternal dengan penskalaan otomatis Pod Horizontal untuk menskalakan ke nol Pod, lalu menskalakan kembali.
  • Penskalaan otomatis Pod horizontal mengekspos metrik sebagai resource Kubernetes, yang memberlakukan batasan pada nama metrik seperti tidak boleh ada karakter huruf besar atau '/'. Adaptor metrik Anda mungkin mengizinkan penggantian nama. Misalnya, lihat operator prometheus-adapter as.
  • Horizontal Pod Autoscaler tidak akan menskalakan ke bawah jika salah satu metrik yang dikonfigurasi untuk dipantau tidak tersedia. Untuk memeriksa apakah Anda memiliki metrik yang tidak tersedia, lihat Melihat detail tentang Horizontal Pod Autoscaler.

Skalabilitas

Horizontal Pod Autoscaler tidak memiliki batas pasti jumlah objek HPA yang didukung. Namun, di atas sejumlah objek HPA tertentu, periode di antara penghitungan ulang HPA mungkin menjadi lebih lama dari 15 detik standar.

  • GKE versi minor 1.22 atau yang lebih baru: periode penghitungan ulang harus berlangsung dalam rentang 15 detik dengan maksimal 300 objek HPA.
  • GKE versi minor 1.31 atau yang lebih baru: periode penghitungan ulang harus berlangsung dalam rentang 15 detik dengan maksimal 1.000 objek HPA jika Profil HPA performa dikonfigurasi. Pelajari cara mengonfigurasi profil HPA Performa.

Faktor berikut juga dapat memengaruhi performa:

  • Menskalakan beberapa metrik: setiap metrik menambahkan panggilan pengambilan untuk penghitungan rekomendasi, yang memengaruhi periode penghitungan ulang.
  • Latensi stack metrik kustom: waktu respons di atas sekitar 50 milidetik akan lebih banyak dari yang biasanya diamati dengan metrik Kubernetes standar, yang memengaruhi periode penghitungan ulang.

Berinteraksi dengan objek HorizontalPodAutoscaler

Anda dapat mengonfigurasi Horizontal Pod Autoscaler untuk workload dan mendapatkan informasi tentang peristiwa penskalaan otomatis dan hal yang menyebabkannya, dengan mengunjungi halaman Workload di Konsol Google Cloud.

Setiap Horizontal Pod Autoscaler ada di cluster sebagai objek HorizontalPodAutoscaler. Anda dapat menggunakan perintah seperti kubectl get hpa atau kubectl describe hpa HPA_NAME untuk berinteraksi dengan objek ini.

Anda juga dapat membuat objek HorizontalPodAutoscaler menggunakan perintah kubectl autoscale.

Langkah berikutnya