Cambia el entorno de ejecución del contenedor

En esta página, se explica cómo especificar qué entorno de ejecución de contenedor usa tu clúster para ejecutar Pods de Kubernetes. Para especificar el entorno de ejecución del contenedor, establece el valor del campo containerRuntime en el archivo de configuración del clúster.

Puedes cambiar el valor del campo containerRuntime solo cuando actualizas o instalas un clúster. Este campo es opcional y su valor predeterminado es containerd si lo dejas sin definir.

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 la versión 1.13 de los clústeres de Anthos en equipos físicos se ejecutarán en Kubernetes 1.24, los clústeres de la versión 1.13 y posteriores ya no pueden usar Docker Engine.

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 actualizar un clúster de la versión 1.12 que use Docker a la versión 1.13.
  • 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 de la versión 1.11 que use Docker a un clúster de la versión 1.12 que use Docker. Sin embargo, te recomendamos que cambies a containerd antes de actualizar.

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.

Docker debe estar instalado en la estación de trabajo de administrador. El comando bmctl requiere Docker para 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 especificar el entorno de ejecución del contenedor que se usa en tu clúster, consulta las siguientes secciones.

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

  • containerd
  • docker

Si el campo está vacío o no se configura, los clústeres de Anthos en equipos físicos usan containerd de forma predeterminada. Para usar Docker, 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: docker

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 Docker

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:

  • containerd
  • docker

Si deseas usar Docker, 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: docker

Para establecer el entorno de ejecución del contenedor de los nodos del clúster en docker 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 Docker configurado como entorno de ejecución

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

bmctl update cluster

Restablece los clústeres que usan containerd como entorno de ejecución

Si usas el entorno de ejecución del contenedor predeterminado, el siguiente comando no borra la configuración, los archivos binarios ni los 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/

Si usas Docker como tu entorno de ejecución, no se realiza ninguna limpieza durante el restablecimiento.

Verifica el estado del entorno de ejecución

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

systemctl status RUNTIME

Reemplaza RUNTIME por el entorno de ejecución elegido: containerd o docker.