Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: ✔️ AKS Automatic ✔️ AKS Standard
Den här artikeln visar hur Azure Kubernetes Service (AKS) automatiskt kan blockera klusteruppgraderingar när den identifierar föråldrad Kubernetes API-användning.
För de flesta produktionsarbetsbelastningar är AKS Automatic den rekommenderade produktionsklara standardupplevelsen för AKS. Identifiering av icke-bakåtkompatibla ändringar i Kubernetes-API:er är förkonfigurerad i både AKS Automatic- och AKS Standard-kluster.
Beteende i AKS Automatic och AKS Standard
Båda klusterlägena omfattar följande skydd:
- AKS Automatic: Ingår som standard som en del av AKS Automatics produktionsfärdiga plattformsskydd.
- AKS Standard: Ingår som standard i AKS Standard-kluster.
I båda lägena kan AKS blockera mindre versionsuppgraderingsåtgärder när den identifierar den senaste användningen av API:er som är inaktuella eller borttagna i kubernetes-målversionen.
Ö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 eventuella störningar. Dessa störningar kan omfatta icke bakåtkompatibla API-ändringar, utfasningar och beroenden såsom Helm och Container Storage Interface (CSI). Det kan vara svårt att förutse dessa störningar och migrera kritiska arbetsbelastningar utan driftstopp.
När AKS identifierar inaktuell API-användning för målversionen kan den automatiskt blockera mindre versionsuppgraderingsåtgärder och varna dig om problemet. Det här beteendet hjälper dig att undvika oväntade störningar och ger dig tid att åtgärda inaktuell API-användning innan du fortsätter uppgraderingen.
Prerequisites
Se till att du uppfyller följande krav:
- Uppgraderingsåtgärden är en kubernetes-delversionsändring för klusterkontrollplanet.
- Kubernetes-målversionen är 1.26 eller senare.
- Den senaste användningen av inaktuella API:er för målversionen inträffade inom 12 timmar före uppgraderingen. AKS registrerar användning en gång i timmen, så användning under den senaste timmen kommer därför inte nödvändigtvis att visas i identifieringen.
Kommentar
Du behöver inte aktivera den här identifieringsfunktionen manuellt. AKS Automatic- och AKS Standard-kluster förkonfigurerar det.
Begränsa effekterna av avbrutna uppgraderingsåtgärder
Om du uppfyller kraven kan du försöka uppgradera och få ett felmeddelande som liknar följande felmeddelande:
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"
})
Använd något av följande alternativ:
- Ta bort användning av inaktuella API:er (rekommenderas)
- Kringgå verifiering för att ignorera API-ändringar.
Ta bort användning av inaktuella API:er (rekommenderas)
I Azure Portal navigerar du till klusterresursen och väljer Diagnostisera och lösa problem
Välj Skapa, uppgradera, ta bort och skala>Kubernetes API-utfasningar.
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.
Försök uppgradera klustret igen.
Kringgå verifiering för att ignorera API-ändringar
Kommentar
Den här metoden kräver Azure CLI version 2.57 eller senare. Om du har installerat CLI-tillägget för förhandsversionen uppdaterar du till version 3.0.0b10 eller senare. Den här metoden rekommenderas inte för normala produktionsåtgärder eftersom inaktuella API:er i kubernetes-målversionen kan misslyckas på lång sikt. Ta bort inaktuell API-användning så snart som möjligt efter uppgraderingen.
Kör uppgraderingen och kringgå valideringen med kommandot az aks upgrade tillsammans med --enable-force-upgrade, och ange --upgrade-override-until för att definiera när tidsfönstret för förbigåendet upphör. Om du inte anger något värde är fönstret som standard tre dagar från aktuell tid. Angivet datum och tid måste vara i framtiden.
# Set environment variables
RESOURCE_GROUP_NAME=<your-resource-group-name>
CLUSTER_NAME=<your-cluster-name>
KUBERNETES_VERSION=<target-kubernetes-version>
# Run the upgrade command with validation bypass
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 zonbeteckningen för nollförskjutningen från UTC/GMT, ä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.
Produktionsöverväganden
Följ dessa metoder för produktionsarbetsbelastningar:
- Behandla uppgraderingsblockering som en säkerhetsmekanism, inte ett feltillstånd.
- Föredrar API-migrering framför force bypass.
- Använd planerade underhållsperioder och kontroller före uppgraderingen.
- Övervaka inaktuell API-användning kontinuerligt för att undvika uppgraderingsblock i sista minuten.
Relaterat innehåll
Den här artikeln visade hur du automatiskt stoppar uppgraderingar av AKS-kluster vid icke bakåtkompatibla API-ändringar. Mer information om fler uppgraderingsalternativ för AKS-kluster finns i Uppgraderingsalternativ för AKS-kluster (Azure Kubernetes Service).
Mer information om AKS Automatic finns i följande artiklar: