Aracılığıyla paylaş


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 upgradeskullanı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.

  1. komutunu kullanarak kümenizi yükseltin az aks upgrade .

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