Passer votre environnement d'exécution de conteneur de Docker à containerd

Vos clusters utilisent un environnement d'exécution de conteneur pour créer et exécuter des pods Kubernetes. Avant la version 1.13 des clusters Anthos sur bare metal, votre environnement d'exécution de conteneur pouvait être Docker Engine ou containerd. Toutefois, à partir de la version 1.13 des clusters Anthos sur bare metal, votre environnement d'exécution de conteneur ne peut être que containerd.

Si vos clusters utilisent Docker Engine comme environnement d'exécution de conteneur, vous devez le remplacer par containerd. Cette page explique comment définir l'environnement d'exécution de conteneur sur containerd.

Vous spécifiez l'environnement d'exécution de conteneur en définissant la valeur du champ containerRuntime dans le fichier de configuration du cluster. Toutefois, il ne suffit pas de définir ou de modifier la valeur de ce champ. Vous devez ensuite créer un nouveau cluster ou mettre à niveau un cluster existant pour que la modification prenne effet. En d'autres termes, vous ne pouvez modifier l'environnement d'exécution de conteneur que lorsque vous créez un cluster ou mettez à niveau un cluster existant.

Fin de compatibilité de Kubernetes 1.24 avec Docker Engine

Le composant dockershim de Kubernetes permet aux nœuds de cluster d'utiliser l'environnement d'exécution de conteneur Docker Engine. Toutefois, Kubernetes 1.24 a supprimé le composant dockershim. Étant donné que les clusters Anthos sur bare metal version 1.13 s'exécuteront sur Kubernetes 1.24, les versions 1.13 et ultérieures ne peuvent plus utiliser Docker Engine en tant qu'environnement d'exécution de conteneur.

Lors de la mise à niveau ou de la création de clusters, notez les règles d'exécution de conteneur suivantes :

  • Vous devez utiliser containerd pour les clusters des versions 1.13 et ultérieures.
  • Vous ne pouvez pas créer de clusters de version 1.12 qui utilisent l'environnement d'exécution de conteneur Docker Engine.
  • Vous pouvez mettre à niveau un cluster 1.11 qui utilise Docker Engine vers un cluster 1.12 qui utilise Docker Engine. Toutefois, nous vous recommandons vivement de passer à containerd avant de procéder à la mise à niveau.

L'installation de Docker que vous utilisez en développement pour créer des images n'est pas liée à l'environnement d'exécution de conteneurs Docker Engine dans votre cluster Kubernetes. Vous pouvez toujours utiliser Docker pour créer des images et des conteneurs d'application. Ces conteneurs continueront de fonctionner dans votre cluster.

Vous devez continuer à installer Docker sur votre poste de travail administrateur, car la commande bmctl nécessite Docker pour effectuer ses opérations, telles que la création de cluster. Cette utilisation de Docker n'est pas affectée par l'abandon de dockershim.

Pour obtenir des instructions détaillées sur la manière de passer l'environnement d'exécution de conteneur de docker à containerd, consultez les sections suivantes.

Avant de commencer

  • N'oubliez pas que lors de la mise à niveau d'un cluster, vous devez mettre à niveau le cluster d'administrateur avant de mettre à niveau les clusters d'utilisateur.

  • Assurez-vous que votre déploiement est compatible avec la version 1.4.6 de containerd ou une version ultérieure. Anthos clusters on Bare Metal installe cette version par-dessus toutes celles précédemment installées de containerd.

  • Assurez-vous que les clusters Anthos sur bare metal peuvent installer les fichiers suivants :

    • Fichiers binaires

      • /usr/bin/containerd
      • /usr/bin/containerd-shim
      • /usr/bin/containerd-shim-runc-v1
      • /usr/bin/containerd-shim-runc-v2
      • /usr/bin/crictl
      • /usr/bin/ctr
      • /usr/local/sbin/runc
    • Fichiers de configuration

      • /etc/crictl.yaml
      • /etc/systemd/system/containerd.service
      • /etc/containerd/config.toml
      • /etc/containerd/certs.d/
      • /etc/systemd/system/containerd.service.d/09-proxy.conf Ce fichier n'est installé que si vous configurez un proxy HTTP.
  • Assurez-vous que les clusters Anthos sur bare metal peuvent installer le certificat suivant sur vos nœuds : /etc/containerd/certs.d/

Définir containerd comme environnement d'exécution de conteneur pour un nouveau cluster

Si la section spec.nodeConfig du fichier de configuration de votre cluster est vide ou non définie, l'environnement d'exécution de conteneur du cluster est automatiquement défini sur containerd lors de la création d'un cluster.

Toutefois, si vous souhaitez définir explicitement containerd en tant qu'environnement d'exécution de conteneur pour un nouveau cluster, définissez le champ containerRuntime sur containerd dans la section spec.nodeConfig du fichier de configuration du cluster. Une fois cette opération effectuée, la configuration de votre cluster doit se présenter comme suit :

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
spec:
  nodeConfig:
    containerRuntime: containerd

Lorsque vous utilisez ce fichier de configuration de cluster pour créer un cluster, l'environnement d'exécution de conteneur est containerd.

Passer l'environnement d'exécution de docker à containerd lors de la mise à niveau d'un cluster

Pour passer l'environnement d'exécution de conteneur de docker à containerd lors de la mise à niveau d'un cluster, procédez comme suit :

  1. Changez la valeur docker du champ containerRuntime en containerd dans la section spec.nodeConfig du fichier de configuration du cluster. Une fois cette opération effectuée, la configuration de votre cluster doit se présenter comme suit :

    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: cluster1
      namespace: cluster-cluster1
    spec:
      nodeConfig:
        containerRuntime: containerd
    
  2. Exécutez la commande suivante pour mettre à niveau votre cluster :

    bmctl upgrade cluster -c CLUSTER_NAME --kubeconfig=ADMIN_KUBECONFIG
    

    Remplacez les éléments suivants :

    • CLUSTER_NAME par le nom du cluster que vous souhaitez mettre à jour.
    • ADMIN_KUBECONFIG par le chemin d'accès au fichier kubeconfig du cluster d'administrateur.

Vérifier l'état de l'environnement d'exécution de conteneur

Pour vérifier l'état de l'environnement d'exécution de conteneur, exécutez la commande suivante :

systemctl status containerd

Passer l'environnement d'exécution de containerd à docker lors de la mise à niveau d'un cluster

Vous pouvez utiliser l'un ou l'autre des environnements d'exécution de conteneur lors de la mise à niveau de clusters Anthos sur bare metal de la version 1.11 vers la version 1.12. Cependant, nous vous recommandons vivement d'utiliser containerd, car l'environnement d'exécution de conteneur Docker Engine n'est pas compatible avec les versions 1.13.0 et ultérieures.