Cambia el entorno de ejecución del contenedor

Los clústeres de Anthos en equipos físicos agregan el campo de configuración containerRuntime opcional al archivo de configuración del clúster. Usa este campo a fin de configurar el entorno de ejecución del contenedor que usan los nodos del clúster a fin de programar los contenedores para Pods de Kubernetes.

Puedes hacer que kubelet llame directamente a la interfaz de entorno de ejecución del contenedor. Esta opción te permite separar kubelet de Docker, ya que quita la necesidad del daemon de Docker.

Este cambio es necesario debido a los objetivos de Kubernetes para dar de baja el uso del daemon de Docker y hacer que containerd sea la opción predeterminada. Kubernetes planea enviar advertencias a partir de la versión 1.20 de Kubernetes y finalizar la baja en la versión 1.24.Este cambio se alinea con el cambio previsto a fin de containerd como predeterminado para GKE.

En los clústeres de Anthos en equipos físicos, puedes configurar kubelet para usar Docker o containerd mediante el nuevo campo containerRuntime.

Antes de comenzar

  • Identifica el entorno de ejecución de contenedores que deseas que usen tus clústeres. Solo puedes cambiar el valor del campo del entorno de ejecución del contenedor cuando actualizas o instalas un clúster.

  • Asegúrate de que tu implementación sea compatible con la versión 1.4.6 de containerd o con versiones posteriores. Los clústeres de Anthos en equipos físicos ejecutan esta versión en cualquier versión de containerd instalada con anterioridad.

  • Asegúrate de que los clústeres de Anthos en equipos físicos puedan instalar los siguientes archivos que se instalan para ambos entornos de ejecución:

    • Archivos binarios

      • /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
    • Archivos de configuración

      • /etc/crictl.yaml
      • /etc/systemd/system/containerd.service
      • /etc/containerd/config.toml
      • /etc/containerd/certs.d/
      • /etc/systemd/system/containerd.service.d/09-proxy.confEste archivo solo se instala si configuras un proxy HTTP.
  • Asegúrate de que los clústeres de Anthos en equipos físicos puedan instalar los siguientes certificados en tus nodos según el entorno de ejecución que elijas:

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

Configura el entorno de ejecución del contenedor para un clúster nuevo

Para configurar el entorno de ejecución del contenedor en un clúster nuevo, establece el campo containerRuntime en la sección nodeConfig de spec en tu archivo de configuración del clúster. Los clústeres de Anthos en equipos físicos admiten los siguientes valores:

  • docker
  • containerd

Si el campo está vacío o no se configura, los clústeres de Anthos en equipos físicos usan docker de forma predeterminada. Para usar containerd, la entrada en tu configuración debe ser similar al siguiente ejemplo:

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

Configurar el entorno de ejecución del contenedor cuando se actualiza un clúster

Puedes configurar clústeres de Anthos en equipos físicos para usar un entorno de ejecución de contenedores diferente cuando realices la actualización. Solo puedes cambiar el valor del campo del entorno de ejecución del contenedor cuando actualizas o instalas un clúster.

Requisitos

  • Actualizar clústeres de administrador antes de los clústeres de usuario
  • Configura el valor del campo containerRuntime en tu archivo de configuración antes de actualizar tus clústeres.

Cambia el entorno de ejecución a containerd

Para configurar el entorno de ejecución del contenedor durante una actualización, establece el campo containerRuntime en la sección nodeConfig, en spec, en el archivo de configuración del clúster. Los clústeres de Anthos en equipos físicos admiten los siguientes valores:

  • docker
  • containerd

Si quieres usar containerd, cambia tu archivo de configuración para que se vea como el siguiente ejemplo:

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

Para establecer el entorno de ejecución del contenedor de los nodos del clúster en containerd como parte de su actualización, ejecuta el siguiente comando a fin de actualizar tus clústeres:

bmctl upgrade cluster

Actualiza los clústeres con containerd configurado como entorno de ejecución

Si configuras el entorno de ejecución del contenedor en containerd, el siguiente comando actualiza los certificados de registro de imágenes en /etc/containerd/certs.d/.

bmctl update cluster

Restablece los clústeres con containerd configurado como entorno de ejecución

Si configuras el entorno de ejecución del contenedor en containerd, el siguiente comando no borra configuraciones, archivos binarios ni directorios:

bmctl reset cluster

Durante el restablecimiento, el servicio containerd continúa ejecutándose, pero los contenedores que Kubernetes programó se detienen y se quitan del entorno de ejecución de containerd.

Borra los archivos y directorios binarios siguientes para completar el restablecimiento:

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

Verifica el estado del entorno de ejecución de containerd

Para verificar el estado de containerd como parte de la verificación de estado de la máquina, ejecuta el siguiente comando:

systemctl status containerd