Migrer des nœuds vers Linux cgroupv2


À partir de la version 1.33, Google Kubernetes Engine (GKE) migre les clusters exécutant cgroupv1 vers cgroupv2. Cette page vous explique comment :

  • Vérifier le mode cgroup utilisé par les nœuds de votre cluster et si vos charges de travail peuvent être affectées par la transition entre les modes cgroup.
  • Migrer les nœuds de cluster GKE Autopilot ou les pools de nœuds de cluster Standard vers cgroupv2.
  • Désactiver temporairement la migration automatique des nœuds GKE à l'aide de cgroupv1 vers cgroupv2. Suivez ces instructions si votre cluster exécute des charges de travail qui peuvent être affectées par la transition entre les modes cgroup.

Vous pouvez ignorer cette page si vous savez que vos charges de travail s'exécutent comme prévu sur cgroupv2 ou qu'elles ne sont pas affectées par la configuration du mode cgroup. GKE migre automatiquement les clusters exécutant cgroupv1 vers cgroupv2 avec la version 1.33 et les versions ultérieures.

À propos des groupes de contrôle Linux

Le kubelet et l'environnement d'exécution du conteneur utilisent des cgroups (groupes de contrôle) du noyau Linux pour la gestion des ressources, par exemple pour limiter la quantité de ressources processeur ou mémoire auxquelles chaque conteneur d'un pod peut accéder. Il existe deux versions du sous-système cgroup dans le noyau : cgroupv1 et cgroupv2. La compatibilité de Kubernetes avec cgroupv2 a été introduite en version alpha dans la version 1.18 de Kubernetes, en version bêta dans la version 1.22 et en disponibilité générale dans la version 1.25. Pour plus de détails, consultez la documentation consacrée aux cgroups Kubernetes en v2.

Pour savoir comment configurer un mode cgroup pour les clusters Standard, consultez Options de configuration du mode cgroup de Linux.

Transition de GKE vers cgroupv2

Consultez le calendrier suivant pour comprendre comment GKE migre les clusters existants vers cgroupv2 :

  • Pour les versions antérieures à 1.26, cgroupv1 était la valeur par défaut pour les nœuds. Pour les versions 1.26 ou ultérieures, cgroupv2 est la valeur par défaut pour les nouveaux nœuds. Les nœuds existants ne sont pas modifiés. Pour en savoir plus sur le mode cgroup utilisé par défaut par vos clusters GKE, consultez la section Vérifier le mode cgroup des nœuds de cluster.
  • GKE abandonne cgroupv1 à partir de la version mineure 1.31.
  • À partir de la version 1.33, GKE migre les clusters exécutant cgroupv1 vers cgroupv2. Vous pouvez empêcher temporairement cette migration automatique en spécifiant explicitement qu'un pool de nœuds utilise cgroupv1.
  • À partir de la version mineure 1.35, GKE ne prend plus en charge cgroupv1.

Pour connaître la date approximative des mises à niveau automatiques vers des versions mineures ultérieures telles que 1.31 et 1.33, consultez le calendrier estimé des canaux de publication.

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande gcloud components update.

Vérifier le mode cgroup des nœuds du cluster

Le mode cgroup par défaut dépend du type de cluster ou de pool de nœuds, et de la version. Avec la version 1.26 ou ultérieure, la valeur par défaut est cgroupv2. Dans la version 1.25 ou antérieure, la valeur par défaut est cgroupv1 :

  • Pour les clusters Autopilot et les nouveaux pools de nœuds de cluster standard créés avec le provisionnement automatique des nœuds, le mode cgroup est basé sur la version initiale du cluster. Vous ne pouvez pas définir le mode cgroup lors de la création d'un cluster Autopilot. Pour les nouveaux nœuds provisionnés automatiquement, vous ne pouvez pas définir le mode différemment du mode cgroup par défaut en fonction de la version mineure.
  • Pour les pools de nœuds de cluster Standard créés manuellement sans provisionnement automatique des nœuds, le mode cgroup est basé sur la version initiale du pool de nœuds ou sur la configuration personnalisée du système de nœuds.

Pour vérifier le mode cgroup, suivez les instructions en fonction du mode de votre cluster.

Autopilot

Exécutez la commande suivante :

gcloud container clusters describe CLUSTER_NAME \
    --format='value(nodePools[0].config.effectiveCgroupMode)'

Remplacez CLUSTER_NAME par le nom de votre cluster.

Si le résultat est EFFECTIVE_CGROUP_MODE_V2, le cluster s'exécute sur cgroupv2. Si le résultat est EFFECTIVE_CGROUP_MODE_V1, le cluster s'exécute sur cgroupv1.

Les clusters GKE Autopilot qui ont été créés initialement avec GKE version 1.25 ou antérieure exécutent cgroupv1 jusqu'à ce que vous les migriez.

Standard

Avec les clusters GKE Standard, le mode cgroup est défini au niveau du pool de nœuds. Pour vérifier le mode de chaque pool de nœuds, suivez les instructions de la section Vérifier la configuration cgroup. Si les nœuds de votre cluster utilisent déjà cgroupv2, aucune autre action n'est nécessaire.

Migrer des nœuds vers cgroupv2

Nous vous recommandons de migrer les nœuds existants avant que GKE ne les migre automatiquement dans la version 1.33 ou ultérieure.

Pour migrer les nœuds exécutant cgroupv1, procédez comme suit :

  1. Vérifiez le mode cgroup des nœuds. Si les nœuds de votre cluster utilisent déjà cgroupv2, aucune autre action n'est nécessaire.
  2. Consultez les points à prendre en compte concernant la migration (Migrer vers cgroupv2) pour vous assurer que vos charges de travail sont prêtes à utiliser la nouvelle version de l'API.
  3. Migrez les nœuds de votre cluster.

    Autopilot

    Définissez explicitement les nœuds de votre cluster pour qu'ils utilisent cgroupv2 :

    gcloud container clusters update CLUSTER_NAME \
        --autoprovisioning-cgroup-mode=v2
    

    Remplacez CLUSTER_NAME par le nom de votre cluster.

    Standard

    1. Si vous utilisez le provisionnement automatique des nœuds pour le cluster, exécutez la commande suivante pour vous assurer que les pools de nœuds existants et futurs créés avec le provisionnement automatique des nœuds utilisent cgroupv2 :

      gcloud container clusters update CLUSTER_NAME \
          --autoprovisioning-cgroup-mode=v2
      

      Remplacez CLUSTER_NAME par le nom de votre cluster.

    2. Pour les pools de nœuds existants créés sans provisionnement automatique des nœuds, mettez à jour le pool de nœuds pour ajouter les éléments suivants à la configuration du système de nœuds :

      linuxConfig:
        cgroupMode: 'CGROUP_MODE_V2'
      

      Pour en savoir plus, consultez la section Personnaliser la configuration du système de nœuds.

      Lorsque vous créez manuellement des pools de nœuds sans provisionnement automatique des nœuds, GKE utilise cgroupv2 par défaut.

Désactiver temporairement la migration automatique vers cgroupv2

Pour éviter temporairement la migration automatique des nœuds exécutant cgroupv1 vers cgroupv2 avec les versions mineures 1.33 et ultérieures, vous devez définir explicitement cgroupv1. Vous pouvez également suivre ces instructions pour revenir temporairement à cgroupv1 si la migration des nœuds vers cgroupv2 a causé un problème pour les charges de travail de votre cluster.

Autopilot

Exécutez la commande suivante pour les clusters que vous avez créés à l'aide de la version 1.25 ou antérieure. Si votre cluster a été créé avec la version 1.26 ou ultérieure, vous ne pouvez pas définir le mode cgroup sur cgroupv1.

Définissez explicitement les nœuds de votre cluster pour qu'ils utilisent cgroupv1 :

gcloud container clusters update CLUSTER_NAME \
    --autoprovisioning-cgroup-mode=v1

Remplacez CLUSTER_NAME par le nom de votre cluster.

Standard

Pour continuer à exécuter cgroupv1 avec un pool de nœuds de cluster GKE Standard exécutant la version 1.33 ou ultérieure, procédez comme suit :

  1. Si vous utilisez le provisionnement automatique des nœuds et que votre cluster a été créé avec la version 1.25 ou antérieure, utilisez la commande suivante pour vous assurer que les pools de nœuds existants et futurs créés avec le provisionnement automatique des nœuds utilisent cgroupv1. Si votre cluster a été créé avec la version 1.26 ou ultérieure, vous ne pouvez pas définir le mode cgroup sur cgroupv1 :

    gcloud container clusters update CLUSTER_NAME \
        --autoprovisioning-cgroup-mode=v1
    

    Remplacez CLUSTER_NAME par le nom de votre cluster.

  2. Pour les pools de nœuds Standard existants, mettez à jour le pool de nœuds pour ajouter les éléments suivants à la configuration du système de nœuds :

    linuxConfig:
      cgroupMode: 'CGROUP_MODE_V1'
    

    Vous devez également définir cette configuration de nœud pour les nouveaux pools de nœuds que vous créez manuellement sans provisionnement automatique des nœuds.

    Pour en savoir plus, consultez la section Personnaliser la configuration du système de nœuds.