Partager via


Résoudre les problèmes liés aux versions obsolètes du noyau dans les images de nœud d’hôte de conteneur Linux Azure

Lors de la migration ou de l’ajout de nouveaux pools de nœuds à votre hôte de conteneur Linux Azure, vous pouvez rencontrer des problèmes avec des versions obsolètes du noyau. Azure Kubernetes Service (AKS) publie une nouvelle image de nœud Linux Azure toutes les semaines, qui est utilisée pour les nouveaux pools de nœuds et comme image de démarrage pour le scale-up. Cependant, les pools de nœuds plus anciens peuvent ne pas mettre à jour la version de leur noyau comme attendu.

Pour vérifier la VERSION DU NOYAU (KERNEL-VERSION) de vos pools de nœuds, exécutez :

    kubectl get nodes -o wide

Ensuite, comparez la version du noyau de vos pools de nœuds avec le dernier noyau publié sur packages.microsoft.com.

Symptôme

Un symptôme courant de ce problème peut être :

  • Les nœuds Linux Azure n’utilisent pas la dernière version du noyau.

Causes

Il existe deux causes principales de ce problème :

  1. Les mises à niveau automatiques des images de nœud n’ont pas été activées lors de la création du pool de nœuds.
  2. L’image de base utilisée par AKS pour démarrer des clusters s’exécute deux semaines après les dernières versions du noyau en raison de leur procédure de déploiement.

Solution

Vous pouvez activer les mises à niveau automatiques en utilisant GitHub Actions et redémarrer les nœuds pour résoudre ce problème.

Activer les mises à niveau automatiques des images de nœud en utilisant Azure CLI

Pour activer les mises à niveau automatiques des images de nœud lors du déploiement d’un cluster depuis az-cli, ajoutez le paramètre --auto-upgrade-channel node-image.

az aks create --name testAzureLinuxCluster --resource-group testAzureLinuxResourceGroup --os-sku AzureLinux --auto-upgrade-channel node-image

Activer les mises à niveau automatiques des images de nœud en utilisant des modèles ARM

Pour activer les mises à niveau automatiques des images de nœud lors de l’utilisation d’un modèle ARM, vous pouvez définir la propriété upgradeChannel dans autoUpgradeProfile sur node-image.

    autoUpgradeProfile: {
      upgradeChannel: 'node-image'
    }

Redémarrer les nœuds

Lors de la mise à jour de la version du noyau, vous devez redémarrer le nœud pour utiliser la nouvelle version du noyau. Nous vous recommandons de configurer le DaemonSet kured. Utilisez kured pour surveiller vos nœuds pour le fichier /var/run/reboot-required, vider la charge de travail et redémarrer les nœuds.

Solution de contournement : mises à niveau manuelles

Si vous avez besoin d’une solution de contournement rapide, vous pouvez mettre à niveau manuellement l’image de nœud sur un cluster en utilisant az aks nodepool upgrade. Pour cela, exécutez

az aks nodepool upgrade \
    --resource-group testAzureLinuxResourceGroup \
    --cluster-name testAzureLinuxCluster \
    --name myAzureLinuxNodepool \
    --node-image-only

Étapes suivantes

Si les étapes précédentes ne vous permettent pas de résoudre le problème, ouvrez un ticket d’incident.