Azure Kubernetes Service (AKS) kümesini yükseltme
AKS kümesi yaşam döngüsünün bir bölümü, en son Kubernetes sürümüne düzenli olarak yükseltmeler gerçekleştirmeyi içerir. En son özellikleri edinmek için en son güvenlik sürümlerini ve yükseltmelerini uygulamanız önemlidir. Bu makalede AKS kümenize yükseltmeleri denetleme ve uygulama işlemleri gösterilmektedir.
Kubernetes sürüm yükseltmeleri
Desteklenen bir AKS kümesini yükseltirken Kubernetes ikincil sürümlerini atlayamazsınız. Tüm yükseltmeleri ana sürüm numarasına göre sıralı olarak gerçekleştirmeniz gerekir. Örneğin, 1.14.x ->1.15.x veya 1.15.x ->1.16.x arasında yükseltmelere izin verilir. 1.14.x ->1.16.x'e izin verilmez. Desteklenmeyen bir sürümden desteklenen bir sürüme yükseltme yaparken yalnızca birden çok sürümü atlayabilirsiniz. Örneğin, varsa desteklenmeyen 1.10.x'ten desteklenen 1.12.x sürümüne yükseltme gerçekleştirebilirsiniz.
İki veya daha fazla ikincil sürümü atlayan desteklenmeyen bir sürümden yükseltme gerçekleştirdiğinizde, yükseltmenin işlevsellik garantisi yoktur ve hizmet düzeyi sözleşmelerinin ve sınırlı garantinin dışında tutulur. Sürümünüz önemli ölçüde eskiyse bunun yerine kümenizi yeniden oluşturmanızı öneririz.
Başlamadan önce
- Azure CLI kullanıyorsanız bu makale için Azure CLI sürüm 2.34.1 veya üzeri gerekir. Sürümü bulmak için
az --version
komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme. - Azure PowerShell kullanıyorsanız bu makale için Azure PowerShell sürüm 5.9.0 veya üzeri gerekir. Sürümü bulmak için
Get-InstalledModule -Name Az
komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse bkz. Azure PowerShell yükleme. - Yükseltme işlemlerini gerçekleştirmek için RBAC rolü gerekir
Microsoft.ContainerService/managedClusters/agentPools/write
. Azure RBAC rolleri hakkında daha fazla bilgi için bkz . Azure kaynak sağlayıcısı işlemleri. - 1.30 kubernetes sürümü ve 1.27 LTS sürümlerinden itibaren beta API'ler, yükseltme yaptığınızda varsayılan olarak devre dışı bırakılır.
Uyarı
AKS küme yükseltmesi düğümlerinizde zamanlanamaz yapma ve boşaltma işlemlerini tetikler. Kullanılabilir işlem kotanız düşükse yükseltme başarısız olabilir. Daha fazla bilgi için bkz. Kotaları artırma.
Kullanılabilir AKS kümesi yükseltmelerini denetleme
Not
AKS düzeltmeleri, yayınları ve güncelleştirmelerini almak için AKS sürüm takip aracı.
komutunu kullanarak kümeniz için hangi Kubernetes sürümlerinin
az aks get-upgrades
kullanılabilir olduğunu denetleyin.az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster --output table
Aşağıdaki örnek çıktı, geçerli sürümü 1.26.6 olarak gösterir ve altında
upgrades
kullanılabilir sürümleri listeler:{ "agentPoolProfiles": null, "controlPlaneProfile": { "kubernetesVersion": "1.26.6", ... "upgrades": [ { "isPreview": null, "kubernetesVersion": "1.27.1" }, { "isPreview": null, "kubernetesVersion": "1.27.3" } ] }, ... }
AKS kümesi yükseltme hata iletileriyle ilgili sorunları giderme
Aşağıdaki örnek çıktı, uzantının appservice-kube
Azure CLI sürümünüzle uyumlu olmadığı anlamına gelir (en az 2.34.1 sürümü gereklidir):
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.
Bu çıkışı alırsanız Azure CLI sürümünüzü güncelleştirmeniz gerekir. Komut az upgrade
2.11.0 sürümüne eklendi ve 2.11.0 öncesi sürümlerle çalışmaz. Azure CLI'yi yükleme bölümünde açıklandığı gibi Azure CLI'yi yeniden yükleyerek eski sürümleri güncelleştirebilirsiniz. Azure CLI sürümünüz 2.11.0 veya üzeriyse, Azure CLI'yi en son sürüme yükseltmek için komutunu çalıştırın az upgrade
.
Azure CLI'nız güncelleştirilmişse ve aşağıdaki örnek çıkışı alıyorsanız bu, kullanılabilir yükseltme olmadığı anlamına gelir:
ERROR: Table output unavailable. Use the --query option to specify an appropriate query. Use --debug for more info.
Kullanılabilir yükseltme yoksa, desteklenen bir Kubernetes sürümüne sahip yeni bir küme oluşturun ve iş yüklerinizi mevcut kümeden yeni kümeye geçirin. AKS, kullanılabilir yükseltme olmadığını gösterdiğinde az aks get-upgrades
kümeyi daha yeni bir Kubernetes sürümüne yükseltmeyi desteklemez.
AKS kümesini yükseltme
Küme yükseltme işlemi sırasında AKS aşağıdaki işlemleri gerçekleştirir:
- Belirtilen Kubernetes sürümünü çalıştıran kümeye yeni bir arabellek düğümü (veya maksimum dalgalanmada yapılandırılan sayıda düğüm) ekleyin.
- Çalışan uygulamalarda kesintiyi en aza indirmek için eski düğümlerden birini bağlayın ve boşaltın . En yüksek dalgalanmayı kullanıyorsanız, belirtilen arabellek düğümü sayısıyla aynı anda çok sayıda düğümü kordonlar ve boşaltılır .
- Uzun süre çalışan podlar için, düğüm boşaltma zaman aşımını yapılandırarak podların çıkarılmasında özel bekleme süresine ve düğüm başına düzgün sonlandırmaya olanak sağlayabilirsiniz. Belirtilmezse, varsayılan değer 30 dakikadır. İzin verilen en düşük zaman aşımı değeri 5 dakikadır. Boşaltma zaman aşımı için maksimum sınır 24 saattir.
- Eski düğüm tamamen boşaltıldığında, yeni sürümü almak üzere yeniden oluşturulur ve yükseltilecek aşağıdaki düğümün arabellek düğümü olur.
- İsteğe bağlı olarak, düğümü boşaltmak ve yeniden oluşturmak ve sonraki düğüme geçmek arasında beklenmesi için bir süre ayarlayabilirsiniz. Kısa bir aralık, yükseltme işlemi sırasında Grafana panosundan uygulama durumunu denetleme gibi diğer görevleri tamamlamanızı sağlar. Yükseltme işlemi için mümkün olduğunca 0 dakikaya yakın kısa bir zaman çerçevesi öneririz. Aksi takdirde, daha yüksek düğüm bekletme süresi, bir sorunu keşfetmeden ne kadar süre önce olduğunu etkiler. Minimum bekletme süresi değeri 0 dakikadır ve en fazla 30 dakikadır. Belirtilmezse, varsayılan değer 0 dakikadır.
- Kümedeki tüm düğümler yükseltilene kadar bu işlem yinelenir.
- İşlemin sonunda, mevcut aracı düğümü sayısı ve bölge bakiyesi korunarak son arabellek düğümü silinir.
Not
Herhangi bir düzeltme eki belirtilmezse, küme otomatik olarak belirtilen ikincil sürümün en son GA düzeltme ekine yükseltilir. Örneğin, ayarı --kubernetes-version
1.28
kümenin sürümüne yükseltilmesiyle sonuçlanıyor 1.28.9
.
Daha fazla bilgi için bkz. AKS'de desteklenen Kubernetes ikincil sürüm yükseltmeleri.
komutunu kullanarak kümenizi yükseltin
az aks upgrade
.az aks upgrade \ --resource-group myResourceGroup \ --name myAKSCluster \ --kubernetes-version <KUBERNETES_VERSION>
komutunu kullanarak yükseltmenin
az aks show
başarılı olduğunu onaylayın.az aks show --resource-group myResourceGroup --name myAKSCluster --output table
Aşağıdaki örnek çıktı, kümenin artık 1.27.3 çalıştırdığını gösterir:
Name Location ResourceGroup KubernetesVersion ProvisioningState Fqdn ------------ ---------- --------------- ------------------- ------------------- ---------------------------------------------- myAKSCluster eastus myResourceGroup 1.27.3 Succeeded myakscluster-dns-379cbbb9.hcp.eastus.azmk8s.io
Otomatik yükseltme kanalını ayarlama
Kümenizde otomatik yükseltme kanalı ayarlayabilirsiniz. Daha fazla bilgi için bkz . AKS kümesini otomatik olarak yükseltme.
Düğüm dalgalanması yükseltmeyi özelleştirme
Önemli
Düğüm dalgalanmaları, her yükseltme işlemi için istenen maksimum artış sayısı için abonelik kotası gerektirir. Örneğin, her biri dört düğüm sayısına sahip beş düğüm havuzu olan bir kümenin toplam 20 düğümü vardır. Her düğüm havuzunun en yüksek artış değeri %50 ise, yükseltmeyi tamamlamak için 10 düğümden (2 düğüm * 5 havuz) ek işlem ve IP kotası gerekir.
Düğüm havuzundaki en yüksek artış ayarı kalıcıdır. Sonraki Kubernetes yükseltmeleri veya düğüm sürümü yükseltmeleri bu ayarı kullanır. Düğüm havuzlarınız için en yüksek artış değerini istediğiniz zaman değiştirebilirsiniz. Üretim düğümü havuzları için %33 maksimum artış ayarı öneririz.
Azure CNI kullanıyorsanız Azure CNI'nin IP gereksinimlerini karşılamak için alt ağda kullanılabilir IP'ler olduğunu doğrulayın.
AKS, yükseltmeleri varsayılan olarak bir ek düğümle yükseltecek şekilde yapılandırıyor. En yüksek dalgalanma ayarları için varsayılan değer, AKS'nin eski sürüme sahip bir düğümü değiştirmek için mevcut uygulamaların kordonunun/boşaltılmasından önce ek bir düğüm oluşturarak iş yükü kesintisini en aza indirmesini sağlar. Düğüm havuzu başına maksimum artış değerini özelleştirebilirsiniz. Maksimum artış değerini artırdığınızda yükseltme işlemi daha hızlı tamamlanır ve yükseltme işlemi sırasında kesintilerle karşılaşabilirsiniz.
Örneğin ,% 100 maksimum artış değeri mümkün olan en hızlı yükseltme işlemini sağlar, ancak düğüm havuzundaki tüm düğümlerin aynı anda boşaltılmasına da neden olur. Test ortamları için bunun gibi daha yüksek bir değer kullanmak isteyebilirsiniz. Üretim düğümü havuzları için %33 ayarı önerilirmax_surge
.
AKS, maksimum artış için hem tamsayı değerlerini hem de yüzde değerini kabul eder. 5 gibi bir tamsayı, aşırıya kaçacak fazladan beş düğüm olduğunu gösterir. %50 değeri, havuzdaki geçerli düğüm sayısının yarısının bir artış değerini gösterir. Maksimum artış yüzdesi değerleri en az %1 ve en fazla %100 olabilir. Yüzde değeri en yakın düğüm sayısına yuvarlanmış. Maksimum aşırı gerilim değeri yükseltilecek düğüm sayısından yüksekse, yükseltilecek düğüm sayısı en yüksek dalgalanma değeri için kullanılır. Yükseltme sırasında maksimum dalgalanma değeri en az 1 ve düğüm havuzunuzdaki düğüm sayısına eşit maksimum değer olabilir. Daha büyük değerler ayarlayabilirsiniz, ancak en yüksek artış için kullanılan en fazla düğüm sayısını yükseltme sırasında havuzdaki düğüm sayısından daha fazla ayarlayamazsınız.
Maksimum dalgalanma değerini ayarlama
veya
az aks nodepool update
komutunu kullanarakaz aks nodepool add
yeni veya mevcut düğüm havuzları için maksimum artış değerlerini ayarlayın.# 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
Düğüm boşaltma zaman aşımı değerini ayarlama
Bazen, belirli bir pod üzerinde uzun süre çalışan bir iş yükünüz olabilir ve çalışma zamanı sırasında başka bir düğüme yeniden zamanlanamaz. Örneğin, çalıştırmayı tamamlaması gereken yoğun bellek kullanan durum bilgisi olan bir iş yükü. Bu gibi durumlarda, AKS'nin yükseltme iş akışında dikkate alacak bir düğüm boşaltma zaman aşımı yapılandırabilirsiniz. Düğüm boşaltma zaman aşımı değeri belirtilmezse varsayılan değer 30 dakikadır. İzin verilen en düşük boşaltma zaman aşımı değeri 5 dakika ve en fazla boşaltma zaman aşımı sınırı 24 saattir.
Boşaltma zaman aşımı değeri geçen ve podlar çalışmaya devam ediyorsa yükseltme işlemi durdurulur. Sonraki PUT işlemleri durdurulan yükseltmeyi sürdürecektir. [][https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/] öğesinin yapılandırılmasıterminationGracePeriodSeconds
uzun süre çalışan podlar için de önerilir.
veya
az aks nodepool update
komutunu kullanarak yeni veya mevcut düğüm havuzları için düğüm boşaltma zaman aşımı ayarlayınaz aks nodepool add
.# 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
Düğüm bekletme süresi değerini ayarlama
Bir düğümü boşaltmak ve yeniden oluşturmak ve sonraki düğüme geçmek arasında bir süre beklemek için, bekletme süresini 0 ile 30 dakika arasında bir değere ayarlayabilirsiniz. Düğüm bekletme süresi değeri belirtilmezse varsayılan değer 0 dakikadır.
,
az aks nodepool update
veyaaz aks nodepool upgrade
komutunu kullanarakaz aks nodepool add
yeni veya mevcut düğüm havuzları için düğüm bekletme süresini ayarlayın.# 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
Yükseltme olaylarını görüntüleme
komutunu kullanarak yükseltme olaylarını
kubectl get events
görüntüleyin.kubectl get events
Aşağıdaki örnek çıktı, yükseltme sırasında listelenen yukarıdaki olaylardan bazılarını gösterir:
... 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 ...
Sonraki adımlar
Otomatik yükseltmeleri yapılandırmayı öğrenmek için bkz . AKS kümesi için otomatik yükseltmeleri yapılandırma.
Yükseltme en iyi yöntemleri ve diğer önemli noktalar hakkında ayrıntılı bilgi için bkz . AKS düzeltme eki ve yükseltme kılavuzu.
Azure Kubernetes Service