Migrer des nœuds vers cgroupv2 Linux


À partir de la version 1.32, 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 pools de nœuds de cluster GKE Standard vers cgroupv2.
  • Désactiver temporairement la migration automatique des pools de 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 migrer manuellement ou désactiver temporairement les pools de nœuds standards. Vous ne pouvez pas migrer ni désactiver temporairement les clusters Autopilot.

Vous pouvez ignorer cette page si vous savez que vos charges de travail s'exécutent comme prévu sur cgroupv2 ou si 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.32 ou ultérieure.

À 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 en savoir plus sur la configuration d'un mode cgroup pour les clusters standards, consultez la section Options de configuration du mode cgroup Linux.

Comment GKE passe à cgroupv2

Consultez la chronologie suivante pour comprendre comment GKE fait passer les clusters existants à cgroupv2 :

  • Pour les versions antérieures à la version 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.
  • Dans la version mineure 1.31, GKE abandonne cgroupv1.
  • À partir de la version 1.32, 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.
  • Dans la version mineure 1.34, GKE n'est plus compatible avec cgroupv1.

Pour connaître le délai approximatif des mises à niveau automatiques vers les versions mineures ultérieures telles que 1.31 et 1.32, 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 de cluster

Le mode cgroup par défaut dépend du type de cluster ou de pool de nœuds, ainsi que de la version. Avec la version 1.26 ou ultérieure, la valeur par défaut est cgroupv2. Avec la version 1.25 ou une version 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.
  • Pour les pools de nœuds de cluster standards créés manuellement sans provisionnement automatique des nœuds, le mode cgroup est basé sur la version initiale du pool 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 en remplaçant CLUSTER_NAME par le nom de votre cluster :

gcloud container clusters describe CLUSTER_NAME \
    --format='value(initialClusterVersion)'

Les clusters GKE Autopilot initialement créés avec la version 1.25 de GKE ou une version antérieure exécutent cgroupv1. Les clusters initialement créés avec la version 1.26 ou ultérieure exécutent cgroupv2.

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 pools de nœuds individuels, suivez les instructions de vérification de la configuration cgroup. Si les nœuds de votre cluster utilisent déjà cgroupv2, aucune autre action n'est requise.

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.32 ou ultérieure. Vous pouvez migrer manuellement les pools de nœuds standards. Vous ne pouvez pas migrer de clusters Autopilot.

Pour migrer des 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 requise.
  2. Lisez les considérations concernant la migration, Migrer vers cgroup v2, pour vous assurer que vos charges de travail sont prêtes à utiliser la nouvelle version de l'API.
  3. Pour migrer les nœuds de votre cluster standard, ajoutez les éléments suivants à la configuration du système de nœuds pour chaque pool de nœuds :

      linuxConfig:
      cgroupMode: 'CGROUP_MODE_V2'
    

Désactiver temporairement la migration automatique vers cgroupv2

Vous pouvez désactiver temporairement les pools de nœuds standards. Vous ne pouvez pas désactiver temporairement les clusters Autopilot.

Pour éviter temporairement la migration automatique des pools de nœuds de cluster standard exécutant cgroupv1 vers cgroupv2 avec les versions mineures 1.32 et ultérieures, vous devez définir explicitement cgroupv1.

Pour les pools de nœuds standards existants, ajoutez les éléments suivants à la configuration du système de nœuds pour chaque pool de nœuds :

linuxConfig:
  cgroupMode: 'CGROUP_MODE_V1'

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