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.

Peningkatan versi Kubernetes

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.

Sebelum Anda mulai

  • 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 kubernetes 1.30 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.

Periksa peningkatan kluster AKS yang tersedia

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"
          }
        ]
      },
      ...
    }
    

Memecahkan masalah pesan kesalahan peningkatan kluster AKS

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.

Meningkatkan kluster AKS

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.
  • 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.21 menghasilkan kluster yang ditingkatkan ke 1.21.9.

Untuk informasi selengkapnya, lihat Peningkatan versi minor Kubernetes yang didukung di AKS.

  1. Tingkatkan kluster Anda menggunakan az aks upgrade perintah .

    az aks upgrade \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --kubernetes-version <KUBERNETES_VERSION>
    
  2. 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
    

Mengatur saluran peningkatan otomatis

Anda dapat mengatur saluran peningkatan otomatis di kluster Anda. Untuk informasi selengkapnya, lihat Meningkatkan kluster AKS secara otomatis.

Menyesuaikan peningkatan lonjakan simpul

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

  • Atur nilai lonjakan maks untuk kumpulan simpul baru atau yang sudah ada menggunakan az aks nodepool add perintah atau az aks nodepool update .

    # Set max surge for a new node pool
    az aks nodepool add -n mynodepool -g MyResourceGroup --cluster-name MyManagedCluster --max-surge 33%
    
    # Update max surge for an existing node pool 
    az aks nodepool update -n mynodepool -g MyResourceGroup --cluster-name MyManagedCluster --max-surge 5
    

Atur nilai batas waktu pengurasan simpul

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. Jika nilai batas waktu pengurasan berlalu dan pod masih berjalan, maka operasi peningkatan dihentikan. Setiap operasi PUT berikutnya harus melanjutkan peningkatan yang dihentikan.

  • Atur batas waktu pengurasan simpul untuk kumpulan simpul baru atau yang sudah ada menggunakan az aks nodepool add perintah atau az aks nodepool update .

    # Set drain timeout for a new node pool
    az aks nodepool add -n mynodepool -g MyResourceGroup --cluster-name MyManagedCluster  --drain-timeout 100
    
    # Update drain timeout for an existing node pool
    az aks nodepool update -n mynodepool -g MyResourceGroup --cluster-name MyManagedCluster --drain-timeout 45
    

Mengatur nilai waktu rendam simpul

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 addperintah , , az aks nodepool updateatau az aks nodepool upgrade .

    # Set node soak time for a new node pool
    az aks nodepool add -n MyNodePool -g MyResourceGroup --cluster-name MyManagedCluster --node-soak-duration 10
    
    # Update node soak time for an existing node pool
    az aks nodepool update -n MyNodePool -g 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 -n MyNodePool -g MyResourceGroup --cluster-name MyManagedCluster --max-surge 33% --node-soak-duration 20
    

Melihat peristiwa peningkatan

  • 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
    ...
    

Langkah berikutnya

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.