À 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
verscgroupv2
. 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
verscgroupv2
. Vous pouvez empêcher temporairement cette migration automatique en spécifiant explicitement qu'un pool de nœuds utilisecgroupv1
. - À 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 :
- 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. - 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.
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
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.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 :
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 surcgroupv1
:gcloud container clusters update CLUSTER_NAME \ --autoprovisioning-cgroup-mode=v1
Remplacez
CLUSTER_NAME
par le nom de votre cluster.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.