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.
Untuk mengikuti tuntutan aplikasi di AKS, Anda mungkin perlu menyesuaikan jumlah simpul yang menjalankan beban kerja Anda. Komponen autoscaler kluster mengawasi pod di kluster Anda yang tidak dapat dijadwalkan karena kendala sumber daya. Ketika autoscaler kluster mendeteksi masalah, itu meningkatkan jumlah simpul di kumpulan simpul untuk memenuhi permintaan aplikasi. Ini juga secara teratur memeriksa node untuk kurangnya pod yang berjalan dan menurunkan skala jumlah simpul sesuai kebutuhan.
Artikel ini menunjukkan cara mengaktifkan dan mengelola autoscaler kluster di AKS, yang didasarkan pada versi Kubernetes sumber terbuka.
Sebelum Anda mulai
Artikel ini memerlukan Azure CLI versi 2.0.76 atau yang lebih baru. Jalankan az --version untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.
Menggunakan autoscaler kluster pada kluster AKS
Penting
Autoscaler kluster adalah komponen Kubernetes. Meskipun kluster AKS menggunakan set skala komputer virtual untuk simpul, jangan aktifkan atau edit pengaturan secara manual untuk penskalaan otomatis set skala. Biarkan autoscaler kluster Kubernetes mengelola pengaturan skala yang dibutuhkan. Untuk informasi selengkapnya, lihat Dapatkah saya memodifikasi sumber daya AKS di grup sumber daya node?
Mengaktifkan autoscaler kluster pada kluster baru
Buat grup sumber daya menggunakan
az group createperintah .az group create --name myResourceGroup --location eastusBuat kluster AKS menggunakan
az aks createperintah dan aktifkan dan konfigurasikan autoscaler kluster pada kumpulan simpul untuk kluster menggunakan--enable-cluster-autoscalerparameter dan menentukan simpul--min-countdan--max-count. Contoh perintah berikut membuat kluster dengan satu simpul yang didukung oleh set skala komputer virtual, memungkinkan autoscaler kluster, menetapkan minimal satu dan maksimum tiga simpul:az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 1 \ --vm-set-type VirtualMachineScaleSets \ --load-balancer-sku standard \ --enable-cluster-autoscaler \ --min-count 1 \ --max-count 3 \ --generate-ssh-keysDibutuhkan beberapa menit untuk membuat kluster dan mengonfigurasi pengaturan autoscaler kluster.
Mengaktifkan penskala otomatis kluster pada kluster yang ada
Perbarui kluster yang ada menggunakan
az aks updateperintah dan aktifkan dan konfigurasikan autoscaler kluster pada kumpulan simpul menggunakan--enable-cluster-autoscalerparameter dan tentukan simpul--min-countdan--max-count. Contoh perintah berikut memperbarui kluster AKS yang ada untuk mengaktifkan autoscaler kluster pada kumpulan simpul untuk kluster dan menetapkan minimal satu dan maksimum tiga simpul:az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --enable-cluster-autoscaler \ --min-count 1 \ --max-count 3Dibutuhkan beberapa menit untuk memperbarui kluster dan mengonfigurasi pengaturan autoscaler kluster.
Menonaktifkan autoscaler kluster pada kluster
Nonaktifkan autoscaler kluster menggunakan
az aks updateperintah dan--disable-cluster-autoscalerparameter .az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --disable-cluster-autoscalerNode tidak dihapus saat autoscaler kluster dinonaktifkan.
Catatan
Anda dapat menskalakan kluster secara manual setelah menonaktifkan autoscaler kluster menggunakan az aks scale perintah . Jika Anda menggunakan autoscaler pod horizontal, ia terus berjalan dengan autoscaler kluster dinonaktifkan, tetapi pod mungkin akhirnya tidak dapat dijadwalkan jika semua sumber daya node sedang digunakan.
Mengaktifkan kembali autoscaler kluster pada kluster
Anda dapat mengaktifkan kembali autoscaler kluster pada kluster yang ada menggunakan az aks update perintah dan menentukan --enable-cluster-autoscalerparameter , --min-count, dan --max-count .
Menggunakan autoscaler kluster pada kumpulan simpul
Menggunakan autoscaler kluster pada beberapa kumpulan simpul
Anda dapat menggunakan autoscaler kluster dengan beberapa kumpulan simpul dan dapat mengaktifkan autoscaler kluster pada setiap kumpulan simpul individu dan meneruskan aturan penskalakan otomatis unik kepada mereka.
Perbarui pengaturan pada kumpulan simpul yang ada menggunakan
az aks nodepool updateperintah .az aks nodepool update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name nodepool1 \ --update-cluster-autoscaler \ --min-count 1 \ --max-count 5
Menonaktifkan autoscaler kluster pada kumpulan simpul
Nonaktifkan autoscaler kluster pada kumpulan simpul menggunakan
az aks nodepool updateperintah dan--disable-cluster-autoscalerparameter .az aks nodepool update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name nodepool1 \ --disable-cluster-autoscaler
Mengaktifkan kembali autoscaler kluster pada kumpulan simpul
Anda dapat mengaktifkan kembali autoscaler kluster pada kumpulan simpul menggunakan az aks nodepool update perintah dan menentukan --enable-cluster-autoscalerparameter , , --min-countdan --max-count .
Catatan
Jika Anda berencana menggunakan autoscaler kluster dengan kumpulan simpul yang mencakup beberapa zona dan memanfaatkan fitur penjadwalan yang terkait dengan zona, seperti penjadwalan topologi volume, kami sarankan Anda memiliki satu kumpulan simpul per zona dan mengaktifkan --balance-similar-node-groups melalui profil autoscaler. Ini memastikan autoscaler dapat berhasil meningkatkan dan menjaga ukuran kumpulan simpul seimbang.
Memperbarui pengaturan autoscaler kluster
Saat permintaan aplikasi Anda berubah, Anda mungkin perlu menyesuaikan jumlah simpul autoscaler kluster untuk menskalakan secara efisien.
Ubah jumlah simpul menggunakan
az aks updateperintah dan perbarui autoscaler kluster menggunakan--update-cluster-autoscalerparameter dan tentukan simpul--min-countyang diperbarui dan--max-count.az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --update-cluster-autoscaler \ --min-count 1 \ --max-count 5
Catatan
Autoscaler kluster memberlakukan jumlah minimum dalam kasus di mana jumlah aktual turun di bawah minimum karena faktor eksternal, seperti selama pengeluaran spot atau saat mengubah nilai jumlah minimum dari API AKS.
Menggunakan profil autoscaler kluster
Anda dapat mengonfigurasi detail yang lebih terperinci dari autoscaler kluster dengan mengubah nilai default di profil autoscaler di seluruh kluster. Misalnya, peristiwa menurunkan penskalaan terjadi setelah node kurang dimanfaatkan setelah 10 menit. Jika Anda memiliki beban kerja yang berjalan setiap 15 menit, Anda mungkin ingin mengubah profil autoscaler untuk menurunkan skala node yang kurang digunakan setelah 15 atau 20 menit. Saat Anda mengaktifkan autoscaler kluster, profil default digunakan kecuali Anda menentukan pengaturan yang berbeda.
Penting
Profil autoscaler kluster memengaruhi semua kumpulan simpul yang menggunakan autoscaler kluster. Anda tidak dapat mengatur profil autoscaler per kumpulan node. Saat Anda mengatur profil, kumpulan simpul yang ada dengan autoscaler kluster diaktifkan segera mulai menggunakan profil.
Pengaturan profil autoscaler kluster
Tabel berikut mencantumkan pengaturan yang tersedia untuk profil autoscaler kluster:
| Pengaturan | Deskripsi | Nilai default |
|---|---|---|
scan-interval |
Seberapa sering kluster dievaluasi ulang untuk peningkatan atau penurunan skala. | 10 detik |
scale-down-delay-after-add |
Berapa lama setelah peningkatan skala, evaluasi penurunan dilanjutkan. | 10 menit |
scale-down-delay-after-delete |
Berapa lama setelah penghapusan node, evaluasi penurunan skala dilanjutkan. | scan-interval |
scale-down-delay-after-failure |
Berapa lama setelah kegagalannya, evaluasi penurunan skala akan dilanjutkan. | Tiga menit |
scale-down-unneeded-time |
Berapa lama node tidak dibutuhkan sebelum memenuhi syarat untuk penurunan skala. | 10 menit |
scale-down-unready-time |
Berapa lama node yang belum siap tidak dibutuhkan sebelum memenuhi syarat untuk penurunan skala. | 20 menit |
ignore-daemonsets-utilization |
Apakah pod DaemonSet akan diabaikan saat menghitung pemanfaatan sumber daya untuk menurunkan skala. | false |
daemonset-eviction-for-empty-nodes |
Apakah Pod DaemonSet akan dihentikan dengan baik dari node kosong. | false |
daemonset-eviction-for-occupied-nodes |
Apakah Pod DaemonSet akan dihentikan dengan baik dari node yang tidak kosong. | true |
scale-down-utilization-threshold |
Nilai maksimum antara jumlah permintaan CPU dan jumlah permintaan Memori dari semua pod yang berjalan pada simpul, dibagi dengan sumber daya yang dapat dialokasikan simpul tersebut. Di bawah nilai ini, simpul dapat dipertimbangkan untuk menurunkan skala. | 0,5 |
max-graceful-termination-sec |
Jumlah detik maksimum, yang dilalui oleh alat penskalaan otomatis kluster untuk menunggu hingga pod dihentikan, ketika mencoba menurunkan skala node. | 600 detik |
balance-similar-node-groups |
Mendeteksi kumpulan node serupa dan menyeimbangkan jumlah node di antaranya. | false |
expander |
Jenis pembluas kumpulan simpul yang digunakan dalam peningkatan skala. Nilai yang mungkin antara lain most-pods, random, least-waste, dan priority. |
random |
skip-nodes-with-local-storage |
Jika true, autoscaler kluster tidak menghapus simpul dengan pod dengan penyimpanan lokal, misalnya, EmptyDir atau HostPath. |
false |
skip-nodes-with-system-pods |
Jika true, autoscaler kluster tidak menghapus simpul dengan pod dari kube-system (kecuali daemonSet atau mirror pod). |
true |
max-empty-bulk-delete |
Jumlah maksimum node kosong yang dapat dihapus pada saat yang sama. | 10 node |
new-pod-scale-up-delay |
Untuk skenario seperti skala burst/batch di mana Anda tidak ingin CA bertindak sebelum penjadwal Kubernetes dapat menjadwalkan semua pod, Anda dapat memberi tahu CA untuk mengabaikan pod yang tidak dijadwalkan sebelum mencapai usia tertentu. | 0 detik |
max-total-unready-percentage |
Persentase maksimum pada node yang belum dibaca di dalam kluster. Setelah persentase ini terlampaui, CA menghentikan operasi. | 45% |
max-node-provision-time |
Waktu maksimum yang dilalui oleh alat penskalaan otomatis untuk menunggu munculnya ketersediaan sebuah node. | 15 menit |
ok-total-unready-count |
Jumlah simpul yang belum dibaca yang diizinkan, terlepas dari max-total-unready-percentage. | Tiga simpul |
Catatan
Parameter ignore-daemonsets-utilization, daemonset-eviction-for-empty-node, dan daemonset-eviction-for-occupied-nodes adalah GA dari API versi 2024-05-01. Jika Anda menggunakan CLI untuk memperbarui bendera ini, pastikan Anda menggunakan versi 2.63 atau yang lebih baru.
Mengatur profil autoscaler kluster pada kluster baru
Buat kluster AKS menggunakan
az aks createperintah dan atur profil autoscaler kluster menggunakancluster-autoscaler-profileparameter .az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 1 \ --enable-cluster-autoscaler \ --min-count 1 \ --max-count 3 \ --cluster-autoscaler-profile scan-interval=30s \ --generate-ssh-keys
Mengatur profil autoscaler kluster pada kluster yang ada
Atur autoscaler kluster pada kluster yang ada menggunakan
az aks updateperintah dancluster-autoscaler-profileparameter . Contoh berikut mengonfigurasi pengaturan interval pemindaian sebagai 30 detik:az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --cluster-autoscaler-profile scan-interval=30s
Mengonfigurasi profil autoscaler kluster untuk menurunkan skala agresif
Catatan
Menurunkan skala secara agresif tidak disarankan untuk kluster yang sering mengalami peluasan skala dan penyempitan skala dalam interval singkat, karena berpotensi mengakibatkan waktu provisi simpul yang diperpanjang dalam keadaan ini. Peningkatan scale-down-delay-after-add dapat membantu dalam keadaan ini dengan menjaga simpul sekitar lebih lama untuk menangani beban kerja yang masuk.
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--cluster-autoscaler-profile scan-interval=30s,scale-down-delay-after-add=0m,scale-down-delay-after-failure=1m,scale-down-unneeded-time=3m,scale-down-unready-time=3m,max-graceful-termination-sec=30,skip-nodes-with-local-storage=false,max-empty-bulk-delete=1000,max-total-unready-percentage=100,ok-total-unready-count=1000,max-node-provision-time=15m
Mengonfigurasi profil autoscaler kluster untuk beban kerja bursty
az aks update \
--resource-group "myResourceGroup" \
--name myAKSCluster \
--cluster-autoscaler-profile scan-interval=20s,scale-down-delay-after-add=10m,scale-down-delay-after-failure=1m,scale-down-unneeded-time=5m,scale-down-unready-time=5m,max-graceful-termination-sec=30,skip-nodes-with-local-storage=false,max-empty-bulk-delete=100,max-total-unready-percentage=100,ok-total-unready-count=1000,max-node-provision-time=15m
Atur ulang profil autoscaler kluster ke nilai default
Reset profil autoscaler kluster menggunakan
az aks updateperintah .az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --cluster-autoscaler-profile ""
Ambil log dan status autoscaler kluster
Anda dapat mengambil log dan pembaruan status dari autoscaler kluster untuk membantu mendiagnosis dan men-debug peristiwa autoscaler. AKS mengelola autoscaler kluster atas nama Anda dan menjalankannya di sarana kontrol terkelola. Anda dapat mengaktifkan simpul sarana kontrol untuk melihat log dan operasi dari autoscaler kluster.
Siapkan aturan untuk log sumber daya untuk mendorong log autoscaler kluster ke Analitik Log menggunakan instruksi di sini. Pastikan Anda mencentang kotak
cluster-autoscalersaat memilih opsi untuk Log.Pilih bagian Log pada kluster Anda.
Masukkan contoh kueri berikut ke dalam Analitik Log:
AzureDiagnostics | where Category == "cluster-autoscaler"Lihat peningkatan skala autoscaler kluster tidak memicu peristiwa pada CLI.
kubectl get events --field-selector source=cluster-autoscaler,reason=NotTriggerScaleUpLihat peristiwa peringatan autoscaler kluster di CLI.
kubectl get events --field-selector source=cluster-autoscaler,type=WarningAutoscaler kluster juga menuliskan status kesehatan ke bernama
configmapcluster-autoscaler-status. Anda dapat mengambil log ini menggunakan perintah berikutkubectl:kubectl get configmap -n kube-system cluster-autoscaler-status -o yaml
Untuk informasi selengkapnya, lihat FAQ proyek GitHub Kubernetes/autoscaler.
Metrik Autoscaler Kluster
Anda dapat mengaktifkan metrik sarana kontrol (Pratinjau) untuk melihat log dan operasi dari autoscaler kluster dengan layanan terkelola Azure Monitor untuk add-on Prometheus
Langkah berikutnya
Artikel ini menunjukkan kepada Anda tentang cara menskalakan jumlah node AKS secara otomatis. Anda juga dapat menggunakan autoscaler pod horizontal untuk menyesuaikan jumlah pod yang menjalankan aplikasi Anda secara otomatis. Untuk langkah-langkah menggunakan autoscaler pod horizontal, lihat Menskalakan aplikasi di AKS.
Untuk lebih membantu meningkatkan pemanfaatan sumber daya kluster dan membebaskan CPU dan memori untuk pod lain, lihat Penskala Otomatis Pod Vertikal.