Dela via


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

Den här artikeln visar hur du stoppar aks-klusteruppgraderingar (Azure Kubernetes Service) automatiskt vid api-icke-bakåtkompatibla ändringar.

Översikt

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.

Du kan konfigurera AKS-klustret för att automatiskt stoppa uppgraderingsåtgärder som består av en delversionsändring med inaktuella API:er och varna dig om problemet. Den här funktionen hjälper dig att undvika oväntade störningar och ger dig tid att åtgärda de inaktuella API:erna innan du fortsätter med uppgraderingen.

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 ta bort användningen av inaktuella API:er (rekommenderas) eller kringgå verifiering för att ignorera API-ändringar.

  1. I Azure Portal navigerar du till klusterresursen och väljer Diagnostisera och lösa problem

  2. Välj Skapa, Uppgradera, Ta bort och Skala>Kubernetes API-utfasningar.

    En skärmbild av Azure Portal som visar avsnittet

  3. Vänta 12 timmar från det att den senaste inaktuella API-användningen sågs. Skrivskyddade verb undantas från den inaktuella API-användningen, nämligen Get/List/Watch.( Du kan också kontrollera tidigare API-användning genom att aktivera containerinsikter och utforska kube-granskningsloggar.)

  4. Försök uppgradera klustret igen.

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

Kommentar

Den här metoden kräver att du använder Azure CLI version 2.57 eller senare. Om du har installerat CLI-tillägget för förhandsversionen måste du uppdatera till version 3.0.0b10 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.

  1. Kringgå verifieringen för att ignorera api-icke-bakåtkompatibla ändringar och anropa en uppgradering. 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 upgrade --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --kubernetes-version $KUBERNETES_VERSION --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ä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).