Condividi tramite


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:

  1. Gli aggiornamenti automatici dell'immagine del nodo non sono stati abilitati quando è stato creato il pool di nodi.
  2. 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.