Los clústeres de Anthos en equipos físicos agregan el campo de configuración containerRuntime
opcional al archivo de configuración del clúster. Usa este campo a fin de configurar el entorno de ejecución del contenedor que usan los nodos del clúster a fin de programar los contenedores para Pods de Kubernetes.
A partir de los clústeres de Anthos en equipos físicos 1.7, puedes hacer que kubelet
llame a la Interfaz de entorno de ejecución del contenedor directamente. Esta opción te permite separar kubelet
de Docker, ya que quita la necesidad del daemon de Docker.
Este cambio es necesario debido a los objetivos de Kubernetes para dar de baja el uso del daemon de Docker y hacer que containerd sea la opción predeterminada. Kubernetes planea enviar advertencias a partir de la versión 1.20 de Kubernetes y finalizar la baja en la versión 1.24.Este cambio se alinea con el cambio previsto a fin de containerd como predeterminado para GKE.
En los clústeres de Anthos en equipos físicos, puedes configurar kubelet
para usar Docker o containerd
mediante el nuevo campo containerRuntime
.
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.3 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 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.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 los siguientes certificados en tus nodos según el entorno de ejecución que elijas:
- Para Docker:
/etc/docker/certs.d/
- Para
containerd
:/etc/docker/certs.d/
/etc/containerd/certs.d/
- Para Docker:
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:
docker
containerd
Si el campo está vacío o no se configura, los clústeres de Anthos en equipos físicos usan docker
de forma predeterminada.
Para usar containerd
, 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: containerd
Configurar el entorno de ejecución del contenedor cuando se actualiza un clúster
Puedes configurar los clústeres de Anthos en equipos físicos para usar un entorno de ejecución de contenedores diferente cuando actualices una de las siguientes versiones:
- 1.6.0
- 1.6.1
- 1.6.2
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 containerd
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:
docker
containerd
Si quieres usar containerd
, 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: containerd
Para establecer el entorno de ejecución del contenedor de los nodos del clúster en containerd
como parte de su actualización, ejecuta el siguiente comando a fin de actualizar tus clústeres:
bmctl upgrade cluster
Cambios en el plano de control después de la actualización
Durante la actualización, los clústeres de Anthos en equipos físicos realizan las siguientes tareas en los nodos del plano de control para admitir el balanceador de cargas si el entorno de ejecución se configuró como containerd
:
- Borra los servicios de
docker.*.service
- Instala los servicios de
container.*.service
- Reinicia los servicios del sistema
haproxy
ykeepalived
Los clústeres que usan el entorno de ejecución docker
mantienen sus servicios basados en haproxy
y keepalived
existentes después de la actualización.
Actualiza los clústeres con containerd configurado como entorno de ejecución
Si configuras el entorno de ejecución del contenedor en containerd
, el siguiente comando actualiza los certificados de registro de imágenes en /etc/containerd/certs.d/
.
bmctl update cluster
Restablece los clústeres con containerd configurado como entorno de ejecución
Si configuras el entorno de ejecución del contenedor en containerd
, el siguiente comando no borra configuraciones, archivos binarios ni 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/
Verifica el estado del entorno de ejecución de containerd
Para verificar el estado de containerd
como parte de la verificación de estado de la máquina, ejecuta el siguiente comando:
systemctl status containerd