Utiliser containerd pour l'environnement d'exécution des conteneurs

L'environnement d'exécution du conteneur est un logiciel chargé de la gestion des conteneurs et des images de conteneurs sur un nœud Kubernetes. containerd est un environnement d'exécution de conteneurs CNCF (Cloud Native Cloud Foundation) hiérarchisé. Il est compatible de manière native avec Kubernetes et est considéré comme plus efficace et sécurisé que les ressources Docker Engine pour Kubernetes. Jusqu'à Kubernetes 1.20, Docker Engine était l'environnement d'exécution de conteneurs principal. Toutefois, Dockershim, le code d'intégration Docker Engine de Kubernetes, est obsolète pour la version 1.20 de Kubernetes et a été supprimé dans la version 1.24.

À l'avenir, vous devrez utiliser containerd dans vos clusters.

Compatibilité de containerd dans un cluster d'administrateur

GKE sur VMware utilise containerd pour tous les nœuds de cluster d'administrateur.

Compatibilité de containerd dans un cluster d'utilisateur

GKE sur VMware est compatible avec les types d'images d'OS suivants pour les nœuds de cluster d'utilisateur:

Type d'image de l'OSEnvironnement d'exécution du conteneur
ubuntu_containerdcontainerd
coscontainerd
windowscontainerd

Restrictions et recommandations

  • À partir de la version 1.13.0, GKE sur VMware n'accepte plus le type d'image d'OS ubuntu. Tous les nœuds de cluster doivent utiliser l'environnement d'exécution containerd.

  • Vous ne pouvez pas mettre à niveau un cluster qui utilise Docker Engine vers la version 1.13. Vous devez mettre à jour votre cluster pour utiliser l'environnement d'exécution containerd avant de passer à la version 1.13.

  • À partir de la version 1.12.0, vous ne pouvez plus créer de clusters utilisant le type d'image de l'OS ubuntu. En d'autres termes, vous ne pouvez plus créer de clusters utilisant l'environnement d'exécution des conteneurs Docker Engine.

Déterminer les pools de nœuds qui utilisent Docker Engine

Ubuntu

Répertoriez les pools de nœuds Ubuntu qui utilisent Docker Engine:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get onpremnodepools \
    -o json -A | jq -r '.items[] |select(.spec.osImageType == "ubuntu")|.metadata.name'

Remplacez USER_CLUSTER_KUBECONFIG par le chemin d'accès du fichier kubeconfig de votre cluster d'utilisateur.

Exemple de résultat :

ubuntu-node-pool-1
ubuntu-node-pool-3

Windows

Tous les pools de nœuds Windows d'un cluster d'utilisateur utilisent le même environnement d'exécution de conteneur. L'environnement d'exécution des nœuds Windows est déterminé par la valeur de enableWindowsDataplaneV2, qui est un champ du fichier de configuration du cluster d'utilisateur.

Si enableWindowsDataplaneV2 correspond à true, tous les nœuds Windows du cluster d'utilisateur utilisent containerd. Si la valeur est false, tous les nœuds Windows utilisent Docker Engine.

Exécutez la commande suivante pour déterminer les clusters d'utilisateur dont enableWindowsDataplaneV2 est défini sur false. Cela vous indique les clusters d'utilisateur configurés pour utiliser Docker Engine pour les nœuds Windows.

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get onpremuserclusters \
    -A -o json | jq -r '.items[] |select(.spec.enableWindowsDataplaneV2 == false)|.metadata.name'

Le résultat répertorie tous les clusters d'utilisateur configurés pour utiliser Docker Engine pour les nœuds Windows. Exemple :

user-cluster-1

Que le cluster d'utilisateur dispose de pools de nœuds Windows ou non, si le cluster enableWindowsDataplaneV2 est défini sur false, vous ne pouvez pas le mettre à niveau vers la version 1.13.

Mettre à jour les pools de nœuds Linux pour utiliser containerd

Pour chaque pool de nœuds du fichier de configuration du cluster d'utilisateur, définissez osImageType sur ubuntu_containerd ou cos.

Exemple :

nodePools
- name: "my-node-pool"
  osImageType: "ubuntu_containerd"

Mettez à jour le cluster d'utilisateur :

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Remplacez les éléments suivants :

  • ADMIN_CLUSTER_KUBECONFIG : chemin d'accès au fichier kubeconfig du cluster d'administrateur

  • USER_CLUSTER_CONFIG : chemin d'accès au fichier de configuration du cluster d'utilisateur

Mettre à jour les nœuds Windows pour utiliser containerd

Dans le fichier de configuration du cluster d'utilisateur, définissez enableWindowsDataplaneV2 sur true.

enableWindowsDataplaneV2: true

Mettez à jour le cluster d'utilisateur :

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

La commande précédente définit l'environnement d'exécution du conteneur sur containerd pour tous les nœuds Windows du cluster.