Arrestare automaticamente gli aggiornamenti del cluster del servizio Azure Kubernetes nelle modifiche che causano un'interruzione dell'API
Questo articolo spiega come arrestare automaticamente gli aggiornamenti del cluster del servizio Azure Kubernetes nelle modifiche che causano un'interruzione dell'API.
Panoramica
Per rimanere all'interno di una versione di Kubernetes supportata, è necessario aggiornare il cluster almeno una volta all'anno e prepararsi a tutte le possibili interruzioni. Queste interruzioni includono quelle causate da modifiche che causano interruzioni dell'API, deprecazione e dipendenze, ad esempio Helm e L'interfaccia di archiviazione contenitori (CSI). Può essere difficile prevedere queste interruzioni ed eseguire la migrazione di carichi di lavoro critici senza subire tempi di inattività.
È possibile configurare il cluster del servizio Azure Kubernetes per arrestare automaticamente le operazioni di aggiornamento costituite da una modifica della versione secondaria con API deprecate e segnalare il problema. Questa funzionalità consente di evitare interruzioni impreviste e pertanto di risolvere le API deprecate prima di procedere con l'aggiornamento.
Operazioni preliminari
Prima di iniziare, verificare di aver soddisfatto i prerequisiti seguenti:
- L'operazione di aggiornamento è una modifica della versione secondaria di Kubernetes per il piano di controllo del cluster.
- La versione di Kubernetes a cui si sta eseguendo l'aggiornamento è 1.26 o successiva.
- L'ultimo utilizzo delle API deprecate per la versione di destinazione a cui si esegue l'aggiornamento deve avvenire entro 12 ore prima dell'operazione di aggiornamento. Il servizio Azure Kubernetes registra l'utilizzo orario, pertanto qualsiasi utilizzo delle API deprecate entro un'ora non è garantito che venga visualizzato nel rilevamento.
Attenuare le operazioni di aggiornamento arrestate
Se si soddisfano i prerequisiti, tentare un aggiornamento e ricevere un messaggio di 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"
})
Sono disponibili due opzioni per attenuare il problema: è possibile rimuovere l'utilizzo delle API deprecate (scelta consigliata) o 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.
Selezionare Crea, aggiorna, elimina e ridimensiona>Deprecazioni API 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 dell'API deprecato, 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 l'uso dell'interfaccia della riga di comando di Azure versione 2.57 o successiva. Se è installata l'estensione dell'interfaccia della riga di comando di anteprima, è necessario eseguire l'aggiornamento alla versione 3.0.0b10
o successiva. Questo metodo non è consigliato, perché le API deprecate nella versione di Kubernetes di destinazione potrebbero non funzionare a lungo termine. È consigliabile rimuoverle il prima possibile al termine dell'aggiornamento.
Ignorare la convalida per ignorare le modifiche che causano un'interruzione dell'API e richiamare un aggiornamento. Specificare il flag
enable-force-upgrade
e impostare la proprietàupgrade-override-until
per definire la fine della finestra durante la quale la convalida viene ignorata. Se non viene impostato alcun valore, per impostazione predefinita la finestra viene impostata su tre giorni dall'ora corrente. La data e l'ora specificate devono essere future.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
è l'operatore di progettazione della zona per l'offset UTC/GMT zero, noto anche come ora "Zulu". In questo esempio la fine della finestra viene impostata su13:00:00
GMT. Per altre informazioni, vedere Rappresentazioni di data e ora combinate.
Passaggi successivi
Questo articolo ha illustrato come arrestare automaticamente gli aggiornamenti del cluster del servizio Azure Kubernetes nelle modifiche che causano un'interruzione dell'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.
Azure Kubernetes Service