API'de hataya neden olan değişikliklerde Azure Kubernetes Service (AKS) kümesi yükseltmelerini otomatik olarak durdurma

Şunlar için geçerlidir: ✔️ AKS Otomatik ✔️ AKS Standart

Bu makalede, Azure Kubernetes Service (AKS),kullanım dışı Kubernetes API kullanımı algıladığında küme yükseltmelerini nasıl otomatik olarak engelleyebileceğiniz gösterilmektedir.

Çoğu üretim iş yükü için AKS Otomatik, AKS için önerilen üretime hazır varsayılan deneyimdir. Kubernetes API’sindeki geriye dönük uyumluluğu bozan değişikliklerin algılanması, hem AKS Automatic hem de AKS Standard kümelerinde önceden yapılandırılmıştır.

AKS Otomatik ve AKS Standard'da Davranış

Her iki küme modu da şu korumayı içerir:

  • AKS Otomatik: AKS Otomatik üretime hazır platform korumalarının bir parçası olarak varsayılan olarak dahildir.
  • AKS Standard: AKS Standard kümelerine varsayılan olarak eklenir.

Her iki modda da AKS, hedef Kubernetes sürümünde son kullanılan API'lerin kullanım dışı bırakıldığını veya kaldırıldığını algıladığında ikincil sürüm yükseltme işlemlerini engelleyebilir.

Genel bakış

Desteklenen bir Kubernetes sürümünde kalmak için kümenizi yılda en az bir kez yükseltmeniz ve olası kesintilere hazırlanmanız gerekir. Bu kesintiler, API uyumluluğunu bozan değişiklikleri, kullanımdan kaldırmaları ve Helm ile Kapsayıcı Depolama Arayüzü (CSI) gibi bağımlılıkları içerebilir. Bu kesintileri öngörmek ve kritik iş yüklerini kesinti süresi olmadan taşımak zor olabilir.

AKS, hedef sürüm için kullanım dışı API kullanımını algıladığında, ikincil sürüm yükseltme işlemlerini otomatik olarak engelleyebilir ve sizi sorunla ilgili olarak uyarabilir. Bu davranış beklenmeyen kesintileri önlemenize yardımcı olur ve yükseltmeye devam etmeden önce kullanım dışı API kullanımını düzeltmek için size zaman verir.

Prerequisites

Aşağıdaki önkoşulları karşıladığınızdan emin olun:

  • Yükseltme işlemi, küme kontrol düzlemi için Kubernetes'in ikincil sürüm değişikliğidir.
  • Kubernetes hedef sürümü 1.26 veya üzeridir.
  • Hedef sürüm için kullanım dışı bırakılan API'lerin son görüldüğü kullanım, yükseltme işleminden önceki 12 saat içinde gerçekleşti. AKS kullanımı saatlik olarak kaydeder, bu nedenle en son saat içindeki kullanımın algılamada görünmesi garanti değildir.

Not

Bu algılama özelliğini el ile etkinleştirmeniz gerekmez. AKS Otomatik ve AKS Standart kümeleri bunu önceden yapılandırıyor.

Durdurulan yükseltme işlemlerini azaltma

Önkoşulları karşılıyorsanız yükseltmeyi deneyin ve aşağıdaki hata iletisine benzer bir hata alın:

Bad Request({
  "code": "ValidationError",
  "message": "Control Plane upgrade is blocked due to recent usage of a Kubernetes API deprecated in the specified version. Please refer to https://kubernetes.io/docs/reference/using-api/deprecation-guide to migrate the usage. To bypass this error, set enable-force-upgrade in upgradeSettings.overrideSettings. Bypassing this error without migrating usage will result in the deprecated Kubernetes API calls failing. Usage details: 1 error occurred:\n\t* usage has been detected on API flowcontrol.apiserver.k8s.io.prioritylevelconfigurations.v1beta1, and was recently seen at: 2023-03-23 20:57:18 +0000 UTC, which will be removed in 1.26\n\n",
  "subcode": "UpgradeBlockedOnDeprecatedAPIUsage"
})

Aşağıdaki seçeneklerden birini kullanın:

  1. Azure portalında küme kaynağınıza gidin ve Sorunları tanılama ve çözme'yi seçin

  2. Oluştur, Yükselt, Sil ve Ölçeklendir>Kubernetes API kullanımdan kaldırmalarını seçin.

    'Seçili Kubernetes API kullanımdan kaldırmalar' bölümünü gösteren Azure portalının ekran görüntüsü.

  3. Son kullanım dışı API kullanımının görüldüğü zamandan itibaren 12 saat bekleyin. Salt okunur fiiller, kullanım dışı bırakılan API kullanımından ( Get/List/Watch) hariç tutulur. Ayrıca Kapsayıcı içgörülerini etkinleştirerek ve kube denetim günlüklerini keşfederek geçmiş API kullanımını denetleyebilirsiniz.

  4. Küme yükseltmenizi yeniden deneyin.

API değişikliklerini yoksaymak için doğrulamayı atlama

Not

Bu yöntem Azure CLI sürüm 2.57 veya üzerini gerektirir. Önizleme CLI uzantısı yüklüyse 3.0.0b10 veya sonraki bir sürüme güncelleştirin. Hedef Kubernetes sürümünde kullanım dışı bırakılan API'ler uzun vadede başarısız olabileceğinden bu yöntem normal üretim işlemleri için önerilmez. Yükseltmeden sonra kullanım dışı api kullanımını mümkün olan en kısa sürede kaldırın.

--enable-force-upgrade ile az aks upgrade komutunu kullanarak doğrulama atlamasıyla yükseltmeyi çalıştırın ve atlama penceresinin ne zaman sona ereceğini tanımlamak için --upgrade-override-until ayarlayın. Bir değer ayarlamazsanız, pencere varsayılan olarak geçerli saatten itibaren üç gün olarak ayarlanır. Sağlanan tarih ve saat gelecekte olmalıdır.

# Set environment variables
RESOURCE_GROUP_NAME=<your-resource-group-name>
CLUSTER_NAME=<your-cluster-name>
KUBERNETES_VERSION=<target-kubernetes-version>

# Run the upgrade command with validation bypass
az aks upgrade --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --kubernetes-version $KUBERNETES_VERSION --enable-force-upgrade --upgrade-override-until 2023-10-01T13:00:00Z

Not

Z , 'Zulu' saati olarak da bilinen sıfır UTC/GMT uzaklığı için bölge belirleyicidir. Bu örnek pencerenin sonunu GMT olarak 13:00:00 ayarlar. Daha fazla bilgi için bkz . Birleşik tarih ve saat gösterimleri.

Üretimle ilgili dikkat edilmesi gerekenler

Üretim iş yükleri için şu uygulamaları izleyin:

  • Yükseltme engellemeyi hata durumu olarak değil güvenlik mekanizması olarak değerlendirin.
  • Zorlamalı atlama yerine API geçişlerini tercih edin.
  • Planlı bakım pencerelerini ve yükseltme öncesi denetimleri kullanın.
  • Son dakika yükseltme bloklarını önlemek için kullanım dışı API kullanımını sürekli izleyin.

Bu makalede, API hataya neden olan değişikliklerde AKS kümesi yükseltmelerini otomatik olarak nasıl durduracağınız gösterildi. AKS kümelerine yönelik daha fazla yükseltme seçeneği hakkında daha fazla bilgi edinmek için bkz . Azure Kubernetes Service (AKS) kümeleri için yükseltme seçenekleri.

AKS Otomatik hakkında daha fazla bilgi edinmek için aşağıdaki makalelere bakın: