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.
Anda mungkin ingin mengubah ukuran komputer virtual (VM) Anda untuk mengakomodasi peningkatan jumlah penyebaran atau untuk menjalankan beban kerja yang lebih besar. Mengubah ukuran instans AKS secara langsung tidak didukung saat menggunakan Virtual Machine Scale Sets di AKS, seperti yang diuraikan dalam kebijakan dukungan untuk AKS:
Simpul agen AKS muncul di portal Microsoft Azure sebagai sumber daya IaaS Azure biasa. Tetapi mesin virtual ini disebarkan ke grup sumber daya Azure kustom (biasanya diawali dengan MC_*). Anda tidak dapat membuat kustomisasi langsung ke simpul ini menggunakan API atau sumber daya IaaS. Setiap perubahan kustom yang tidak dilakukan melalui API AKS tidak akan bertahan melalui peningkatan, skala, pembaruan, atau boot ulang.
Dalam artikel ini, Anda mempelajari metode yang direkomendasikan untuk mengubah ukuran kumpulan simpul dengan membuat kumpulan simpul baru dengan ukuran SKU yang diinginkan, mengotori dan menguras simpul yang ada, lalu menghapus kumpulan simpul yang ada.
Penting
Metode ini khusus untuk kluster AKS berbasis Virtual Machine Scale Sets. Saat menggunakan kumpulan simpul berbasis Komputer Virtual, Anda dapat dengan mudah memperbarui ukuran VM di kumpulan simpul yang ada menggunakan satu perintah Azure CLI dan memiliki beberapa ukuran VM dalam kumpulan simpul yang sama. Untuk informasi selengkapnya, lihat dokumentasi kumpulan simpul Komputer Virtual.
Mengubah ukuran kumpulan simpul VMSS di tempat (pratinjau)
Penting
Fitur pratinjau AKS tersedia atas dasar layanan mandiri dan pendaftaran sukarela. Pratinjau disediakan "apa adanya" dan "sebagaimana tersedia," dan pratinjau tersebut dikecualikan dari perjanjian tingkat layanan (SLA) serta garansi terbatas. Fitur pratinjau AKS sebagian didukung oleh dukungan pelanggan sebatas upaya terbaik. Dengan demikian, fitur-fitur ini tidak dimaksudkan untuk penggunaan produksi. Untuk informasi lebih lanjut, lihat artikel dukungan berikut ini:
Anda sekarang dapat mengubah ukuran VM (SKU) dari kumpulan simpul berbasis VMSS yang ada dalam satu perintah menggunakan az aks nodepool update --node-vm-size <new-size>. Saat Anda memicu pembaruan ini, penyedia sumber daya AKS melakukan peningkatan bergulir dengan:
- Menambahkan node baru dengan ukuran VM yang ditargetkan.
- Mengisolasi dan menguras node lama.
- Menghapus simpul lama.
Ini menghindari alur kerja manual pembuatan/cordon/drain/penghapusan yang dijelaskan di bagian lain artikel ini.
Cara kerja peluncuran pengubahan ukuran
Peluncuran pengubahan ukuran menggunakan mesin peningkatan bergulir yang sama dengan peningkatan gambar simpul dan peningkatan versi Kubernetes, sehingga mematuhi pengaturan terkait peningkatan berikut yang sudah dikonfigurasi pada kumpulan simpul. Secara khusus, penyesuaian ukuran mematuhi hal-hal berikut:
-
Lonjakan maks (
--max-surge): Mengontrol berapa banyak simpul tambahan dengan ukuran VM target yang ditambahkan selama peluncuran. Nilai yang lebih tinggi mengubah ukuran kumpulan lebih cepat tetapi mengonsumsi lebih banyak komputasi dan kuota IP; nilai yang lebih rendah lebih lambat tetapi kurang mengganggu. Default AKS adalah1, dan33%direkomendasikan untuk kumpulan simpul produksi. -
Batas waktu pengosongan node (
--drain-timeout): Berapa lama AKS menunggu pengeluaran pod pada setiap node lama sebelum menghapusnya dengan paksa. Defaultnya adalah 30 menit. Padukan ini dengan PodDisruptionBudgets yang sesuai agar beban kerja dapat dipindahkan dengan aman. -
Durasi rendam node (
--node-soak-duration): Berapa lama AKS menunggu setelah node baru menjadi Siap sebelum melanjutkan ke batch berikutnya. Berguna untuk memungkinkan beban kerja stabil pada ukuran VM baru sebelum melanjutkan peluncuran.
Karena pengubahan ukuran menggunakan kembali alur peningkatan, prasyarat yang sama berlaku: pastikan langganan Anda memiliki kapasitas yang cukup untuk ukuran VM target dan alamat IP subnet yang tersedia bagi node surge, serta PodDisruptionBudgets Anda mengizinkan setidaknya satu replika untuk digusur pada satu waktu; jika tidak, proses pengubahan ukuran dapat terhambat selama proses drain. Untuk rekomendasi secara menyeluruh, lihat Praktik terbaik untuk peningkatan versi kumpulan node AKS.
Prerequisites
- Versi API AKS
2026-01-02-previewatau yang lebih baru. - Versi terbaru dari ekstensi Azure CLI aks-preview.
Mengubah ukuran kumpulan simpul
az aks nodepool update Gunakan perintah dengan --node-vm-size parameter untuk mengubah ukuran VM dari kumpulan simpul berbasis VMSS yang ada:
az aks nodepool update \
--resource-group MyResourceGroup \
--cluster-name MyManagedCluster \
--name nodepool1 \
--node-vm-size Standard_D4s_v3
Validasi dan kombinasi yang tidak didukung
Penyedia sumber daya AKS memvalidasi perubahan ukuran permintaan dan memblokir perubahan ukuran VM yang tidak kompatibel. Perubahan berikut tidak didukung dalam pengubahan ukuran VMSS di tempat:
- Mengubah jenis pengontrol disk (misalnya, SCSI ke NVMe).
- Mengubah arsitektur CPU (misalnya, x64 ke ARM64).
- Mengubah dukungan komputasi rahasia (misalnya, mengaktifkan atau menonaktifkan SNP).
- Mengubah generasi hypervisor (misalnya, V1 ke V2).
- Menggabungkan pengubahan ukuran dengan peningkatan versi Kubernetes atau perubahan jumlah simpul dalam operasi yang sama.
Jika ukuran VM target Anda memerlukan salah satu perubahan di atas, gunakan alur kerja cordon-and-drain manual yang dijelaskan di bagian berikut sebagai gantinya.
Catatan
Pengubahan ukuran langsung memerlukan kapasitas tambahan sementara untuk menyediakan simpul baru dengan ukuran VM target sebelum mengosongkan simpul lama. Jika kumpulan simpul dikonfigurasi dengan --max-surge 0 (yaitu, --max-unavailable berlaku), permintaan mengubah ukuran ditolak dengan 400 Bad Request. Untuk melanjutkan, atur --max-surge ke setidaknya 1 saat mengubah ukuran menggunakan
az aks nodepool update \
--resource-group MyResourceGroup \
--cluster-name MyManagedCluster \
--name nodepool1 \
--node-vm-size Standard_D4s_v3 \
--max-surge 33%
dan secara opsional memulihkan nilai asli --max-surge dan --max-unavailable Anda setelah pengubahan ukuran selesai.
Buat kumpulan node baru dengan SKU yang diinginkan
Catatan
Setiap kluster AKS harus berisi setidaknya satu kumpulan node sistem dengan setidaknya satu node. Dalam contoh ini, kita menggunakan --modeSystem untuk menambahkan kumpulan simpul sistem sebagai pengganti kumpulan simpul sistem yang ingin kita sesuaikan ukurannya. Anda dapat memperbarui mode kumpulan simpul kapan saja. Anda juga dapat menambahkan kumpulan simpul pengguna dengan mengatur --mode ke User.
Saat menyesuaikan ukuran, pastikan Anda mempertimbangkan semua kebutuhan beban kerja, seperti zona ketersediaan, dan Anda dapat mengonfigurasi kumpulan simpul VMSS dengan sesuai. Anda mungkin perlu mengubah perintah berikut agar paling sesuai dengan kebutuhan Anda. Untuk daftar lengkap opsi konfigurasi, lihat az aks nodepool add halaman referensi.
Buat kumpulan simpul baru menggunakan
az aks nodepool addperintah . Dalam contoh ini, kami membuat kumpulan simpul baru,mynodepool, dengan tiga simpul danStandard_DS3_v2SKU VM untuk menggantikan kumpulan simpul yang ada,nodepool1, yang memilikiStandard_DS2_v2SKU VM.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name mynodepool \ --node-count 3 \ --node-vm-size Standard_DS3_v2 \ --mode System \ --no-waitDibutuhkan beberapa menit agar kumpulan simpul baru dibuat.
Dapatkan status kumpulan simpul baru menggunakan
kubectl get nodesperintah .kubectl get nodesOutput Anda harus menyerupai contoh output berikut, memperlihatkan kumpulan simpul
mynodepoolbaru dan kumpulannodepool1simpul yang ada :NAME STATUS ROLES AGE VERSION aks-mynodepool-98765432-vmss000000 Ready agent 23m v1.21.9 aks-mynodepool-98765432-vmss000001 Ready agent 23m v1.21.9 aks-mynodepool-98765432-vmss000002 Ready agent 23m v1.21.9 aks-nodepool1-12345678-vmss000000 Ready agent 10d v1.21.9 aks-nodepool1-12345678-vmss000001 Ready agent 10d v1.21.9 aks-nodepool1-12345678-vmss000002 Ready agent 10d v1.21.9
Membatasi node yang ada
Pengepungan menandai node tertentu sebagai tidak dapat dijadwalkan dan mencegah pod tambahan ditambahkan ke node.
Dapatkan nama simpul yang ingin Anda lakukan cordon menggunakan perintah
kubectl get nodes.kubectl get nodesOutput Anda harus menyerupai contoh output berikut, memperlihatkan simpul-simpul dalam kumpulan
nodepool1yang ingin Anda isolasi.NAME STATUS ROLES AGE VERSION aks-nodepool1-12345678-vmss000000 Ready agent 7d21h v1.21.9 aks-nodepool1-12345678-vmss000001 Ready agent 7d21h v1.21.9 aks-nodepool1-12345678-vmss000002 Ready agent 7d21h v1.21.9Cordon simpul-simpul yang ada menggunakan perintah
kubectl cordon, tentukan simpul yang diinginkan dalam daftar yang dipisahkan dengan spasi. Contohnya:kubectl cordon aks-nodepool1-12345678-vmss000000 aks-nodepool1-12345678-vmss000001 aks-nodepool1-12345678-vmss000002Output Anda harus menyerupai contoh output berikut, yang menunjukkan bahwa node tersebut diblokir:
node/aks-nodepool1-12345678-vmss000000 cordoned node/aks-nodepool1-12345678-vmss000001 cordoned node/aks-nodepool1-12345678-vmss000002 cordoned
Mengosongkan node yang ada
Penting
Agar berhasil mengosongkan node dan mengeluarkan pod yang sedang berjalan, pastikan bahwa PodDisruptionBudgets (PDB) memungkinkan setidaknya satu replika pod dipindahkan sekali. Jika tidak demikian, operasi pengosongan/pengusiran gagal. Untuk memeriksa hal ini, Anda dapat menjalankan kubectl get pdb -A dan memverifikasi ALLOWED DISRUPTIONS setidaknya 1 atau lebih tinggi.
Ketika Anda mengosongkan node, pod yang berjalan di atasnya dikeluarkan dan dibuat ulang pada node lain yang dapat dijadwalkan.
Mengeluarkan simpul yang ada menggunakan perintah
kubectl draindengan bendera--ignore-daemonsetsdan--delete-emptydir-data, menentukan simpul yang diinginkan dalam daftar yang dipisahkan dengan spasi. Contohnya:Penting
Penggunaan
--delete-emptydir-datadiperlukan untuk mengeluarkan pod yang dibuat oleh AKS, yaitucorednsdanmetrics-server. Jika Anda tidak menggunakan bendera ini, Anda mendapatkan kesalahan. Untuk informasi lebih lanjut, lihat dokumentasi tentang emptydir.kubectl drain aks-nodepool1-12345678-vmss000000 aks-nodepool1-12345678-vmss000001 aks-nodepool1-12345678-vmss000002 --ignore-daemonsets --delete-emptydir-dataSetelah operasi pengurasan selesai, semua pod (tidak termasuk pod yang dikontrol oleh set daemon) harus berjalan pada kumpulan simpul baru. Anda dapat memverifikasi ini menggunakan
kubectl get podsperintah .kubectl get pods -o wide -A
Memecahkan masalah pengusiran pod
Anda mungkin mengalami kesalahan berikut saat menguras simpul:
Error when evicting pods/[podname] -n [namespace] (will retry after 5s): Cannot evict pod as it would violate the pod's disruption budget.
Secara bawaan, kluster Anda memiliki anggaran gangguan pod yang dikelola AKS (seperti coredns-pdb atau konnectivity-agent) dengan MinAvailable dari 1. Misalnya, jika ada dua coredns pod yang berjalan, hanya satu pod yang dapat terganggu pada satu waktu. Meskipun salah satunya sedang dibuat ulang dan tidak tersedia, pod coredns lainnya tidak dapat dipindahkan karena anggaran gangguan pod. Masalah ini diselesaikan sendiri setelah pod coredns awal dijadwalkan dan mulai berjalan, memungkinkan agar pod kedua dapat dievakuasi dan dibuat ulang dengan baik.
Tip
Pertimbangkan untuk mengalihkan beban kerja pada node satu per satu untuk pengalaman migrasi yang lebih lancar dan untuk menghindari pembatasan. Untuk informasi selengkapnya, lihat:
Menghapus kumpulan node yang ada
Penting
Saat Anda menghapus kumpulan node, AKS tidak melakukan cordon dan drain. Untuk meminimalkan gangguan penjadwalan ulang pod yang saat ini berjalan pada kumpulan nodus yang ingin Anda hapus, lakukan cordon dan pengosongan pada semua nodus di kumpulan nodus sebelum menghapus.
Hapus kumpulan simpul asli menggunakan
az aks nodepool deleteperintah .az aks nodepool delete \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name nodepool1Verifikasi bahwa kluster AKS Anda hanya memiliki kumpulan simpul baru dengan aplikasi dan pod yang berjalan dengan benar menggunakan perintah
kubectl get nodes.kubectl get nodesOutput Anda harus menyerupai contoh output berikut, hanya menampilkan kumpulan simpul
mynodepoolbaru :NAME STATUS ROLES AGE VERSION aks-mynodepool-98765432-vmss000000 Ready agent 63m v1.21.9 aks-mynodepool-98765432-vmss000001 Ready agent 63m v1.21.9 aks-mynodepool-98765432-vmss000002 Ready agent 63m v1.21.9
Langkah berikutnya
Setelah mengubah ukuran kumpulan node dengan mengkarantina dan mengosongkan, pelajari lebih lanjut tentang menggunakan beberapa kumpulan node.