Usa containerd para el entorno de ejecución del contenedor

El entorno de ejecución del contenedor es un software que se encarga de administrar los contenedores y las imágenes de contenedor en un nodo de Kubernetes. containerd es un entorno de ejecución de contenedores ascendido por Cloud Native Cloud Foundation. Es compatible con Kubernetes de forma nativa y se considera más seguro y eficiente en cuanto a recursos 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, dejó de estar disponible en Kubernetes 1.20 y se quitó en Kubernetes 1.24.

En el futuro, deberías usar containerd en tus clústeres.

Compatibilidad con containerd en un clúster de administrador

Google Distributed Cloud usa containerd para todos los nodos del clúster 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 del clúster de usuario:

Tipo de imagen de SOEntorno de ejecución del contenedor
ubuntu_containerdcontainerd
coscontainerd
windowscontainerd

Restricciones y recomendaciones

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

  • No puedes actualizar un clúster que usa Docker Engine a la versión 1.13. Debes actualizar tu clúster para usar el entorno 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 nuevos que usen el tipo de imagen de SO ubuntu. Es decir, ya no puedes crear clústeres nuevos que usen el entorno de ejecución de contenedores de Docker Engine.

Determina qué grupos de nodos usan Docker Engine

Ubuntu

Enumera los grupos 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'

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

Resultado de ejemplo:

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

Windows

Todos los grupos de nodos de Windows en un clúster de usuario usan el mismo entorno de ejecución de contenedores. El entorno de ejecución para 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 usuarios tienen enableWindowsDataplaneV2 configurado como false. Esto te indica qué clústeres de usuarios están configurados a fin de usar Docker Engine para los nodos de Windows.

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

En el resultado, se enumeran todos los clústeres de usuario configurados a fin de usar Docker Engine para los nodos de Windows. Por ejemplo:

user-cluster-1

Sin importar si un clúster de usuario tiene grupos de nodos de Windows, si el clúster tiene enableWindowsDataplaneV2 establecido como false, no podrás actualizarlo a la versión 1.13.

Actualiza los grupos de nodos de Linux para usar containerd

Para cada grupo de nodos del archivo de configuración del clúster de usuario, configura osImageType ubuntu_containerd o cos.

Ejemplo:

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

Actualiza el clúster de usuario:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Reemplaza lo siguiente:

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

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

Actualiza los nodos de Windows para usar containerd

En el archivo de configuración del clúster de usuario, configura enableWindowsDataplaneV2 como true.

enableWindowsDataplaneV2: true

Actualiza el clúster de usuario:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Mediante el comando anterior, se establece el entorno de ejecución de contenedores como containerd para todos los nodos de Windows en el clúster.