Cambia el entorno de ejecución del contenedor de Docker a containerd

Los clústeres usan un entorno de ejecución del contenedor para crear y ejecutar Pods de Kubernetes. Antes de la versión 1.13 de los clústeres de Anthos en equipos físicos, el entorno de ejecución del contenedor podría ser Docker Engine o containerd. Sin embargo, el entorno de ejecución del contenedor solo puede ser containerd a partir de la versión 1.13 de los clústeres de Anthos en equipos físicos.

Si tus clústeres usan Docker Engine como entorno de ejecución del contenedor, debes cambiar ese entorno de ejecución a containerd. En esta página, se explica cómo configurar el entorno de ejecución del contenedor en containerd.

Para especificar el entorno de ejecución del contenedor, configura el valor del campo containerRuntime en el archivo de configuración del clúster. Sin embargo, solo establecer o cambiar el valor de este campo no es suficiente: debes crear un clúster nuevo o actualizar uno existente para que el cambio se efectúe. En otras palabras, solo puedes cambiar el entorno de ejecución del contenedor cuando creas un clúster nuevo o cuando actualizas un clúster existente.

Kubernetes 1.24 deja de ser compatible con Docker Engine

El componente dockershim en Kubernetes permite que los nodos del clúster usen el entorno de ejecución del contenedor de Docker Engine. Sin embargo, Kubernetes 1.24 quitó el componente dockershim. Debido a que los clústeres de Anthos en la versión 1.13 de equipos físicos se ejecutarán en Kubernetes 1.24, la versión 1.13 y las versiones posteriores ya no pueden usar Docker Engine como entorno de ejecución del contenedor.

Cuando actualices o crees clústeres, ten en cuenta las siguientes reglas del entorno de ejecución de contenedores:

  • Debes usar containerd para los clústeres de versión 1.13 y posteriores.
  • No puedes crear clústeres de la versión 1.12 que usen el entorno de ejecución del contenedor de Docker Engine.
  • Puedes actualizar un clúster 1.11 que use Docker Engine a un clúster 1.12 que use Docker Engine. Sin embargo, te recomendamos que cambies a containerd antes de la actualización.

La instalación de Docker que usas en el desarrollo para crear imágenes no está relacionada con el entorno de ejecución del contenedor de Docker Engine dentro de tu clúster de Kubernetes. Aún puedes usar Docker para crear imágenes y compilar contenedores de aplicaciones. Esos contenedores aún funcionarán dentro de tu clúster.

Debes seguir instalando Docker en tu estación de trabajo de administrador porque el comando bmctl requiere Docker para las operaciones, como la creación de clústeres. El uso de Docker tampoco se ve afectado por la baja de dockershim.

Para obtener instrucciones detalladas sobre cómo cambiar el entorno de ejecución del contenedor de docker a containerd, consulta las siguientes secciones.

Antes de comenzar

  • Ten en cuenta que, cuando actualizas un clúster, debes actualizar el clúster de administrador antes de actualizar los clústeres de usuario.

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

    • 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 el siguiente certificado en tus nodos: /etc/containerd/certs.d/

Establece containerd como el entorno de ejecución del contenedor para un clúster nuevo

Si la sección spec.nodeConfig del archivo de configuración del clúster está vacía o no está configurada, el entorno de ejecución del contenedor del clúster se establece de forma automática en containerd cuando se crea un clúster nuevo.

Sin embargo, si deseas establecer de forma explícita containerd como el entorno de ejecución del contenedor para un clúster nuevo, configura el campo containerRuntime como containerd en la sección spec.nodeConfig del archivo de configuración del clúster. Después de hacerlo, la configuración del clúster debería verse de la siguiente manera:

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

Cuando usas este archivo de configuración de clúster para crear un clúster nuevo, el entorno de ejecución del contenedor será containerd.

Cambiar el entorno de ejecución del contenedor de docker a containerd cuando se actualiza un clúster

Para cambiar el entorno de ejecución del contenedor de docker a containerd cuando actualizas un clúster, completa los siguientes pasos:

  1. Cambia el campo containerRuntime de docker a containerd en la sección spec.nodeConfig del archivo de configuración del clúster. Después de hacer esto, la configuración del clúster debería verse de la siguiente manera:

    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: cluster1
      namespace: cluster-cluster1
    spec:
      nodeConfig:
        containerRuntime: containerd
    
  2. Ejecuta el siguiente comando para actualizar el clúster:

    bmctl upgrade cluster -c CLUSTER_NAME --kubeconfig=ADMIN_KUBECONFIG
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME por el nombre del clúster que deseas actualizar
    • ADMIN_KUBECONFIG por la ruta del archivo kubeconfig del clúster de administrador

Verifica el estado del entorno de ejecución del contenedor

Para verificar el estado del entorno de ejecución del contenedor, ejecuta el siguiente comando:

systemctl status containerd

Cambiar el entorno de ejecución del contenedor de containerd a docker cuando se actualiza un clúster

Puedes usar cualquiera de los entornos de ejecución de contenedores cuando actualizas de clústeres de Anthos en la versión 1.11 a 1.12 de equipos físicos. Sin embargo, te recomendamos que uses containerd porque el entorno de ejecución del contenedor Docker Engine no es compatible con la versión 1.13.0 y posteriores.