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 cluster autoscaler memantau pod di kluster Anda yang tidak dapat dijadwalkan akibat keterbatasan sumber daya. Saat cluster autoscaler mendeteksi adanya kendala, komponen ini akan menambah jumlah node dalam pool node untuk memenuhi kebutuhan aplikasi. Sistem ini juga secara berkala memeriksa node yang tidak memiliki pod yang berjalan dan mengurangi jumlah node 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.
Gunakan autoscaler kluster pada kluster AKS
Penting
Autoscaler klaster adalah komponen Kubernetes. Meskipun kluster AKS menggunakan virtual machine scale set untuk node, jangan aktifkan atau ubah pengaturan autoskalanya secara manual. Biarkan autoscaler kluster Kubernetes mengelola pengaturan skala yang dibutuhkan. Untuk informasi selengkapnya, lihat Dapatkah saya memodifikasi sumber daya AKS di grup sumber daya node?
Aktifkan penskala otomatis klaster di klaster 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 mesin virtual, mengaktifkan penskala otomatis kluster, serta menetapkan minimum satu simpul 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 update perintah dan aktifkan dan konfigurasikan autoscaler kluster pada kumpulan simpul menggunakan --enable-cluster-autoscaler parameter dan tentukan simpul --min-count dan --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 3
Dibutuhkan beberapa menit untuk memperbarui kluster dan mengonfigurasi pengaturan autoscaler kluster.
Nonaktifkan penskala otomatis kluster pada kluster
Nonaktifkan penskala otomatis kluster menggunakan perintah az aks update dan parameter --disable-cluster-autoscaler.
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--disable-cluster-autoscaler
Node 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, autoscaler tersebut tetap berjalan meskipun autoscaler kluster dinonaktifkan, tetapi pod mungkin tidak dapat dijadwalkan jika semua sumber daya node sedang digunakan.
Aktifkan kembali penskala otomatis klaster di klaster
Anda dapat mengaktifkan kembali autoscaler kluster pada kluster yang sudah ada menggunakan perintah az aks update dengan menentukan parameter --enable-cluster-autoscaler, --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 update perintah .
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 cluster autoscaler pada node pool menggunakan perintah az aks nodepool update dan parameter --disable-cluster-autoscaler.
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 dengan menggunakan perintah az aks nodepool update serta menyertakan parameter --enable-cluster-autoscaler, --min-count, dan --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 perintah az aks update dan perbarui cluster autoscaler menggunakan parameter --update-cluster-autoscaler dengan menentukan --min-count dan --max-count simpul yang telah diperbarui.
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 penurunan skala terjadi setelah node kurang digunakan selama 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 menetapkan profil, kumpulan node yang ada dan mengaktifkan cluster autoscaler akan langsung mulai menggunakan profil tersebut.
Pengaturan profil penskalaan otomatis kluster
Tabel berikut mencantumkan pengaturan yang tersedia untuk profil autoscaler kluster:
| Pengaturan | Deskripsi | Nilai bawaan |
|---|---|---|
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 sebuah node harus tidak dibutuhkan sebelum layak untuk diturunkan skalanya. | 10 menit |
scale-down-unready-time |
Berapa lama node yang tidak siap harus tetap tidak diperlukan sebelum memenuhi syarat untuk diturunkan skalanya. | 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 secara aman pada node kosong. | false |
daemonset-eviction-for-occupied-nodes |
Apakah pod DaemonSet akan dihentikan dengan semestinya pada 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 ditunggu oleh autoscaler kluster untuk penghentian pod saat mencoba menurunkan skala node. | 600 detik |
balance-similar-node-groups |
Mendeteksi kumpulan node serupa dan menyeimbangkan jumlah node di antaranya. | false |
expander |
Jenis kumpulan simpul yang digunakan expander saat penskalaan ke atas. Nilai yang mungkin antara lain most-pods, random, least-waste, dan priority. |
random |
skip-nodes-with-local-storage |
Jika true, cluster autoscaler tidak menghapus node yang memiliki pod dengan penyimpanan lokal, misalnya EmptyDir atau HostPath. |
false |
skip-nodes-with-system-pods |
Jika true, cluster autoscaler tidak menghapus node dengan pod dari kube-system (kecuali untuk DaemonSet atau pod mirror). |
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 node yang belum siap 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 node yang belum siap yang diizinkan, terlepas dari max-total-unready-percentage. | Tiga simpul |
Catatan
Parameter ignore-daemonsets-utilization, daemonset-eviction-for-empty-nodes, dan daemonset-eviction-for-occupied-nodes telah tersedia secara umum sejak versi API 2024-05-01.
Atur profil penskala otomatis pada kluster baru
Buat kluster AKS menggunakan az aks create perintah dan atur profil autoscaler kluster menggunakan cluster-autoscaler-profile parameter .
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 cluster autoscaler pada cluster yang sudah ada menggunakan perintah az aks update dan parameter cluster-autoscaler-profile. Contoh berikut mengonfigurasi pengaturan interval pemindaian sebagai 30 detik:
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--cluster-autoscaler-profile scan-interval=30s
Konfigurasikan profil penskala otomatis kluster untuk penurunan skala yang agresif
Catatan
Menurunkan skala secara agresif tidak disarankan untuk kluster yang sering mengalami scale-out dan scale-in dalam interval singkat, karena hal ini berpotensi menyebabkan waktu penyediaan node menjadi lebih lama dalam kondisi tersebut. 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
Konfigurasikan profil autoscaler kluster untuk beban kerja yang melonjak
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 dengan menggunakan perintah az aks update.
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--cluster-autoscaler-profile ""
Mengambil log dan status autoscaler klaster
Anda dapat mengambil log dan pembaruan status dari cluster autoscaler untuk membantu mendiagnosis dan menelusuri masalah pada kejadian cluster autoscaler. AKS mengelola autoscaler kluster atas nama Anda dan menjalankannya di sarana kontrol terkelola. Anda dapat mengaktifkan pengelogan sarana kontrol untuk melihat log dan operasi dari autoscaler kluster.
Siapkan aturan untuk log sumber daya guna mengirim log cluster autoscaler ke Log Analytics dengan mengikuti petunjuk 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 peristiwa peningkatan skala autoscaler kluster yang tidak terpicu di 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 cluster juga menulis status kesehatan ke sumber daya
configmapyang bernamacluster-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 klaster
Anda dapat mengaktifkan metrik bidang kontrol (Pratinjau) untuk melihat log dan operasi dari cluster autoscaler dengan add-on layanan terkelola Azure Monitor untuk Prometheus
Konten terkait
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.