Delen via


AKS-clusterupgrades (Azure Kubernetes Service) automatisch stoppen bij api-belangrijke wijzigingen

In dit artikel leest u hoe u AKS-clusterupgrades (Azure Kubernetes Service) automatisch kunt stoppen bij api-belangrijke wijzigingen.

Overzicht

Als u binnen een ondersteunde Kubernetes-versie wilt blijven, moet u uw cluster ten minste één keer per jaar upgraden en voorbereiden op alle mogelijke onderbrekingen. Deze onderbrekingen zijn onder andere veroorzaakt door wijzigingen die fouten veroorzaken in de API, afschaffingen en afhankelijkheden zoals Helm en Container Storage Interface (CSI). Het kan lastig zijn om te anticiperen op deze onderbrekingen en kritieke workloads te migreren zonder uitvaltijd te ondervinden.

U kunt uw AKS-cluster zo configureren dat upgradebewerkingen die bestaan uit een kleine versiewijziging, automatisch worden gestopt met afgeschafte API's en u wordt gewaarschuwd voor het probleem. Deze functie helpt u onverwachte onderbrekingen te voorkomen en geeft u tijd om de afgeschafte API's te verhelpen voordat u doorgaat met de upgrade.

Voordat u begint

Voordat u begint, moet u ervoor zorgen dat u voldoet aan de volgende vereisten:

  • De upgradebewerking is een kleine versiewijziging van Kubernetes voor het clusterbesturingsvlak.
  • De Kubernetes-versie waarnaar u een upgrade uitvoert, is 1.26 of hoger.
  • Het laatst geziene gebruik van afgeschafte API's voor de doelversie waarnaar u een upgrade uitvoert, moet zich binnen 12 uur vóór de upgradebewerking voordoen. AKS registreert het gebruik per uur, zodat elk gebruik van afgeschafte API's binnen één uur niet gegarandeerd wordt weergegeven in de detectie.

Gestopte upgradebewerkingen beperken

Als u aan de vereisten voldoet, voert u een upgrade uit en ontvangt u een foutbericht dat vergelijkbaar is met het volgende voorbeeldfoutbericht:

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

U hebt twee opties om het probleem te verhelpen: u kunt het gebruik van afgeschafte API's (aanbevolen) verwijderen of validatie omzeilen om API-wijzigingen te negeren.

  1. Navigeer in Azure Portal naar uw clusterresource en selecteer Problemen vaststellen en oplossen

  2. Selecteer Afschaffingen van Kubernetes-API's maken, upgraden, verwijderen en schalen>.

    Een schermopname van Azure Portal met de sectie Geselecteerde Kubernetes-API-afschaffingen.

  3. Wacht 12 uur vanaf het moment dat het laatst afgeschafte API-gebruik is gezien. Alleen-lezen werkwoorden worden uitgesloten van het afgeschafte API-gebruik, namelijk Get/List/Watch.( U kunt ook het gebruik van eerdere API's controleren door Container Insights in te schakelen en kube-auditlogboeken te verkennen.)

  4. Voer de clusterupgrade opnieuw uit.

Validatie overslaan om API-wijzigingen te negeren

Notitie

Voor deze methode moet u Azure CLI versie 2.57 of hoger gebruiken. Als u de preview-CLI-extensie hebt geïnstalleerd, moet u bijwerken naar versie 3.0.0b10 of hoger. Deze methode wordt niet aanbevolen, omdat afgeschafte API's in de beoogde Kubernetes-versie mogelijk niet op lange termijn werken. We raden u aan ze zo snel mogelijk te verwijderen nadat de upgrade is voltooid.

  1. Validatie overslaan om wijzigingen die fouten veroorzaken in de API te negeren en een upgrade aan te roepen. Geef de enable-force-upgrade vlag op en stel de upgrade-override-until eigenschap in om het einde van het venster te definiëren waarin de validatie wordt overgeslagen. Als er geen waarde is ingesteld, wordt het venster standaard ingesteld op drie dagen vanaf de huidige tijd. De datum en tijd die u opgeeft, moeten in de toekomst zijn.

    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
    

    Notitie

    Z is de zone-ontwerpator voor de nul UTC/GMT-offset, ook wel bekend als 'Zulu'-tijd. In dit voorbeeld wordt het einde van het venster ingesteld op 13:00:00 GMT. Zie Gecombineerde datum- en tijdweergaven voor meer informatie.

Volgende stappen

In dit artikel hebt u gezien hoe u AKS-clusterupgrades automatisch kunt stoppen bij wijzigingen die fouten veroorzaken in de API. Zie Upgradeopties voor Azure Kubernetes Service-clusters (AKS) voor meer informatie over meer upgradeopties voor AKS-clusters.