Risolvere i problemi relativi alle versioni obsolete del kernel nelle immagini del nodo dell'host contenitore Linux di Azure
Durante la migrazione o durante l'aggiunta di nuovi pool di nodi all'host contenitore Linux di Azure, è possibile che si verifichino problemi con le versioni obsolete del kernel. Il servizio Azure Kubernetes rilascia una nuova immagine del nodo Linux di Azure ogni settimana, usata per i nuovi pool di nodi e come immagine iniziale per aumentare le prestazioni. Tuttavia, i pool di nodi meno recenti potrebbero non aggiornare le versioni del kernel come previsto.
Per verificare la VERSIONE KERNEL dei pool di nodi, eseguire:
kubectl get nodes -o wide
Confrontare quindi la versione del kernel dei pool di nodi con il kernel più recente pubblicato in packages.microsoft.com.
Sintomo
Un sintomo comune di questo problema include:
- I nodi Linux di Azure non usano la versione più recente del kernel.
Cause
Esistono due cause principali per questo problema:
- Gli aggiornamenti automatici dell'immagine del nodo non sono stati abilitati quando è stato creato il pool di nodi.
- L'immagine di base usata dal servizio Azure Kubernetes per avviare i cluster viene eseguita con due settimane di ritardo rispetto alle versioni più recenti del kernel a causa della procedura di implementazione.
Soluzione
È possibile abilitare gli aggiornamenti automatici usando GitHub Actions e riavviare i nodi per risolvere il problema.
Abilitare gli aggiornamenti automatici dell'immagine del nodo tramite l'interfaccia della riga di comando di Azure
Per abilitare gli aggiornamenti automatici di node-image durante la distribuzione di un cluster da az-cli, aggiungere il parametro --auto-upgrade-channel node-image
.
az aks create --name testAzureLinuxCluster --resource-group testAzureLinuxResourceGroup --os-sku AzureLinux --auto-upgrade-channel node-image
Abilitare gli aggiornamenti automatici di node-image usando i modelli di ARM
Per abilitare gli aggiornamenti automatici dell'immagine del nodo quando si usa un modello di ARM, è possibile impostare la proprietà upgradeChannel in autoUpgradeProfile
su node-image
.
autoUpgradeProfile: {
upgradeChannel: 'node-image'
}
Riavviare i nodi
Quando si aggiorna la versione del kernel, è necessario riavviare il nodo per usare la nuova versione del kernel. È consigliabile configurare il Daemonset Kured. Kured per monitorare i nodi per il file /var/run/reboot-required
, svuotare il carico di lavoro e riavviare i nodi.
Soluzione alternativa: aggiornamenti manuali
Se è necessaria una soluzione alternativa rapida, è possibile aggiornare manualmente node-image in un cluster usando az aks nodepool upgrade. Questa operazione può essere effettuata eseguendo
az aks nodepool upgrade \
--resource-group testAzureLinuxResourceGroup \
--cluster-name testAzureLinuxCluster \
--name myAzureLinuxNodepool \
--node-image-only
Passaggi successivi
Se il problema non viene risolto tramite i passaggi precedenti, aprire un ticket di supporto.