Meningkatkan kluster Azure Kubernetes Service (AKS)
Bagian dari siklus hidup kluster AKS melibatkan melakukan peningkatan berkala ke versi Kube terbaru. Penting bagi Anda untuk menerapkan rilis dan peningkatan keamanan terbaru untuk mendapatkan fitur terbaru. Artikel ini menunjukkan kepada Anda cara memeriksa dan menerapkan peningkatan ke kluster AKS Anda.
Saat meningkatkan kluster AKS yang didukung, Anda tidak dapat melewati versi minor Kubernetes. Anda harus melakukan semua peningkatan secara berurutan berdasarkan nomor versi utama. Misalnya, peningkatan antara 1.14.x ->1.15.x atau 1.15.x ->1.16.x diizinkan. 1.14.x ->1.16.x tidak diizinkan. Anda hanya dapat melewati beberapa versi saat memutakhirkan dari versi yang tidak didukung kembali ke versi yang didukung. Misalnya, Anda dapat melakukan peningkatan dari 1.10.x yang tidak didukung ke 1.12.x yang didukung jika tersedia.
Ketika Anda melakukan peningkatan dari versi yang tidak didukung yang melewati dua versi minor atau lebih, peningkatan tidak memiliki jaminan fungsionalitas dan dikecualikan dari perjanjian tingkat layanan dan garansi terbatas. Jika versi Anda kedaluarsa secara signifikan, kami sarankan Anda membuat ulang kluster Anda sebagai gantinya.
- Jika Anda menggunakan Azure CLI, artikel ini memerlukan Azure CLI versi 2.34.1 atau yang lebih baru. Jalankan
az --version
untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI. - Jika Anda menggunakan Azure PowerShell, artikel ini memerlukan Azure PowerShell versi 5.9.0 atau yang lebih baru. Jalankan
Get-InstalledModule -Name Az
untuk menemukan versinya. Jika Anda perlu menginstal atau meningkatkan, lihat Install modul Azure PowerShell. - Melakukan operasi peningkatan memerlukan
Microsoft.ContainerService/managedClusters/agentPools/write
peran RBAC. Untuk informasi selengkapnya tentang peran Azure RBAC, lihat operasi penyedia sumber daya Azure. - Dimulai dengan versi 1.30 kubernetes dan versi 1.27 LTS, API beta akan dinonaktifkan secara default saat Anda meningkatkannya.
Peringatan
Peningkatan kluster AKS memicu cordon dan pengosongan simpul Anda. Jika Anda memiliki kuota komputasi rendah yang tersedia, peningkatan mungkin gagal. Untuk informasi selengkapnya, lihat meningkatkan kuota.
Catatan
Untuk tetap mendapatkan informasi terbaru tentang perbaikan, rilis, dan pembaruan AKS, lihat pelacak rilis AKS.
Periksa rilis Kubernetes mana yang tersedia untuk kluster Anda menggunakan
az aks get-upgrades
perintah .az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster --output table
Contoh output berikut menunjukkan versi saat ini sebagai 1.26.6 dan mencantumkan versi yang tersedia di bawah
upgrades
:{ "agentPoolProfiles": null, "controlPlaneProfile": { "kubernetesVersion": "1.26.6", ... "upgrades": [ { "isPreview": null, "kubernetesVersion": "1.27.1" }, { "isPreview": null, "kubernetesVersion": "1.27.3" } ] }, ... }
Contoh output berikut berarti appservice-kube
ekstensi tidak kompatibel dengan versi Azure CLI Anda (diperlukan minimal versi 2.34.1):
The 'appservice-kube' extension is not compatible with this version of the CLI.
You have CLI core version 2.0.81 and this extension requires a min of 2.34.1.
Table output unavailable. Use the --query option to specify an appropriate query. Use --debug for more info.
Jika Anda menerima output ini, Anda perlu memperbarui versi Azure CLI Anda. Perintah az upgrade
ditambahkan dalam versi 2.11.0 dan tidak berfungsi dengan versi sebelum 2.11.0. Anda dapat memperbarui versi lama dengan menginstal ulang Azure CLI seperti yang dijelaskan di Menginstal Azure CLI. Jika versi Azure CLI Anda adalah 2.11.0 atau yang lebih baru, jalankan az upgrade
untuk meningkatkan Azure CLI ke versi terbaru.
Jika Azure CLI Anda diperbarui dan Anda menerima contoh output berikut, itu berarti tidak ada peningkatan yang tersedia:
ERROR: Table output unavailable. Use the --query option to specify an appropriate query. Use --debug for more info.
Jika peningkatan tidak tersedia, buat kluster baru dengan versi Kubernetes yang didukung dan migrasikan beban kerja Anda dari kluster yang ada ke kluster baru. AKS tidak mendukung peningkatan kluster ke versi Kubernetes yang lebih baru ketika az aks get-upgrades
menunjukkan bahwa tidak ada peningkatan yang tersedia.
Selama proses peningkatan kluster, AKS melakukan operasi berikut:
- Tambahkan node buffer baru (atau sebanyak node yang dikonfigurasi di lonjakan maksimum) ke kluster yang menjalankan versi Kubernetes yang ditentukan.
- Tutup dan kosongkan salah satu node lama untuk meminimalkan gangguan pada aplikasi yang berjalan. Jika Anda menggunakan lonjakan maks, itu menghubungkan dan menguras sebanyak simpul pada saat yang sama dengan jumlah simpul buffer yang ditentukan.
- Untuk pod yang berjalan lama, Anda dapat mengonfigurasi batas waktu pengosongan node, yang memungkinkan waktu tunggu khusus pada pengeluaran Pod dan penghentian yang anggun per simpul. Jika tidak ditentukan, defaultnya adalah 30 menit. Nilai batas waktu minimum yang diizinkan adalah 5 menit. Batas maksimum untuk batas waktu pengurasan adalah 24 jam.
- Ketika simpul lama sepenuhnya dikosongkan, simpul ini dicitrakan ulang untuk menerima versi baru dan menjadi simpul buffer untuk simpul berikut yang akan ditingkatkan.
- Secara opsional, Anda dapat mengatur durasi waktu untuk menunggu antara menguras simpul dan melanjutkan untuk menggambarnya kembali dan melanjutkan ke simpul berikutnya. Interval singkat memungkinkan Anda menyelesaikan tugas lain, seperti memeriksa kesehatan aplikasi dari dasbor Grafana selama proses peningkatan. Kami merekomendasikan jangka waktu singkat untuk proses peningkatan, sedekat mungkin dengan 0 menit. Jika tidak, waktu rendam simpul yang lebih tinggi memengaruhi berapa lama sebelum Anda menemukan masalah. Nilai waktu rendam minimum adalah 0 menit, dengan maksimum 30 menit. Jika tidak ditentukan, nilai defaultnya adalah 0 menit.
- Proses ini berulang hingga semua simpul dalam kluster ditingkatkan.
- Pada akhir proses, simpul buffer terakhir dihapus, mempertahankan jumlah simpul agen dan keseimbangan zona yang ada.
Catatan
Jika tidak ada patch yang ditentukan, kluster secara otomatis meningkatkan ke patch GA terbaru versi minor yang ditentukan. Misalnya, pengaturan --kubernetes-version
untuk 1.28
menghasilkan kluster yang ditingkatkan ke 1.28.9
.
Untuk informasi selengkapnya, lihat Peningkatan versi minor Kubernetes yang didukung di AKS.
Tingkatkan kluster Anda menggunakan
az aks upgrade
perintah .az aks upgrade \ --resource-group myResourceGroup \ --name myAKSCluster \ --kubernetes-version <KUBERNETES_VERSION>
Konfirmasikan bahwa pemutakhiran berhasil menggunakan
az aks show
perintah .az aks show --resource-group myResourceGroup --name myAKSCluster --output table
Contoh output berikut menunjukkan bahwa kluster sekarang berjalan 1.27.3:
Name Location ResourceGroup KubernetesVersion ProvisioningState Fqdn ------------ ---------- --------------- ------------------- ------------------- ---------------------------------------------- myAKSCluster eastus myResourceGroup 1.27.3 Succeeded myakscluster-dns-379cbbb9.hcp.eastus.azmk8s.io
Anda dapat mengatur saluran peningkatan otomatis di kluster Anda. Untuk informasi selengkapnya, lihat Meningkatkan kluster AKS secara otomatis.
Penting
Lonjakan simpul memerlukan kuota langganan untuk jumlah lonjakan maks yang diminta untuk setiap operasi peningkatan. Misalnya, kluster yang memiliki lima kumpulan simpul, masing-masing dengan hitungan empat simpul, memiliki total 20 simpul. Jika setiap kumpulan simpul memiliki nilai lonjakan maks 50%, kuota komputasi dan IP tambahan sebesar 10 simpul (2 simpul * 5 kumpulan) diperlukan untuk menyelesaikan peningkatan.
Pengaturan lonjakan maks pada kumpulan simpul bersifat persisten. Peningkatan Kube atau peningkatan versi simpul selanjutnya akan menggunakan pengaturan ini. Anda dapat mengubah nilai lonjakan maksimum untuk kumpulan simpul Anda kapan saja. Untuk kumpulan simpul produksi, kami menyarankan pengaturan max-surge 33%.
Jika Anda menggunakan Azure CNI, validasi ada IP yang tersedia di subnet untuk memenuhi persyaratan IP Azure CNI.
AKS mengonfigurasi peningkatan untuk melonjak dengan satu simpul tambahan secara default. Nilai default satu untuk pengaturan lonjakan maksimum memungkinkan AKS meminimalkan gangguan beban kerja dengan membuat simpul tambahan sebelum cordon/pengosongan aplikasi yang ada untuk menggantikan simpul versi yang lebih lama. Anda dapat menyesuaikan nilai lonjakan maksimum per kumpulan simpul. Ketika Anda meningkatkan nilai lonjakan maksimum, proses peningkatan selesai lebih cepat, dan Anda mungkin mengalami gangguan selama proses peningkatan.
Misalnya, nilai lonjakan maksimum 100% memberikan proses peningkatan tercepat yang mungkin, tetapi juga menyebabkan semua simpul di kumpulan simpul dikuras secara bersamaan. Anda mungkin ingin menggunakan nilai yang lebih tinggi seperti ini untuk lingkungan pengujian. Untuk kumpulan simpul produksi, kami merekomendasikan max_surge
pengaturan 33%.
AKS menerima nilai bilangan bulat dan nilai persentase untuk lonjakan maks. Bilangan bulat seperti 5 menunjukkan lima simpul tambahan untuk melonjak. Nilai 50% menunjukkan nilai lonjakan setengah dari jumlah simpul saat ini dalam kumpulan. Nilai persentase lonjakan maksimum bisa minimal 1% dan maksimum 100%. Nilai persen dibulatkan hingga ke jumlah simpul terdekat. Jika nilai lonjakan maksimum lebih tinggi dari jumlah simpul yang diperlukan untuk ditingkatkan, jumlah simpul yang akan ditingkatkan digunakan untuk nilai lonjakan maksimum. Selama peningkatan, nilai lonjakan maksimum bisa minimal 1 dan nilai maksimum yang sama dengan jumlah simpul di kumpulan simpul Anda. Anda dapat mengatur nilai yang lebih besar, tetapi Anda tidak dapat mengatur jumlah maksimum simpul yang digunakan untuk lonjakan maks lebih tinggi dari jumlah simpul di kumpulan pada saat peningkatan.
Atur nilai lonjakan maks untuk kumpulan simpul baru atau yang sudah ada menggunakan
az aks nodepool add
perintah atauaz aks nodepool update
.# Set max surge for a new node pool az aks nodepool add --name mynodepool --resource-group MyResourceGroup --cluster-name MyManagedCluster --max-surge 33% # Update max surge for an existing node pool az aks nodepool update --name mynodepool --resource-group MyResourceGroup --cluster-name MyManagedCluster --max-surge 5
Terkadang, Anda mungkin memiliki beban kerja yang berjalan lama pada pod tertentu dan tidak dapat dijadwalkan ulang ke node lain selama runtime, misalnya, beban kerja stateful intensif memori yang harus selesai berjalan. Dalam kasus ini, Anda dapat mengonfigurasi batas waktu pengurasan simpul yang akan dihormati AKS dalam alur kerja peningkatan. Jika tidak ada nilai batas waktu pengurasan simpul yang ditentukan, defaultnya adalah 30 menit. Nilai batas waktu pengurasan minimum yang diizinkan adalah 5 menit dan batas maksimum batas waktu pengurasan adalah 24 jam.
Jika nilai batas waktu pengurasan berlalu dan pod masih berjalan, maka operasi peningkatan dihentikan. Setiap operasi PUT berikutnya harus melanjutkan peningkatan yang dihentikan. Disarankan juga untuk pod yang berjalan lama untuk mengonfigurasi [terminationGracePeriodSeconds
][https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/].
Atur batas waktu pengurasan simpul untuk kumpulan simpul baru atau yang sudah ada menggunakan
az aks nodepool add
perintah atauaz aks nodepool update
.# Set drain timeout for a new node pool az aks nodepool add --name mynodepool --resource-group MyResourceGroup --cluster-name MyManagedCluster --drain-timeout 100 # Update drain timeout for an existing node pool az aks nodepool update --name mynodepool --resource-group MyResourceGroup --cluster-name MyManagedCluster --drain-timeout 45
Untuk memungkinkan durasi waktu menunggu antara menguras simpul dan melanjutkan untuk menirunya kembali dan melanjutkan ke simpul berikutnya, Anda dapat mengatur waktu rendam ke nilai antara 0 dan 30 menit. Jika tidak ada nilai waktu rendam simpul yang ditentukan, defaultnya adalah 0 menit.
Atur waktu rendam simpul untuk kumpulan simpul baru atau yang sudah ada menggunakan
az aks nodepool add
perintah , ,az aks nodepool update
atauaz aks nodepool upgrade
.# Set node soak time for a new node pool az aks nodepool add --name MyNodePool --resource-group MyResourceGroup --cluster-name MyManagedCluster --node-soak-duration 10 # Update node soak time for an existing node pool az aks nodepool update --name MyNodePool --resource-group MyResourceGroup --cluster-name MyManagedCluster --max-surge 33% --node-soak-duration 5 # Set node soak time when upgrading an existing node pool az aks nodepool upgrade --name MyNodePool --resource-group MyResourceGroup --cluster-name MyManagedCluster --max-surge 33% --node-soak-duration 20
Lihat peristiwa peningkatan menggunakan
kubectl get events
perintah .kubectl get events
Contoh output berikut menunjukkan beberapa peristiwa di atas yang tercantum selama peningkatan:
... default 2m1s Normal Drain node/aks-nodepool1-96663640-vmss000001 Draining node: [aks-nodepool1-96663640-vmss000001] ... default 1m45s Normal Upgrade node/aks-nodepool1-96663640-vmss000001 Soak duration 5m0s after draining node: aks-nodepool1-96663640-vmss000001 ... default 9m22s Normal Surge node/aks-nodepool1-96663640-vmss000002 Created a surge node [aks-nodepool1-96663640-vmss000002 nodepool1] for agentpool nodepool1 ...
Untuk mempelajari cara mengonfigurasi peningkatan otomatis, lihat Mengonfigurasi peningkatan otomatis untuk kluster AKS.
Untuk diskusi terperinci tentang praktik terbaik peningkatan dan pertimbangan lainnya, lihat panduan patch dan peningkatan AKS.
Umpan balik Azure Kubernetes Service
Azure Kubernetes Service adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: