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.
Het gebruik van afgeschafte API's verwijderen (aanbevolen)
Navigeer in Azure Portal naar uw clusterresource en selecteer Problemen vaststellen en oplossen
Selecteer Afschaffingen van Kubernetes-API's maken, upgraden, verwijderen en schalen>.
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.)
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.
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 deupgrade-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 op13: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.
Azure Kubernetes Service