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-portalen går 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-portalen som visar avsnittet

  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. Om det är en klocka kan du vänta tills användningen sjunker till noll. (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.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.

  1. 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 $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --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.

  2. Försök uppgradera klustret igen med hjälp av az aks upgrade kommandot .

    az aks upgrade --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --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).