Usar containerd en el entorno de ejecución de contenedores

El entorno de ejecución de contenedores es un software que se encarga de gestionar los contenedores y las imágenes de contenedor en un nodo de Kubernetes. containerd es un entorno de ejecución de contenedores graduado de la CNCF (Cloud Native Cloud Foundation). Es compatible con Kubernetes de forma nativa y se considera más eficiente y seguro que Docker Engine para Kubernetes. Hasta Kubernetes 1.20, Docker Engine era el entorno de ejecución de contenedores principal. Sin embargo, Dockershim, el código de integración de Docker Engine en Kubernetes, se ha retirado en Kubernetes 1.20 y se ha eliminado en Kubernetes 1.24.

A partir de ahora, deberías usar containerd en tus clústeres.

Compatibilidad con containerd en un clúster de administrador

Google Distributed Cloud usa containerd en todos los nodos de clústeres de administrador.

Compatibilidad con containerd en un clúster de usuario

Google Distributed Cloud admite los siguientes tipos de imágenes de SO para los nodos de clústeres de usuario:

Tipo de imagen de SOEntorno de ejecución de contenedores
ubuntu_containerdcontainerd
coscontainerd
windowscontainerd

Restricciones y recomendaciones

  • A partir de la versión 1.13.0, Google Distributed Cloud ya no admite el tipo de imagen de SO ubuntu. Todos los nodos del clúster deben usar el tiempo de ejecución de containerd.

  • No puedes actualizar a la versión 1.13 un clúster que use Docker Engine. Debes actualizar tu clúster para usar el tiempo de ejecución de containerd antes de actualizar a la versión 1.13.

  • A partir de la versión 1.12.0, ya no puedes crear clústeres que usen el tipo de imagen de SO ubuntu. Es decir, ya no puedes crear clústeres que usen el tiempo de ejecución de contenedores de Docker Engine.

Determinar qué grupos de nodos usan Docker Engine

Ubuntu

Lista los pools de nodos de Ubuntu que usan Docker Engine:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get onpremnodepools \
    -o json -A | jq -r '.items[] |select(.spec.osImageType == "ubuntu")|.metadata.name'

Sustituye USER_CLUSTER_KUBECONFIG por la ruta del archivo kubeconfig del clúster de usuario.

Ejemplo:

ubuntu-node-pool-1
ubuntu-node-pool-3

Windows

Todos los grupos de nodos de Windows de un clúster de usuario usan el mismo tiempo de ejecución de contenedor. El tiempo de ejecución de los nodos de Windows se determina mediante el valor de enableWindowsDataplaneV2, que es un campo del archivo de configuración del clúster de usuario.

Si enableWindowsDataplaneV2 es true, todos los nodos de Windows del clúster de usuario usan containerd. Si es false, todos los nodos de Windows usan Docker Engine.

Ejecuta el siguiente comando para determinar qué clústeres de usuario tienen el valor enableWindowsDataplaneV2 definido en false. Esto indica qué clústeres de usuario están configurados para usar Docker Engine en nodos Windows.

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get onpremuserclusters \
    -A -o json | jq -r '.items[] |select(.spec.enableWindowsDataplaneV2 == false)|.metadata.name'

En el resultado se muestran todos los clústeres de usuarios configurados para usar Docker Engine en nodos de Windows. Por ejemplo:

user-cluster-1

Independientemente de si un clúster de usuarios tiene grupos de nodos de Windows, si el clúster tiene el valor enableWindowsDataplaneV2 definido en false, no podrás actualizarlo a la versión 1.13.

Actualizar grupos de nodos de Linux para usar containerd

En cada grupo de nodos del archivo de configuración del clúster de usuarios, define osImageType ubuntu_containerd o cos.

Ejemplo:

nodePools
- name: "my-node-pool"
  osImageType: "ubuntu_containerd"

Actualiza el clúster de usuarios:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Haz los cambios siguientes:

  • ADMIN_CLUSTER_KUBECONFIG: la ruta del archivo kubeconfig del clúster de administrador

  • USER_CLUSTER_CONFIG: la ruta del archivo de configuración del clúster de usuarios

Actualizar nodos de Windows para usar containerd

En el archivo de configuración del clúster de usuarios, asigna el valor true a enableWindowsDataplaneV2.

enableWindowsDataplaneV2: true

Actualiza el clúster de usuarios:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

El comando anterior define el tiempo de ejecución del contenedor como containerd para todos los nodos de Windows del clúster.