Modifier l'environnement d'exécution du conteneur

Cette page explique comment spécifier l'environnement d'exécution de conteneur utilisé par votre cluster pour exécuter les pods Kubernetes. 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.

Vous ne pouvez modifier la valeur du champ containerRuntime que lors de la mise à niveau ou de l'installation d'un cluster. Ce champ est facultatif et est défini par défaut sur containerd si vous le laissez non défini.

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 solution 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.

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 mettre à niveau un cluster 1.12 qui utilise Docker vers la version 1.13.
  • 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 vers un cluster 1.12 qui utilise Docker. 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.

Docker doit être installé sur votre poste de travail administrateur. La commande bmctl nécessite Docker pour certaines opérations comme 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 spécification de l'environnement d'exécution du conteneur utilisé dans votre cluster, consultez les sections suivantes.

Avant de commencer

  • Identifiez l'environnement d'exécution du conteneur que vos clusters doivent utiliser. Vous ne pouvez modifier la valeur du champ d'environnement d'exécution du conteneur que lors de la mise à niveau ou de l'installation d'un cluster.

  • 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 qu'Anthos clusters on Bare Metal peut installer les fichiers suivants, qui sont installés pour les deux environnements d'exécution :

    • 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 qu'Anthos clusters on Bare Metal peut installer les certificats suivants sur vos nœuds en fonction de l'environnement d'exécution choisi :

    • Pour containerd :
      • /etc/docker/certs.d/
      • /etc/containerd/certs.d/
    • Pour Docker : /etc/docker/certs.d/

Configurer l'environnement d'exécution du conteneur pour un nouveau cluster

Pour définir votre environnement d'exécution de conteneur pour un nouveau cluster, définissez le champ containerRuntime dans la section nodeConfig de la rubrique spec de votre fichier de configuration de cluster. Anthos clusters on Bare Metal accepte les valeurs suivantes :

  • containerd
  • docker

Si le champ est vide ou s'il n'est pas défini, Anthos clusters on Bare Metal utilise containerd par défaut. Pour utiliser Docker, le contenu de votre configuration doit ressembler à l'exemple suivant :

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

Configurer l'environnement d'exécution de conteneur lors de la mise à niveau d'un cluster

Vous pouvez configurer des clusters Anthos sur Bare Metal pour qu'ils utilisent un environnement d'exécution de conteneur différent lors de la mise à niveau. Vous ne pouvez modifier la valeur du champ d'environnement d'exécution du conteneur que lors de la mise à niveau ou de l'installation d'un cluster.

Conditions requises

  • Mettez à niveau les clusters d'administrateur avant des clusters d'utilisateur.
  • Définissez la valeur du champ containerRuntime dans votre fichier de configuration avant de mettre à niveau vos clusters.

Remplacer l'environnement d'exécution par Docker

Pour définir votre environnement d'exécution de conteneur lors d'une mise à niveau, définissez le champ containerRuntime dans la section nodeConfig de la rubrique spec de votre fichier de configuration de cluster. Anthos clusters on Bare Metal accepte les valeurs suivantes :

  • containerd
  • docker

Pour utiliser Docker, modifiez votre fichier de configuration pour qu'il ressemble à l'exemple suivant :

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

Pour définir l'environnement d'exécution du conteneur des nœuds de cluster sur docker lors de leur mise à niveau, exécutez la commande suivante pour mettre à jour vos clusters :

bmctl upgrade cluster

Mettre à jour des clusters où Docker est défini comme environnement d'exécution

Si vous définissez l'environnement d'exécution de conteneur sur docker, la commande suivante met à jour les certificats du registre d'images dans /etc/containerd/certs.d/.

bmctl update cluster

Réinitialiser les clusters qui utilisent containerd en tant qu'environnement d'exécution

Si vous utilisez l'environnement d'exécution de conteneurs par défaut, la commande suivante ne supprime pas les configurations, les fichiers binaires ni les répertoires :

bmctl reset cluster

Lors de la réinitialisation, le service containerd continue de s'exécuter, mais les conteneurs programmés par Kubernetes sont arrêtés et supprimés de l'environnement d'exécution containerd.

Supprimez les fichiers binaires et les répertoires suivants pour terminer la réinitialisation :

  • /etc/crictl.yaml
  • /etc/systemd/system/containerd.service
  • /etc/systemd/system/containerd.service.d/
  • /etc/containerd/config.toml
  • /etc/containerd/certs.d/

Si vous utilisez Docker comme environnement d'exécution, aucun nettoyage n'est effectué pendant la réinitialisation.

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

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

systemctl status RUNTIME

Remplacez RUNTIME par l'environnement d'exécution choisi : containerd ou docker.