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 decontainerd
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.conf
Este 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:
Cambia el campo containerRuntime de
docker
acontainerd
en la secciónspec.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
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.