Modifier l'environnement d'exécution du conteneur

Anthos clusters on Bare Metal ajoute le champ de configuration containerRuntime facultatif au fichier de configuration du cluster. Utilisez ce champ pour configurer l'environnement d'exécution des conteneurs que les nœuds de cluster utilisent pour planifier les conteneurs destinés aux pods Kubernetes.

À partir d'Anthos clusters on Bare Metal 1.7, vous pouvez demander à kubelet d'appeler directement l'interface d'exécution du conteneur. Cette option vous permet de découpler kubelet de Docker en supprimant la nécessité du daemon Docker.

Cette modification est nécessaire en raison des objectifs de Kubernetes visant à rendre obsolète l'utilisation du daemon Docker et à faire de containerd l'environnement d'exécution par défaut. Kubernetes prévoit d'envoyer des avertissements à partir de sa version 1.20, puis de finaliser l'abandon avec la version 1.24. Ce changement est conforme à la modification planifiée faisant de containerd l'environnement d'exécution par défaut de GKE.

Dans Anthos clusters on Bare Metal, vous pouvez configurer kubelet pour utiliser Docker ou containerd via le nouveau champ containerRuntime.

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.3 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 Docker : /etc/docker/certs.d/
    • Pour containerd :
      • /etc/docker/certs.d/
      • /etc/containerd/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 :

  • docker
  • containerd

Si le champ est vide ou s'il n'est pas défini, Anthos clusters on Bare Metal utilise docker par défaut. Pour utiliser containerd, 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: containerd

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

Vous pouvez configurer Anthos clusters on Bare Metal pour qu'il utilise un environnement d'exécution de conteneur différent lorsque vous effectuez une mise à niveau à partir de l'une des versions suivantes :

  • 1.6.0
  • 1.6.1
  • 1.6.2

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.

Exigences

  • 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 containerd

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 :

  • docker
  • containerd

Pour utiliser containerd, 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: containerd

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

bmctl upgrade cluster

Modifications apportées au plan de contrôle après mise à niveau

Lors de la mise à niveau, Anthos clusters on Bare Metal effectue les tâches suivantes sur les nœuds du plan de contrôle pour assurer la compatibilité avec l'équilibreur de charge si l'environnement d'exécution a été défini sur containerd :

  • Suppression des services docker.*.service
  • Installation des services container.*.service
  • Redémarrage avec les services systemd haproxy et keepalived

Les clusters utilisant l'environnement d'exécution docker conservent leurs services systemd haproxy et keepalived existants après la mise à niveau.

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

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

bmctl update cluster

Réinitialiser vos clusters avec containerd comme environnement d'exécution

Si vous définissez l'environnement d'exécution du conteneur sur containerd, la commande suivante ne supprime ni les configurations, ni 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/

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

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

systemctl status containerd