Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: ✔️ Servizio Azure Kubernetes Standard automatico ✔️ Servizio Azure Kubernetes standard
Questo articolo illustra come Servizio Azure Kubernetes (AKS) può bloccare automaticamente gli aggiornamenti del cluster quando rileva l'utilizzo deprecato dell'API Kubernetes.
Per la maggior parte dei carichi di lavoro di produzione, AKS Automatic è l'esperienza predefinita pronta per la produzione consigliata per AKS. Il rilevamento delle modifiche incompatibili dell'API Kubernetes è preconfigurato sia nei cluster AKS Automatic che in quelli AKS Standard.
Comportamento in AKS Automatic e AKS Standard
Entrambe le modalità del cluster includono questa protezione:
- AKS Automatic: incluso per impostazione predefinita come parte delle misure di protezione della piattaforma pronta per la produzione.
- Servizio Azure Kubernetes Standard: incluso per impostazione predefinita nei cluster del servizio Azure Kubernetes Standard.
In entrambe le modalità, AKS può bloccare le operazioni di aggiornamento della versione secondaria quando rileva un uso recente di API deprecate o rimosse nella versione di Kubernetes di destinazione.
Panoramica
Per rimanere all'interno di una versione di Kubernetes supportata, è necessario aggiornare il cluster almeno una volta all'anno e prepararsi per possibili interruzioni. Queste interruzioni possono includere modifiche incompatibili dell'API, deprecazioni e dipendenze come Helm e Container Storage Interface (CSI). Può essere difficile prevedere queste interruzioni ed eseguire la migrazione di carichi di lavoro critici senza tempi di inattività.
Quando AKS rileva l'uso di API deprecate per la versione di destinazione, può bloccare automaticamente le operazioni di aggiornamento della versione secondaria e segnalare il problema. Questo comportamento consente di evitare interruzioni impreviste e consente di correggere l'utilizzo deprecato dell'API prima di continuare l'aggiornamento.
Prerequisites
Assicurarsi di soddisfare i prerequisiti seguenti:
- L'operazione di aggiornamento consiste in un cambio di versione minore di Kubernetes per il piano di controllo del cluster.
- La versione di destinazione di Kubernetes è la 1.26 o successiva.
- L'ultimo utilizzo delle API deprecate per la versione di destinazione si è verificato entro 12 ore prima dell'operazione di aggiornamento. AKS registra l'utilizzo ogni ora, quindi non è garantito che l'utilizzo nell'ultima ora compaia nel rilevamento.
Nota
Non è necessario abilitare manualmente questa funzionalità di rilevamento. I cluster AKS Automatic e AKS Standard lo preconfigurano.
Mitigare le operazioni di aggiornamento bloccate
Se soddisfi i prerequisiti, provi a eseguire un aggiornamento e ricevi un errore simile al seguente messaggio di errore:
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"
})
Usare una delle seguenti opzioni:
- Rimuovere l'utilizzo delle API deprecate (scelta consigliata)
- Ignorare la convalida per ignorare le modifiche all'API.
Rimuovere l'utilizzo delle API deprecate (scelta consigliata)
Nel portale di Azure passare alla risorsa cluster e selezionare Diagnostica e risoluzione dei problemi.
Seleziona Crea, aggiorna, elimina e ridimensiona>deprecazioni dell'API di Kubernetes.
Attendere 12 ore dal momento in cui è stato rilevato l'ultimo utilizzo deprecato dell'API. I verbi di sola lettura vengono esclusi dall'utilizzo deprecato dell'API, ovvero Get/List/Watch. È anche possibile controllare l'utilizzo delle API precedenti abilitando Informazioni dettagliate sui contenitori ed esplorare i log di controllo kube.
Ripetere l'aggiornamento del cluster.
Ignorare la convalida per ignorare le modifiche dell'API
Nota
Questo metodo richiede interfaccia della riga di comando di Azure versione 2.57 o successiva. Se è installata l'estensione dell'interfaccia della riga di comando di anteprima, eseguire l'aggiornamento alla versione 3.0.0b10 o successiva. Questo metodo non è consigliato per le normali operazioni di produzione perché le API deprecate nella versione di Kubernetes di destinazione potrebbero non riuscire a lungo termine. Rimuovere l'utilizzo dell'API deprecato il prima possibile dopo l'aggiornamento.
Eseguire l'aggiornamento con bypass della convalida usando il comando az aks upgrade con --enable-force-upgrade e impostare --upgrade-override-until per definire quando termina la finestra di bypass. Se non si imposta un valore, per impostazione predefinita la finestra viene impostata su tre giorni dall'ora corrente. La data e l'ora specificate devono essere nel futuro.
# 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
Nota
Z è il designatore di fuso orario per l'offset UTC/GMT pari a zero, noto anche come ora "Zulu". In questo esempio la fine della finestra viene impostata su 13:00:00 GMT. Per altre informazioni, vedere Rappresentazioni di data e ora combinate.
Considerazioni sulla produzione
Per i carichi di lavoro di produzione, seguire queste procedure:
- Considerare il blocco dell'aggiornamento come meccanismo di sicurezza, non uno stato di errore.
- Preferire la migrazione api rispetto al bypass forzato.
- Usare le finestre di manutenzione pianificata e i controlli di pre-aggiornamento.
- Monitora costantemente l’uso di API deprecate per evitare blocchi dell’aggiornamento all’ultimo minuto.
Contenuti correlati
Questo articolo ti ha mostrato come arrestare automaticamente gli aggiornamenti del cluster AKS in caso di modifiche incompatibili con l'API. Per altre informazioni sulle opzioni di aggiornamento per i cluster del servizio Azure Kubernetes, vedere Opzioni di aggiornamento per i cluster del servizio Azure Kubernetes.
Per saperne di più su AKS Automatic, consulta gli articoli seguenti: