Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Saat menjalankan aplikasi di Azure Kubernetes Service (AKS), Anda dapat menskalakan pod, sumber daya pod, simpul, atau beban kerja berbasis peristiwa agar sesuai dengan perubahan permintaan. AKS mendukung penskalaan manual, Horizontal Pod Autoscaler (HPA), Vertical Pod Autoscaler (VPA), Cluster Autoscaler, Kubernetes Event-driven Autoscaling (KEDA), node autoprovisioning, dan burst scaling dengan Azure Container Instances (ACI).
Pilih metode penskalakan yang tepat
| Metode penskalakan | Paling cocok untuk | Metrik utama | Guide |
|---|---|---|---|
| Horizontal Pod Autoscaler (HPA) | Beban kerja tanpa status atau dapat dipartisi dengan permintaan variabel | Pemanfaatan CPU, RPS, kedalaman antrean | Kapan saya harus menggunakan Horizontal Pod Autoscaling (HPA) di Kubernetes? |
| Vertical Pod Autoscaler (VPA) | Beban kerja yang tidak dapat diparalelkan; menyesuaikan permintaan sumber daya pod secara tepat | Penggunaan sumber daya CPU/memori | Gunakan Autoscaler Pod Vertikal di AKS |
| Autoscaler Kluster | Kapasitas tingkat node ketika pod tetap Tertunda | Pod yang tertunda | Gunakan Cluster Autoscaler di AKS |
| KEDA | Beban kerja berbasis peristiwa; penskalaan ke nol diperlukan | Panjang antrean, tumpukan kejadian | Gambaran umum add-on KEDA |
| Penskalaan ledakan ACI | Penanganan lonjakan di luar kapasitas kumpulan node | Lonjakan permintaan | Membuat simpul virtual dengan Azure Container Instances |
Menskalakan pod atau simpul secara manual
Anda dapat menskalakan replika dan simpul pod secara manual untuk menguji bagaimana aplikasi Anda merespons perubahan sumber daya yang tersedia atau untuk mempertahankan jumlah kapasitas tetap. Untuk menskalakan secara manual, tentukan jumlah replika atau simpul yang diperlukan. Kubernetes kemudian membuat atau menghapus pod, sementara AKS menambahkan atau menghapus simpul dari kumpulan simpul yang berlaku.
Saat Anda mengurangi jumlah node, AKS memanggil API Azure Compute yang sesuai dengan tipe komputasi kluster tersebut. Untuk kluster yang dibangun di atas Virtual Machine Scale Sets, API Virtual Machine Scale Sets menentukan simpul mana yang akan dihapus. Untuk informasi selengkapnya, lihat FAQ tentang Virtual Machine Scale Sets.
Untuk memulai, lihat:
Horizontal Pod Autoscaler
Gunakan HPA saat beban kerja Anda dapat menjalankan beberapa replika identik dan permintaan berfluktuasi. Penskalaan dilakukan berdasarkan CPU/memori, metrik aplikasi (permintaan per detik, latensi), atau metrik antrean eksternal dan backlog — dan sebaiknya dikombinasikan dengan Cluster Autoscaler untuk kapasitas node.
Pelajari lebih lanjut: Kapan saya harus menggunakan Horizontal Pod Autoscaling (HPA) di Kubernetes?
Lihat juga: Gunakan Vertical Pod Autoscaler di AKS untuk menyesuaikan permintaan CPU dan memori pod agar sesuai kebutuhan.
Autoscaler Vertikal Pod
Penskala Otomatis Pod Vertikal menganalisis CPU pod dan penggunaan memori dan merekomendasikan atau menerapkan permintaan sumber daya yang sesuai. Gunakan VPA untuk beban kerja ukuran yang tepat yang tidak dapat diskalakan secara efisien dengan menambahkan replika atau untuk meningkatkan penjadwalan dan pemanfaatan sumber daya.
Bergantung pada mode pembaruannya, VPA dapat menerapkan rekomendasi ketika pod dibuat atau dikeluarkan dan dibuat ulang pod dengan permintaan sumber daya yang diperbarui. Tinjau persyaratan ketersediaan beban kerja sebelum mengizinkan VPA menerapkan perubahan secara otomatis.
Untuk memulai, lihat Menggunakan Autoscaler Pod Vertikal di AKS.
Autoscaler Kluster
Cluster Autoscaler menyesuaikan jumlah node dalam pool node sesuai dengan kebutuhan penjadwalan pod. Menambahkan simpul ketika pod tidak dapat dijadwalkan karena kapasitas simpul tidak mencukupi dan menghapus simpul yang kurang dimanfaatkan ketika beban kerjanya dapat berjalan di tempat lain.
Cluster Autoscaler umumnya digunakan dengan HPA. HPA menyesuaikan jumlah replika pod berdasarkan permintaan beban kerja, sementara Cluster Autoscaler menyesuaikan kapasitas node untuk mengakomodasi pod tersebut.
Untuk memulai, lihat Menggunakan Autoscaler Kluster di AKS.
Peristiwa peluasan skala
Jika kumpulan simpul tidak memiliki sumber daya komputasi yang memadai untuk pod, pod tetap berstatus Pending. Ketika Cluster Autoscaler mendeteksi pod yang tidak dapat ditempatkan karena keterbatasan sumber daya pada kumpulan node, Cluster Autoscaler menambah jumlah node dalam kumpulan node. Kubernetes menjadwalkan pod yang tertunda setelah simpul baru diprovisikan dan menjadi siap.
Penyediaan simpul berbasis VM dapat memakan waktu beberapa menit. Untuk beban kerja dengan lonjakan permintaan mendadak, pertimbangkan penggunaan node virtual dan Azure Container Instances.
Peristiwa penyempurnaan skala
Cluster Autoscaler memantau simpul yang kurang dimanfaatkan dan menentukan apakah pod-podnya dapat berjalan di simpul lain. Ketika node tidak lagi diperlukan, Kubernetes menjadwalkan ulang pod-nya dan AKS menghapus simpul dari kumpulan simpul.
Operasi scale-in dapat mengganggu beban kerja saat pod berpindah di antara node. Jalankan beberapa replika pod dan konfigurasikan kontrol ketersediaan yang sesuai untuk meminimalkan gangguan.
Autoscaling berbasis Peristiwa Kubernetes
Autoscaling Berbasis Peristiwa Kubernetes (KEDA) adalah komponen sumber terbuka yang menyesuaikan skala beban kerja berdasarkan peristiwa. KEDA memperluas Kubernetes dengan sumber daya kustom, termasuk ScaledObject, yang menjelaskan bagaimana beban kerja harus merespons sumber atau metrik peristiwa.
KEDA berguna untuk beban kerja yang memproses antrean, aliran, pesan, atau backlog peristiwa lainnya. Ini dapat menskalakan beban kerja menjadi nol saat tidak ada event yang tersedia dan meningkatkan jumlah replika saat backlog bertambah.
Untuk memulai, lihat gambaran umum add-on KEDA.
Pemetaan otomatis simpul
Penyediaan otomatis node (NAP) menggunakan proyek sumber terbuka Karpenter untuk menyediakan dan mengelola node sesuai dengan kebutuhan pod yang tertunda. NAP memilih SKU mesin virtual dan jumlah node yang sesuai untuk memenuhi permintaan beban kerja secara real-time.
NAP dimulai dengan sekumpulan SKU VM yang diizinkan dan memilih kapasitas untuk beban kerja yang tertunda. Anda dapat menentukan batas sumber daya dan preferensi penjadwalan untuk mengontrol bagaimana ia menyediakan simpul dan mendistribusikan beban kerja.
Skalabilitas dan perlindungan bidang kontrol
Kubernetes memiliki amplop skala multidirmensional di mana setiap jenis sumber daya menempatkan tuntutan yang berbeda pada sarana kontrol. Misalnya, watch pada resource seperti Secret dapat menghasilkan panggilan list ke server API Kubernetes dan menambah beban pada control plane dibandingkan resource yang tidak menggunakan watch.
Karena control plane mengelola operasi sumber daya di seluruh kluster, melakukan penskalaan besar-besaran pada satu dimensi dapat mengurangi kapasitas yang tersedia pada dimensi lainnya. Misalnya, menjalankan ratusan ribu pod dapat memengaruhi tingkat mutasi pod yang didukung sarana kontrol. Untuk rekomendasi, lihat Praktik terbaik klien Kubernetes untuk kluster AKS skala besar.
AKS secara otomatis menskalakan komponen sarana kontrol berdasarkan sinyal seperti jumlah total inti kluster dan CPU atau tekanan memori pada komponen sarana kontrol.
Untuk memeriksa apakah sarana kontrol telah ditingkatkan skalanya large-cluster-control-plane-scaling-status , periksa ConfigMap:
kubectl describe configmap large-cluster-control-plane-scaling-status -n kube-system
Perlindungan sarana kontrol
Jika penskalaan otomatis server API tidak dapat menstabilkannya saat beban tinggi, AKS dapat menerapkan pelindung server API terkelola. Mekanisme perlindungan terakhir ini membatasi laju permintaan klien non-sistem untuk mencegah bidang kontrol menjadi tidak responsif. Panggilan ke server API yang kritis bagi sistem dari komponen seperti kubelet tetap berfungsi.
Untuk menentukan apakah penjaga server API terkelola telah diterapkan, periksa aks-managed-apiserver-guardFlowSchema dan PriorityLevelConfiguration:
kubectl get flowschemas
kubectl get prioritylevelconfigurations
Jika sumber daya ini ada, lihat panduan pemecahan masalah api server dan etcd untuk panduan mitigasi.
Luapkan ke Azure Container Instances (ACI)
Anda dapat mengintegrasikan AKS dengan Azure Container Instances untuk menangani peningkatan permintaan yang cepat. Penskalaan otomatis pod dapat membuat lebih banyak replika daripada yang dapat didukung oleh pool node yang ada, sementara penyediaan node tambahan berbasis VM dapat memakan waktu beberapa menit. ACI menyediakan kapasitas komputasi tanpa memerlukan simpul VM tambahan.
Komponen simpul virtual AKS didasarkan pada Kubelet Virtual dan menyajikan ACI sebagai simpul Kubernetes virtual. Kubernetes dapat menjadwalkan pod yang memenuhi syarat melalui simpul virtual untuk berjalan sebagai instans kontainer ACI alih-alih langsung pada simpul VM AKS.
Simpul virtual menggunakan subnet lain di jaringan virtual yang sama dengan kluster AKS. Konfigurasi ini menyediakan konektivitas jaringan privat antara AKS dan ACI sambil memungkinkan ACI bertindak sebagai ekstensi logis kluster.
Langkah berikutnya
Gunakan sumber daya berikut untuk mengimplementasikan metode penskalakan yang sesuai dengan beban kerja Anda:
- Skalakan pod secara manual atau node
- Kapan saya harus menggunakan Horizontal Pod Autoscaling (HPA) di Kubernetes?
- Gunakan Autoscaler Pod Vertikal di AKS
- Gunakan Cluster Autoscaler di AKS
- Gunakan add-on KEDA
- Gunakan penyediaan node otomatis
- Membuat simpul virtual dengan Azure Container Instances
Untuk informasi selengkapnya tentang konsep inti Kubernetes dan AKS, lihat: