Stoppa azure Kubernetes Service-klusteruppgraderingar (AKS) automatiskt vid API-icke-bakåtkompatibla ändringar

Om du vill hålla dig inom en Kubernetes-version som stöds måste du uppgradera klustret minst en gång per år och förbereda dig för alla möjliga störningar. Dessa störningar omfattar sådana som orsakas av api-icke-bakåtkompatibla ändringar, utfasningar och beroenden som Helm och CSI (Container Storage Interface). Det kan vara svårt att förutse dessa störningar och migrera kritiska arbetsbelastningar utan avbrott.

AKS stoppar nu automatiskt uppgraderingsåtgärder som består av en delversionsändring med inaktuella API:er och skickar ett felmeddelande för att varna dig om problemet.

Innan du börjar

Kontrollera att du uppfyller följande krav innan du börjar:

  • Uppgraderingsåtgärden är en kubernetes-delversionsändring för klusterkontrollplanet.
  • Kubernetes-versionen som du uppgraderar till är 1.26 eller senare.
  • Den senaste användningen av inaktuella API:er för den målversion som du uppgraderar till måste ske inom 12 timmar före uppgraderingen. AKS registrerar användning varje timme, så all användning av inaktuella API:er inom en timme visas inte garanterat i identifieringen.

Minimera stoppade uppgraderingsåtgärder

Om du uppfyller kraven kan du försöka uppgradera och få ett felmeddelande som liknar följande exempelfel:

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"
})

Du har två alternativ för att åtgärda problemet. Du kan antingen ta bort användningen av inaktuella API:er (rekommenderas) eller kringgå verifieringen för att ignorera API-ändringar.

  1. I Azure-portalen går du till översiktssidan för klustret och väljer Diagnostisera och lösa problem.

  2. Gå till kategorin Skapa, Uppgradera, Ta bort och Skala och välj Kubernetes API-utfasningar.

    A screenshot of the Azure portal showing the 'Selected Kubernetes API deprecations' section.

  3. Vänta 12 timmar från det att den senaste inaktuella API-användningen sågs. Kontrollera verbet i den inaktuella API-användningen för att veta om det är en klocka.

  4. Försök uppgradera klustret igen.

Du kan också kontrollera tidigare API-användning genom att aktivera Container Insights och utforska kube-granskningsloggar. Kontrollera verbet i den inaktuella API-användningen för att förstå om det är ett klockanvändningsfall .

Kringgå verifiering för att ignorera API-ändringar

Kommentar

Den här metoden kräver att du använder Azure CLI version 2.53 eller senare. Om du har aks-preview CLI-tillägget installerat måste du uppdatera till version 0.5.154 eller senare. Den här metoden rekommenderas inte eftersom inaktuella API:er i den riktade Kubernetes-versionen kanske inte fungerar på lång sikt. Vi rekommenderar att du tar bort dem så snart som möjligt när uppgraderingen är klar.

  • Kringgå verifieringen för att ignorera icke-bakåtkompatibla API-ändringar med kommandot az aks update . enable-force-upgrade Ange flaggan och ange upgrade-override-until egenskapen för att definiera slutet av fönstret under vilket verifieringen kringgås. Om inget värde har angetts är fönstret som standard tre dagar från den aktuella tiden. Datum och tid som du anger måste finnas i framtiden.

    az aks update --name myAKSCluster --resource-group myResourceGroup --enable-force-upgrade --upgrade-override-until 2023-10-01T13:00:00Z
    

    Kommentar

    Z är zondesignaren för utc-/GMT-förskjutningen noll, även kallad "Zulu"-tid. I det här exemplet anges slutet av fönstret till 13:00:00 GMT. Mer information finns i Kombinerade datum- och tidsrepresentationer.

  • När föregående kommando har slutförts kan du försöka uppgradera igen.

    az aks upgrade --name myAKSCluster --resource-group myResourceGroup --kubernetes-version <KUBERNETES_VERSION>
    

Nästa steg

Den här artikeln visar hur du stoppar AKS-klusteruppgraderingar automatiskt på API-icke-bakåtkompatibla ändringar. Mer information om fler uppgraderingsalternativ för AKS-kluster finns i Uppgraderingsalternativ för AKS-kluster (Azure Kubernetes Service).