Usare la manutenzione pianificata per pianificare e controllare gli aggiornamenti per il cluster del servizio Azure Kubernetes
Questo articolo illustra come usare la manutenzione pianificata per pianificare e controllare gli aggiornamenti delle immagini del cluster e dei nodi nel servizio Azure Kubernetes.
La manutenzione regolare viene eseguita automaticamente nel cluster del servizio Azure Kubernetes. Esistono due tipi di operazioni di manutenzione:
- La manutenzione avviata dal servizio Azure Kubernetes riguarda le release settimanali eseguite dal servizio Azure Kubernetes per mantenere aggiornato il cluster con le funzionalità e gli aggiornamenti più recenti.
- La manutenzione avviata dall'utente include aggiornamenti automatici del cluster e aggiornamenti automatici per la sicurezza del sistema operativo del nodo.
Quando si usa la funzionalità di manutenzione pianificata nel servizio Azure Kubernetes, è possibile eseguire entrambi i tipi di manutenzione con una frequenza di propria scelta, per ridurre al minimo l'impatto del carico di lavoro. È possibile usare la manutenzione pianificata per programmare le tempistiche degli aggiornamenti automatici, ma l'abilitazione o la disabilitazione della manutenzione pianificata non abilita né disabilita gli aggiornamenti automatici.
Operazioni preliminari
- Questo articolo presuppone che si disponga di un cluster del servizio Azure Kubernetes esistente. Se non si ha un cluster del servizio Azure Kubernetes, vedere Creare un cluster del servizio Azure Kubernetes.
- Se si usa l'interfaccia della riga di comando di Azure, eseguire l'aggiornamento all’ultima versione con il comando
az upgrade
.
Considerazioni
Quando si usa la manutenzione pianificata, valgono le considerazioni seguenti:
- Il servizio Azure Kubernetes si riserva il diritto di interrompere le finestre di manutenzione pianificata per operazioni di manutenzione non pianificate e reattive che siano urgenti o critiche. Queste operazioni di manutenzione potrebbero essere eseguite anche durante i periodi
notAllowedTime
onotAllowedDates
definiti nella configurazione. - Le operazioni di manutenzione vengono considerate solo un'operazione con massimo impegno e non è garantito che si verifichi all'interno di una finestra specificata.
Pianificare i tipi di configurazione per la manutenzione pianificata
Per la manutenzione pianificata sono disponibili tre tipi di configurazione di pianificazione:
default
è una configurazione di base per il controllo delle versioni del servizio Azure Kubernetes. Le versioni possono richiedere fino a due settimane per l'implementazione in tutte le aree dal momento iniziale della spedizione per via delle procedure di distribuzione sicure di Azure.Scegliere
default
per pianificare questi aggiornamenti in modo che sia meno problematico per l'utente. È possibile monitorare lo stato di una versione continuativa del servizio Azure Kubernetes in base all'area con il tracker delle versioni settimanali.aksManagedAutoUpgradeSchedule
controlla quando eseguire gli aggiornamenti del cluster pianificati dal canale di aggiornamento automatico designato. È possibile configurare impostazioni di frequenza e ricorrenza più controllate con questa configurazione rispetto alla configurazionedefault
. Per altre informazioni sull'aggiornamento automatico del cluster, vedere Aggiornare automaticamente un cluster del servizio Azure Kubernetes.aksManagedNodeOSUpgradeSchedule
controlla quando eseguire l'applicazione di patch di sicurezza del sistema operativo del nodo pianificata dal canale di aggiornamento automatico del sistema operativo del nodo. È possibile configurare impostazioni di frequenza e ricorrenza più controllate con questa configurazione rispetto alla configurazionedefault
. Per altre informazioni sui canali di aggiornamento automatico del sistema operativo del nodo, vedere Applicare automaticamente patch e aggiornare le immagini dei nodi del cluster del servizio Azure Kubernetes.
È consigliabile usare aksManagedAutoUpgradeSchedule
per tutti gli scenari di aggiornamento del cluster e aksManagedNodeOSUpgradeSchedule
per tutti gli scenari di applicazione di patch alla sicurezza del sistema operativo del nodo.
L'opzione default
è destinata esclusivamente alle versioni settimanali del servizio Azure Kubernetes. È possibile impostare la configurazione default
sulla configurazione aksManagedAutoUpgradeSchedule
o aksManagedNodeOSUpgradeSchedule
usando il comando az aks maintenanceconfiguration update
.
Creare una finestra di manutenzione
Nota
Quando si usa l'aggiornamento automatico, per garantire una funzionalità appropriata, usare una finestra di manutenzione con una durata di quattro ore o più.
Le finestre di manutenzione pianificata sono specificate nell'ora UTC (Coordinated Universal Time).
Una finestra di manutenzione default
ha le proprietà legacy seguenti (non più consigliate):
Nome | Descrizione | Default value |
---|---|---|
timeInWeek |
In una configurazione default questa proprietà contiene i valori day e hourSlots che definiscono una finestra di manutenzione. |
Non applicabile |
timeInWeek.day |
Giorno della settimana per eseguire la manutenzione in una configurazione di default . |
Non applicabile |
timeInWeek.hourSlots |
Elenco di intervalli di tempo a lungo termine per eseguire la manutenzione in un determinato giorno in una configurazione di default . |
Non applicabile |
notAllowedTime |
Intervallo di date in cui la manutenzione non può essere eseguita, determinata dalle proprietà figlio start e end . Questa proprietà è applicabile solo quando si crea la finestra di manutenzione usando un file di configurazione. |
Non applicabile |
Nota
Dalla versione dell'API 2023-05-01 successiva, usare le proprietà seguenti per la configurazione default
.
Una aksManagedAutoUpgradeSchedule
finestra di manutenzione o aksManagedNodeOSUpgradeSchedule
e default
la configurazione dalla versione dell'API 2023-05-01 successiva ha le proprietà seguenti:
Nome | Descrizione | Default value |
---|---|---|
utcOffset |
Fuso orario della manutenzione del cluster. | +00:00 |
startDate |
Data di attivazione della finestra di manutenzione. | Data corrente in fase di creazione |
startTime |
Ora di inizio della manutenzione, in base al fuso orario determinato da utcOffset . |
Non applicabile |
schedule |
Frequenza di aggiornamento. Sono disponibili tre tipi: Weekly , AbsoluteMonthly e RelativeMonthly . |
Non applicabile |
intervalDays |
Intervallo in giorni per le esecuzioni di manutenzione. È applicabile solo a aksManagedNodeOSUpgradeSchedule . |
Non applicabile |
intervalWeeks |
Intervallo di settimane per le esecuzioni di manutenzione. | Non applicabile |
intervalMonths |
Intervallo in mesi per le esecuzioni di manutenzione. | Non applicabile |
dayOfWeek |
Giorno specificato della settimana per l'inizio della manutenzione. | Non applicabile |
durationHours |
Durata della finestra per l'esecuzione della manutenzione. | Non applicabile |
notAllowedDates |
Intervallo di date in cui la manutenzione non può essere eseguita, determinata dalle proprietà figlio start e end . È applicabile solo quando si crea la finestra di manutenzione usando un file di configurazione. |
Non applicabile |
Tipi di pianificazione
Sono disponibili quattro tipi di pianificazione: Daily
, Weekly
, AbsoluteMonthly
e RelativeMonthly
.
I tipi di pianificazione Weekly
, AbsoluteMonthly
e RelativeMonthly
sono applicabili solo alle configurazioni aksManagedClusterAutoUpgradeSchedule
e aksManagedNodeOSUpgradeSchedule
. Le pianificazioni Daily
sono applicabili solo alle configurazioni aksManagedNodeOSUpgradeSchedule
.
Tutti i campi visualizzati per ogni tipo di pianificazione sono obbligatori.
Una pianificazione Daily
potrebbe essere del genere "ogni tre giorni":
"schedule": {
"daily": {
"intervalDays": 3
}
}
Una pianificazione Weekly
potrebbe essere del genere "ogni due settimane il venerdì":
"schedule": {
"weekly": {
"intervalWeeks": 2,
"dayOfWeek": "Friday"
}
}
Una pianificazione AbsoluteMonthly
potrebbe essere del genere "ogni tre mesi, il primo giorno del mese":
"schedule": {
"absoluteMonthly": {
"intervalMonths": 3,
"dayOfMonth": 1
}
}
Una pianificazione RelativeMonthly
potrebbe essere del genere "ogni due mesi, l'ultimo lunedì":
"schedule": {
"relativeMonthly": {
"intervalMonths": 2,
"dayOfWeek": "Monday",
"weekIndex": "Last"
}
}
I valori validi per weekIndex
includono First
, Second
, Third
, Fourth
e Last
.
Aggiungere una configurazione della finestra di manutenzione
Aggiungere una configurazione della finestra di manutenzione a un cluster del servizio Azure Kubernetes con il comando az aks maintenanceconfiguration add
.
Nel primo esempio viene aggiunta una nuova configurazione default
che pianifica l'esecuzione della manutenzione dall’1:00 alle 2:00, ogni lunedì. Nel secondo esempio viene aggiunta una nuova configurazione aksManagedAutoUpgradeSchedule
che pianifica l’esecuzione della manutenzione ogni terzo venerdì tra le 12:00 e le 8:00 nel fuso orario UTC+5:30
.
# Add a new default configuration
az aks maintenanceconfiguration add --resource-group myResourceGroup --cluster-name myAKSCluster --name default --weekday Monday --start-hour 1
# Add a new aksManagedAutoUpgradeSchedule configuration
az aks maintenanceconfiguration add --resource-group myResourceGroup --cluster-name myAKSCluster --name aksManagedAutoUpgradeSchedule --schedule-type Weekly --day-of-week Friday --interval-weeks 3 --duration 8 --utc-offset +05:30 --start-time 00:00
Nota
Quando si usa un tipo di configurazione default
, è possibile omettere il parametro --start-time
per consentire la manutenzione in qualsiasi momento durante la giornata.
Aggiornare una finestra di manutenzione esistente
Aggiornare una configurazione di manutenzione esistente con il comando az aks maintenanceconfiguration update
.
Nell’esempio seguente viene aggiornata la configurazione default
per pianificare l'esecuzione della manutenzione dalle 2:00 alle 3:00, ogni lunedì:
az aks maintenanceconfiguration update --resource-group myResourceGroup --cluster-name myAKSCluster --name default --weekday Monday --start-hour 2
Elencare tutte le finestre di manutenzione in un cluster esistente
Elencare le finestre di configurazione di manutenzione correnti nel cluster del servizio Azure Kubernetes tramite il comando az aks maintenanceconfiguration list
:
az aks maintenanceconfiguration list --resource-group myResourceGroup --cluster-name myAKSCluster
Visualizzare una finestra di configurazione di manutenzione specifica in un cluster esistente
Visualizzare una finestra di configurazione di manutenzione specifica nel cluster del servizio Azure Kubernetes usando il comando az aks maintenanceconfiguration show
con il parametro --name
:
az aks maintenanceconfiguration show --resource-group myResourceGroup --cluster-name myAKSCluster --name aksManagedAutoUpgradeSchedule
L'output di esempio seguente mostra la finestra di manutenzione per aksManagedAutoUpgradeSchedule
:
{
"id": "/subscriptions/<subscription>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/maintenanceConfigurations/aksManagedAutoUpgradeSchedule",
"maintenanceWindow": {
"durationHours": 4,
"notAllowedDates": [
{
"end": "2024-01-05",
"start": "2023-12-23"
}
],
"schedule": {
"absoluteMonthly": {
"dayOfMonth": 1,
"intervalMonths": 3
},
"daily": null,
"relativeMonthly": null,
"weekly": null
},
"startDate": "2023-01-20",
"startTime": "09:00",
"utcOffset": "-08:00"
},
"name": "aksManagedAutoUpgradeSchedule",
"notAllowedTime": null,
"resourceGroup": "myResourceGroup",
"systemData": null,
"timeInWeek": null,
"type": null
}
Eliminare una finestra di configurazione della manutenzione in un cluster esistente
Eliminare una finestra di configurazione della manutenzione nel cluster del servizio Azure Kubernetes tramite il comando az aks maintenanceconfiguration delete
.
Nell'esempio seguente viene eliminata la configurazione di manutenzione autoUpgradeSchedule
:
az aks maintenanceconfiguration delete --resource-group myResourceGroup --cluster-name myAKSCluster --name autoUpgradeSchedule
Domande frequenti
Come è possibile controllare le configurazioni di manutenzione esistenti nel cluster?
Usare il comando
az aks maintenanceconfiguration show
.La manutenzione reattiva e non pianificata può verificarsi anche durante i periodi
notAllowedTime
onotAllowedDates
?Sì. Il servizio Azure Kubernetes si riserva il diritto di interrompere queste finestre per operazioni di manutenzione non pianificate, reattive che siano urgenti o critiche.
Come è possibile stabilire se si è verificato un evento di manutenzione?
Per le versioni, controllare l'area del cluster e cercare le informazioni nelle versioni settimanali per verificare se corrispondono al programma di manutenzione. Per visualizzare lo stato degli aggiornamenti automatici, cercare i log attività nel cluster. È anche possibile cercare eventi correlati all'aggiornamento specifici, come indicato in Aggiornare un cluster del servizio Azure Kubernetes.
Il servizio Azure Kubernetes genera anche eventi di Griglia di eventi di Azure correlati all'aggiornamento. Per altre informazioni, vedere Servizio Azure Kubernetes come origine di Griglia di eventi.
È possibile usare più configurazioni di manutenzione contemporaneamente?
Sì, è possibile eseguire tutte e tre le configurazioni contemporaneamente:
default
,aksManagedAutoUpgradeSchedule
eaksManagedNodeOSUpgradeSchedule
. Nel caso in cui le finestre si sovrappongano, il servizio Azure Kubernetes decide l'ordine di esecuzione.È stata configurata una finestra di manutenzione, ma l'aggiornamento non è stato eseguito. Perché?
L'aggiornamento automatico del servizio Azure Kubernetes richiede una certa quantità di tempo, in genere non superiore a 15 minuti, per prendere in considerazione la finestra di manutenzione. È consigliabile far trascorrere almeno 15 minuti tra la creazione o l'aggiornamento di una configurazione di manutenzione e l'ora di inizio pianificata.
Assicurarsi anche che il cluster venga avviato all'avvio della finestra di manutenzione pianificata. Se il cluster viene arrestato, il relativo piano di controllo viene deallocato e non è possibile eseguire alcuna operazione.
Perché uno dei pool di agenti è stato aggiornato al di fuori della finestra di manutenzione?
Se un pool di agenti non viene aggiornato (ad esempio, perché i budget di interruzione dei pod lo hanno impedito), potrebbe essere aggiornato in un secondo momento, al di fuori della finestra di manutenzione. Questo scenario è denominato "aggiornamento di recupero". Evita che i pool di agenti vengano aggiornati con una versione diversa dal piano di controllo del servizio Azure Kubernetes.
Un altro motivo per cui un pool di agenti potrebbe essere aggiornato in modo imprevisto è quando non è presente alcuna configurazione di manutenzione definita o se è stato eliminato. In tal caso, un cluster con aggiornamento automatico, ma senza una configurazione di manutenzione verrà aggiornato in momenti casuali (pianificazione di fallback), che potrebbe essere un intervallo di tempo indesiderato.
Esistono procedure consigliate per le configurazioni di manutenzione?
È consigliabile impostare la pianificazione degli aggiornamenti della sicurezza del sistema operativo del nodo con una frequenza settimanale se si usa il canale
NodeImage
, perché viene fornita una nuova immagine del nodo ogni settimana. È inoltre possibile acconsentire esplicitamente al canaleSecurityPatch
per ricevere gli aggiornamenti giornalieri per la sicurezza.Impostare la pianificazione dell’aggiornamento automatico su una cadenza mensile per rimanere aggiornati con i criteri di supporto di Kubernetes N-2.
Per una descrizione dettagliata delle procedure consigliate per l'aggiornamento e altre considerazioni, vedi Linee guida per l'aggiornamento e le patch del servizio Azure Kubernetes.
È possibile configurare tutti i cluster in una singola sottoscrizione per usare la stessa configurazione di manutenzione?
Non è consigliabile usare la stessa configurazione di manutenzione per più cluster in una singola sottoscrizione, perché ciò può causare errori di limitazione arm che causano errori di aggiornamento del cluster. È invece consigliabile sfalsare le finestre di manutenzione per ogni cluster per evitare questi errori.
Passaggi successivi
- Per iniziare ad aggiornare il cluster del servizio Azure Kubernetes, vedere Opzioni di aggiornamento per i cluster del servizio Azure Kubernetes.
Azure Kubernetes Service