Mengubah ukuran kumpulan node di Azure Kubernetes Service (AKS)
Karena meningkatnya jumlah penerapan atau untuk menjalankan beban kerja yang lebih besar, Anda mungkin ingin mengubah rencana set skala mesin virtual atau mengubah ukuran instans AKS. Namun, sesuai dengan kebijakan dukungan untuk AKS:
Simpul agen AKS muncul di portal Microsoft Azure sebagai sumber daya Azure IaaS reguler. Tetapi mesin virtual ini disebarkan ke grup sumber daya Azure kustom (biasanya diawali dengan MC_*). Anda tidak dapat melakukan penyesuaian langsung ke node ini menggunakan API atau sumber IaaS. Setiap perubahan kustom yang tidak dilakukan melalui AKS API tidak akan bertahan melalui peningkatan, penskalaan, pembaruan, atau reboot.
Kurangnya persistensi ini juga berlaku untuk operasi pengubahan ukuran, oleh karena itu, pengubahan ukuran instans AKS dengan cara ini tidak didukung. Dalam panduan cara ini, Anda akan mempelajari metode yang disarankan untuk mengatasi skenario ini.
Penting
Metode ini khusus untuk kluster AKS berbasis set skala mesin virtual. Saat menggunakan set ketersediaan mesin virtual, Anda dibatasi hanya pada satu kumpulan node per kluster.
Asumsikan Anda ingin mengubah ukuran kumpulan simpul yang ada, yang disebut nodepool1
, dari ukuran SKU Standard_DS2_v2 ke Standard_DS3_v2. Untuk menyelesaikan tugas ini, Anda harus membuat kumpulan node baru menggunakan Standard_DS3_v2, memindahkan beban kerja dari nodepool1
ke kumpulan node baru, dan menghapus nodepool1
. Dalam contoh ini, kami akan memanggil kumpulan node baru ini mynodepool
.
kubectl get nodes
NAME STATUS ROLES AGE VERSION
aks-nodepool1-31721111-vmss000000 Ready agent 10d v1.21.9
aks-nodepool1-31721111-vmss000001 Ready agent 10d v1.21.9
aks-nodepool1-31721111-vmss000002 Ready agent 10d v1.21.9
kubectl get pods -o wide -A
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
default sampleapp2-74b4b974ff-676sz 1/1 Running 0 93m 10.244.1.6 aks-nodepool1-31721111-vmss000002 <none> <none>
default sampleapp2-76b6c4c59b-pfgbh 1/1 Running 0 94m 10.244.1.5 aks-nodepool1-31721111-vmss000002 <none> <none>
kube-system azure-ip-masq-agent-4n66k 1/1 Running 0 10d 10.240.0.6 aks-nodepool1-31721111-vmss000002 <none> <none>
kube-system azure-ip-masq-agent-9p4c8 1/1 Running 0 10d 10.240.0.4 aks-nodepool1-31721111-vmss000000 <none> <none>
kube-system azure-ip-masq-agent-nb7mx 1/1 Running 0 10d 10.240.0.5 aks-nodepool1-31721111-vmss000001 <none> <none>
kube-system coredns-845757d86-dtvvs 1/1 Running 0 10d 10.244.0.2 aks-nodepool1-31721111-vmss000000 <none> <none>
kube-system coredns-845757d86-x27pp 1/1 Running 0 10d 10.244.2.3 aks-nodepool1-31721111-vmss000001 <none> <none>
kube-system coredns-autoscaler-5f85dc856b-nfrmh 1/1 Running 0 10d 10.244.2.4 aks-nodepool1-31721111-vmss000001 <none> <none>
kube-system csi-azuredisk-node-9nfzt 3/3 Running 0 10d 10.240.0.4 aks-nodepool1-31721111-vmss000000 <none> <none>
kube-system csi-azuredisk-node-bblsb 3/3 Running 0 10d 10.240.0.5 aks-nodepool1-31721111-vmss000001 <none> <none>
kube-system csi-azuredisk-node-tjhj4 3/3 Running 0 10d 10.240.0.6 aks-nodepool1-31721111-vmss000002 <none> <none>
kube-system csi-azurefile-node-9pcr8 3/3 Running 0 3d10h 10.240.0.6 aks-nodepool1-31721111-vmss000002 <none> <none>
kube-system csi-azurefile-node-bh2pc 3/3 Running 0 3d10h 10.240.0.5 aks-nodepool1-31721111-vmss000001 <none> <none>
kube-system csi-azurefile-node-h75gq 3/3 Running 0 3d10h 10.240.0.4 aks-nodepool1-31721111-vmss000000 <none> <none>
kube-system konnectivity-agent-6cd55c69cf-ngdlb 1/1 Running 0 10d 10.240.0.6 aks-nodepool1-31721111-vmss000002 <none> <none>
kube-system konnectivity-agent-6cd55c69cf-rvvqt 1/1 Running 0 10d 10.240.0.4 aks-nodepool1-31721111-vmss000000 <none> <none>
kube-system kube-proxy-4wzx7 1/1 Running 0 10d 10.240.0.4 aks-nodepool1-31721111-vmss000000 <none> <none>
kube-system kube-proxy-g5tvr 1/1 Running 0 10d 10.240.0.6 aks-nodepool1-31721111-vmss000002 <none> <none>
kube-system kube-proxy-mrv54 1/1 Running 0 10d 10.240.0.5 aks-nodepool1-31721111-vmss000001 <none> <none>
kube-system metrics-server-774f99dbf4-h52hn 1/1 Running 1 3d10h 10.244.1.3 aks-nodepool1-31721111-vmss000002 <none> <none>
Gunakan perintah az aks nodepool add untuk membuat kumpulan node baru bernama mynodepool
dengan tiga node menggunakan Standard_DS3_v2
VM SKU:
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name mynodepool \
--node-count 3 \
--node-vm-size Standard_DS3_v2 \
--mode System \
--no-wait
Catatan
Setiap kluster AKS harus berisi setidaknya satu kumpulan node sistem dengan setidaknya satu node. Dalam contoh di atas, kami menggunakan --mode
dari System
, karena kluster diasumsikan hanya memiliki satu kumpulan node, sehingga memerlukan kumpulan node System
untuk menggantikannya. Mode kumpulan node dapat diperbarui setiap saat.
Saat mengubah ukuran, pastikan untuk mempertimbangkan persyaratan lain dan mengonfigurasi kumpulan node Anda sesuai dengan itu. Anda mungkin perlu mengubah perintah di atas. Untuk daftar lengkap opsi konfigurasi, lihat halaman referensi az aks nodepool add.
Setelah beberapa menit, kumpulan node baru telah dibuat:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
aks-mynodepool-20823458-vmss000000 Ready agent 23m v1.21.9
aks-mynodepool-20823458-vmss000001 Ready agent 23m v1.21.9
aks-mynodepool-20823458-vmss000002 Ready agent 23m v1.21.9
aks-nodepool1-31721111-vmss000000 Ready agent 10d v1.21.9
aks-nodepool1-31721111-vmss000001 Ready agent 10d v1.21.9
aks-nodepool1-31721111-vmss000002 Ready agent 10d v1.21.9
Penjagaan menandai node tertentu sebagai tidak terjadwal dan mencegah pod lagi ditambahkan ke node.
Pertama, dapatkan nama node yang ingin Anda jaga dengan kubectl get nodes
. Output Anda akan terlihat seperti berikut:
NAME STATUS ROLES AGE VERSION
aks-nodepool1-31721111-vmss000000 Ready agent 7d21h v1.21.9
aks-nodepool1-31721111-vmss000001 Ready agent 7d21h v1.21.9
aks-nodepool1-31721111-vmss000002 Ready agent 7d21h v1.21.9
Selanjutnya, dengan menggunakan kubectl cordon <node-names>
, tentukan node yang diinginkan dalam daftar yang dipisahkan spasi:
kubectl cordon aks-nodepool1-31721111-vmss000000 aks-nodepool1-31721111-vmss000001 aks-nodepool1-31721111-vmss000002
node/aks-nodepool1-31721111-vmss000000 cordoned
node/aks-nodepool1-31721111-vmss000001 cordoned
node/aks-nodepool1-31721111-vmss000002 cordoned
Penting
Agar berhasil menguras simpul dan mengeluarkan pod yang sedang berjalan, pastikan bahwa PodDisruptionBudgets (PDB) memungkinkan setidaknya satu replika pod dipindahkan pada satu waktu. Jika tidak, operasi pengurasan/pengeluaran akan gagal. Untuk memeriksa hal ini, Anda dapat menjalankan kubectl get pdb -A
dan memverifikasi ALLOWED DISRUPTIONS
setidaknya satu atau lebih tinggi.
Mengalirkan node akan menyebabkan pod yang berjalan di dalamnya dikeluarkan dan dibuat ulang di node lain yang dapat dijadwalkan.
Untuk mengalirkan node, gunakan kubectl drain <node-names> --ignore-daemonsets --delete-emptydir-data
, sekali lagi gunakan daftar nama node yang dipisahkan spasi:
Penting
Penggunaan --delete-emptydir-data
diperlukan untuk mengeluarkan pod coredns
dan metrics-server
yang dibuat AKS. Jika tanda ini tidak digunakan, akan terjadi kesalahan. Untuk informasi lebih lanjut, lihat dokumentasi tentang emptydir.
kubectl drain aks-nodepool1-31721111-vmss000000 aks-nodepool1-31721111-vmss000001 aks-nodepool1-31721111-vmss000002 --ignore-daemonsets --delete-emptydir-data
Setelah operasi pengurasan selesai, semua pod selain yang dikendalikan oleh set daemon akan berjalan di kumpulan node baru:
kubectl get pods -o wide -A
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
default sampleapp2-74b4b974ff-676sz 1/1 Running 0 15m 10.244.4.5 aks-mynodepool-20823458-vmss000002 <none> <none>
default sampleapp2-76b6c4c59b-rhmzq 1/1 Running 0 16m 10.244.4.3 aks-mynodepool-20823458-vmss000002 <none> <none>
kube-system azure-ip-masq-agent-4n66k 1/1 Running 0 10d 10.240.0.6 aks-nodepool1-31721111-vmss000002 <none> <none>
kube-system azure-ip-masq-agent-9p4c8 1/1 Running 0 10d 10.240.0.4 aks-nodepool1-31721111-vmss000000 <none> <none>
kube-system azure-ip-masq-agent-nb7mx 1/1 Running 0 10d 10.240.0.5 aks-nodepool1-31721111-vmss000001 <none> <none>
kube-system azure-ip-masq-agent-sxn96 1/1 Running 0 49m 10.240.0.9 aks-mynodepool-20823458-vmss000002 <none> <none>
kube-system azure-ip-masq-agent-tsq98 1/1 Running 0 49m 10.240.0.8 aks-mynodepool-20823458-vmss000001 <none> <none>
kube-system azure-ip-masq-agent-xzrdl 1/1 Running 0 49m 10.240.0.7 aks-mynodepool-20823458-vmss000000 <none> <none>
kube-system coredns-845757d86-d2pkc 1/1 Running 0 17m 10.244.3.2 aks-mynodepool-20823458-vmss000000 <none> <none>
kube-system coredns-845757d86-f8g9s 1/1 Running 0 17m 10.244.5.2 aks-mynodepool-20823458-vmss000001 <none> <none>
kube-system coredns-autoscaler-5f85dc856b-f8xh2 1/1 Running 0 17m 10.244.4.2 aks-mynodepool-20823458-vmss000002 <none> <none>
kube-system csi-azuredisk-node-7md2w 3/3 Running 0 49m 10.240.0.7 aks-mynodepool-20823458-vmss000000 <none> <none>
kube-system csi-azuredisk-node-9nfzt 3/3 Running 0 10d 10.240.0.4 aks-nodepool1-31721111-vmss000000 <none> <none>
kube-system csi-azuredisk-node-bblsb 3/3 Running 0 10d 10.240.0.5 aks-nodepool1-31721111-vmss000001 <none> <none>
kube-system csi-azuredisk-node-lcmtz 3/3 Running 0 49m 10.240.0.9 aks-mynodepool-20823458-vmss000002 <none> <none>
kube-system csi-azuredisk-node-mmncr 3/3 Running 0 49m 10.240.0.8 aks-mynodepool-20823458-vmss000001 <none> <none>
kube-system csi-azuredisk-node-tjhj4 3/3 Running 0 10d 10.240.0.6 aks-nodepool1-31721111-vmss000002 <none> <none>
kube-system csi-azurefile-node-29w6z 3/3 Running 0 49m 10.240.0.9 aks-mynodepool-20823458-vmss000002 <none> <none>
kube-system csi-azurefile-node-4nrx7 3/3 Running 0 49m 10.240.0.7 aks-mynodepool-20823458-vmss000000 <none> <none>
kube-system csi-azurefile-node-9pcr8 3/3 Running 0 3d11h 10.240.0.6 aks-nodepool1-31721111-vmss000002 <none> <none>
kube-system csi-azurefile-node-bh2pc 3/3 Running 0 3d11h 10.240.0.5 aks-nodepool1-31721111-vmss000001 <none> <none>
kube-system csi-azurefile-node-gqqnv 3/3 Running 0 49m 10.240.0.8 aks-mynodepool-20823458-vmss000001 <none> <none>
kube-system csi-azurefile-node-h75gq 3/3 Running 0 3d11h 10.240.0.4 aks-nodepool1-31721111-vmss000000 <none> <none>
kube-system konnectivity-agent-6cd55c69cf-2bbp5 1/1 Running 0 17m 10.240.0.7 aks-mynodepool-20823458-vmss000000 <none> <none>
kube-system konnectivity-agent-6cd55c69cf-7xzxj 1/1 Running 0 16m 10.240.0.8 aks-mynodepool-20823458-vmss000001 <none> <none>
kube-system kube-proxy-4wzx7 1/1 Running 0 10d 10.240.0.4 aks-nodepool1-31721111-vmss000000 <none> <none>
kube-system kube-proxy-7h8r5 1/1 Running 0 49m 10.240.0.7 aks-mynodepool-20823458-vmss000000 <none> <none>
kube-system kube-proxy-g5tvr 1/1 Running 0 10d 10.240.0.6 aks-nodepool1-31721111-vmss000002 <none> <none>
kube-system kube-proxy-mrv54 1/1 Running 0 10d 10.240.0.5 aks-nodepool1-31721111-vmss000001 <none> <none>
kube-system kube-proxy-nqmnj 1/1 Running 0 49m 10.240.0.9 aks-mynodepool-20823458-vmss000002 <none> <none>
kube-system kube-proxy-zn77s 1/1 Running 0 49m 10.240.0.8 aks-mynodepool-20823458-vmss000001 <none> <none>
kube-system metrics-server-774f99dbf4-2x6x8 1/1 Running 0 16m 10.244.4.4 aks-mynodepool-20823458-vmss000002 <none> <none>
Anda mungkin melihat kesalahan seperti berikut:
Kesalahan saat mengeluarkan pod/[podname] -n [namespace] (akan mencoba lagi setelah 5 detik): Tidak dapat mengeluarkan pod karena akan melanggar anggaran gangguan pod.
Secara default, kluster Anda memiliki anggaran gangguan pod terkelola AKS_ (seperti coredns-pdb
atau konnectivity-agent
) dengan MinAvailable
1. Jika, misalnya, ada dua coredns
pod yang berjalan, sementara salah satunya sedang dibuat ulang dan tidak tersedia, yang lain tidak dapat terpengaruh karena anggaran gangguan pod. Ini diselesaikan dengan sendirinya setelah coredns
pod awal dijadwalkan dan berjalan, memungkinkan pod kedua dikeluarkan dan dibuat ulang dengan benar.
Tip
Pertimbangkan untuk mengalirkan node satu per satu untuk pengalaman pengeluaran yang lebih lancar dan untuk menghindari pelambatan. Untuk informasi selengkapnya, lihat:
Untuk menghapus kumpulan node yang ada, gunakan portal Azure atau perintah az aks nodepool delete:
az aks nodepool delete \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name nodepool1
Setelah selesai, pada akhirnya kluster AKS memiliki satu kumpulan node baru dengan ukuran SKU baru yang diinginkan dan semua aplikasi serta pod berjalan dengan baik:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
aks-mynodepool-20823458-vmss000000 Ready agent 63m v1.21.9
aks-mynodepool-20823458-vmss000001 Ready agent 63m v1.21.9
aks-mynodepool-20823458-vmss000002 Ready agent 63m v1.21.9
Setelah mengubah ukuran kumpulan node dengan menjaga dan mengalirkan, pelajari lebih lanjut tentang menggunakan beberapa kumpulan node.
Umpan balik Azure Kubernetes Service
Azure Kubernetes Service adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: