En esta página, se describen las imágenes de nodo disponibles para los nodos de Google Kubernetes Engine (GKE).
Los nodos de GKE Autopilot siempre usan Container-Optimized OS con containerd (cos_containerd
), que es el sistema operativo de nodo recomendado. Si usas GKE Standard, puedes elegir la imagen de sistema operativo que se ejecuta en cada nodo durante la creación del clúster o el grupo de nodos. También puedes actualizar un clúster de Standard existente para usar una imagen de nodo diferente. Si deseas obtener instrucciones para configurar la imagen de nodo, consulta Especifica una imagen de nodo.
Imágenes de nodos disponibles
GKE ofrece las siguientes opciones de imágenes de nodo por SO para tu clúster:
SO | Imágenes de nodo |
---|---|
Container-Optimized OS |
|
Ubuntu |
|
Windows Server |
|
Container-Optimized OS
Las imágenes de nodo de Container-Optimized OS de Google se basan en una versión reciente del kernel de Linux y están optimizadas para mejorar la seguridad del nodo. Las imágenes de Container-Optimized OS cuentan con el respaldo de un equipo de Google que puede aplicar parches con rapidez para mejorar la seguridad y realizar iteraciones en las funciones. Las imágenes de Container-Optimized OS ofrecen un mejor nivel de asistencia, seguridad y estabilidad que las demás imágenes.
Para obtener información sobre el proyecto de imagen y la familia, consulta Proyectos de origen de imagen de nodo.
Variantes de Container-Optimized OS
Se ofrecen dos entornos de ejecución de contenedores con Container-Optimized OS. Las imágenes son iguales, excepto por la elección del entorno de ejecución del contenedor.
- Container-Optimized OS con Containerd (
cos_containerd
): La imagencos_containerd
usa Containerd como el entorno de ejecución del contenedor integrado directamente en Kubernetes. Los clústeres de GKE Autopilot siempre usan esta imagen. Para obtener más información, consulta Imágenes de nodo. - Container-Optimized OS con Docker (
cos
): La imagencos
usa el entorno de ejecución del contenedor de Docker.
Ubuntu
Las imágenes del nodo de Ubuntu se validaron con los requisitos de la imagen del nodo de GKE. Debes usar las imágenes del nodo de Ubuntu si tus nodos requieren compatibilidad con paquetes de XFS, CephFS o Debian.
A fin de obtener información sobre el proyecto y la familia de la imagen, consulta Asistencia para las funciones por sistema operativo.
Variantes de Ubuntu
Se ofrecen dos entornos de ejecución de contenedores con Ubuntu. Las imágenes son iguales, excepto por la elección del entorno de ejecución del contenedor.
Ubuntu con Containerd (
ubuntu_containerd
): La imagenubuntu_containerd
usa Containerd como el entorno de ejecución del contenedor. Para obtener más información, consulta Imágenes de nodo de Containerd.Ubuntu con Docker (
ubuntu
): La imagenubuntu
usa Docker como el entorno de ejecución del contenedor.
Windows Server
Cuando creas un clúster con grupos de nodos de Windows Server, puedes usar una imagen de nodo del canal semianual de Windows Server (SAC) o del canal de servicio a largo plazo de Windows Server (LTSC). Todas las imágenes de nodo de Windows son imágenes de Windows Server Datacenter Core. Un solo clúster puede tener varios grupos de nodos de Windows Server mediante diferentes versiones de Windows Server, pero cada grupo de nodos individual puede usar solo una versión de Windows Server. Para obtener más información, consulta Elige tu imagen de nodo de Windows.
Se ofrecen dos entornos de ejecución de contenedores con imágenes de nodo de LTSC y SAC de Windows Server: Docker y containerd. Las imágenes son iguales, excepto por la elección del entorno de ejecución del contenedor.
Imágenes de entorno de ejecución de Containerd (disponibles en la versión 1.21 de GKE y versiones posteriores):
Windows Server LTSC con containerd (
windows_ltsc_containerd
): La imagenwindows_ltsc_containerd
usa containerd como el entorno de ejecución del contenedor. En la actualidad, este tipo de imagen se asigna a dos imágenes de nodo: Windows Server 2022 y Windows Server 2019. Puedes crear grupos de nodos de LTSC2022 de Windows a través del comando de la CLI con la marcawindows-os-version
.Para obtener más información sobre la creación de grupos de nodos de Windows Server 2022, consulta Crea grupos de nodos de Windows.
Para obtener más información sobre las imágenes de nodo de containerd, consulta Imágenes de nodo de containerd.
Windows Server SAC con containerd (
windows_sac_containerd
): La imagenwindows_sac_containerd
usa containerd como el entorno de ejecución del contenedor.Para obtener más información, consulta Imágenes de nodo.
Imágenes del entorno de ejecución de Docker (disponibles en la versión 1.16 de GKE y versiones posteriores):
- Windows Server LTSC con Docker (
windows_ltsc
): La imagenwindows_ltsc
usa Docker como el entorno de ejecución del contenedor. - Windows Server SAC con Docker (
windows_sac
): La imagenwindows_sac
usa Docker como el entorno de ejecución del contenedor.
- Windows Server LTSC con Docker (
A fin de obtener información sobre el proyecto y la familia de la imagen, consulta Asistencia para las funciones por sistema operativo.
Comparación de imágenes de nodo de Linux
En las siguientes secciones, se comparan los aspectos operativos de las imágenes de nodo de Ubuntu y Container-Optimized OS, incluido lo siguiente:
- Administración del paquete de software
- Inicialización del sistema
- Recopilación de registros
- Diseño del sistema de archivos
- Compatibilidad con controladores de almacenamiento
Administrador del paquete de software
Las imágenes de nodo cos
y cos_containerd
usan un sistema de archivos raíz mínimo con compatibilidad integrada para el entorno de ejecución de contenedor de Docker (containerd), que también sirve como administrador de paquetes de software para instalar software en el host. La imagen de Ubuntu usa el administrador de paquetes de APT.
Administra software en Container-Optimized OS
La imagen de Container-Optimized OS no proporciona software de administración de paquetes, como apt-get
. No puedes instalar software arbitrario en los nodos con mecanismos convencionales. En su lugar, crea una imagen de contenedor que contenga el software que necesitas.
En clústeres de Standard solo para fines de depuración, Container-Optimized OS incluye la caja de herramientas de CoreOS para instalar y ejecutar herramientas de depuración comunes, como ping
, psmisc
o pstree
.
Para obtener más información sobre cómo depurar nodos de Container-Optimized OS, consulta las guías prácticas de Container-Optimized OS.
Administra software en Ubuntu
La imagen de Ubuntu usa el administrador de paquetes de APT. Puedes usar el comando apt-get
para instalar paquetes en estas imágenes. Por ejemplo, úsalo para instalar paquetes de ceph
:
sudo apt-get update
sudo apt-get install ceph
Inicialización del sistema
Tanto las imágenes de nodo de Ubuntu como de Container-Optimized OS usan systemd
para administrar los recursos y servicios del sistema durante el proceso de inicialización del sistema.
Ambas imágenes de nodo usan archivos de servicio systemd para definir services
en el nodo y systemd.targets
a fin de agrupar destinos de inicio mediante dependencias.
Recopilación de registros
Las imágenes de nodo de Ubuntu y Container-Optimized OS usan systemd-journald
para recopilar registros de todo el sistema.
Visualiza registros en Container-Optimized OS y Ubuntu
Para ver registros en un nodo con la imagen de nodo de Ubuntu o Container-Optimized OS, debes usar el comando journalctl
. Por ejemplo, para ver registros del daemon de containerd:
sudo journalctl -u containerd
Para ver registros de kubelet, ejecuta el siguiente comando:
sudo journalctl -u kubelet
Diseño del sistema de archivos
La imagen del nodo de Ubuntu usa el diseño estándar del sistema de archivos de Linux.
El diseño del sistema de archivos de la imagen del nodo de Container-Optimized OS está optimizado para mejorar la seguridad del nodo. El espacio del disco de arranque se divide en tres tipos de particiones:
- Partición raíz, que es de solo lectura
- Particiones con estado, en las que se puede escribir y tienen estado
- Particiones sin estado, en las que se puede escribir, pero el contenido se pierde cuando el sistema se reinicia
Cuando uses Container-Optimized OS, ten en cuenta las particiones si ejecutas servicios que necesiten un diseño especial del sistema de archivos aparte de los contenedores.
Trabaja con el sistema de archivos de Container-Optimized OS
A continuación, se muestra una lista de las rutas del sistema de archivos de las imágenes de nodo de Container-Optimized OS, junto con sus propiedades y uso recomendado:
Ruta | Propiedades | Propósito |
---|---|---|
/ |
|
El sistema de archivos raíz se activa como solo lectura a fin de mantener su integridad. El kernel verifica la integridad del sistema de archivos raíz durante el arranque y, en caso de encontrar errores, no inicia el sistema. |
/home /var |
|
El objetivo de estas rutas es almacenar los datos que se mantienen durante toda la vida del disco de arranque. Se activan desde /mnt/stateful_partition . |
/var/lib/google /var/lib/docker /var/lib/toolbox |
|
Estas rutas son directorios de trabajo que funcionan para los paquetes de Compute Engine (por ejemplo, el servicio de administrador de cuentas), Docker y Toolbox, respectivamente. |
/var/lib/cloud |
|
Esta ruta es el directorio de trabajo del paquete cloud-init . |
/etc |
|
Por lo general, conserva tu configuración (por ejemplo, los servicios systemd definidos a través de cloud-init ). Es una buena idea capturar el estado deseado de tus instancias en cloud-init , ya que cloud-init se aplica cuando una instancia acaba de crearse y cuando se reinicia. |
/tmp |
|
Por lo general, se usa como espacio temporal y no se debe usar para almacenar datos persistentes. |
/mnt/disks |
|
Puedes activar discos persistentes en los directorios de /mnt/disks . |
Compatibilidad con controladores de almacenamiento
Todas las imágenes de nodo son distintas en cuanto a los tipos de complementos de almacenamiento que admiten. Se aplican las siguientes condiciones cuando se describe la compatibilidad de la imagen de un nodo para un controlador de almacenamiento en particular:
- Sí: Completamente compatible y probado: este complemento de almacenamiento está completamente probado y es compatible con la imagen de nodo especificada.
- Sí: Pruebas limitadas: este complemento de almacenamiento funciona con la imagen de nodo especificada, pero se probó de forma limitada; es posible que notes un comportamiento no esperado. En Container-Optimized OS, en algún momento se completarán las pruebas de los complementos y serán totalmente compatibles.
- No compatible: este complemento de almacenamiento no se probó ni se usó con la imagen de nodo especificada y GKE no puede garantizar su funcionalidad. No hay planes para probar este complemento de almacenamiento.
- No: este complemento de almacenamiento no funciona con la imagen de nodo especificada debido a una limitación inherente en el SO o Google Cloud.
La imagen del nodo de GKE admite algunos complementos comunes de almacenamiento.
Tipo de volumen | ¿Funciona en Container-Optimized OS (cos )? |
¿Funciona en Ubuntu? |
---|---|---|
Compute Engine Persistent Disk (EXT4 o XFS) |
Sí: Compatible y probado por completo (XFS solo es compatible con cos-85 y versiones posteriores). Consulta las notas de la versión de GKE. | Sí: Compatible y probado por completo |
NFSv3 | Sí: Compatible y probado por completo | Sí: Compatible y probado por completo |
NFSv4 | Sí: Compatible y probado por completo | Sí: Compatible y probado por completo |
CephFS | No | Sí: Pruebas limitadas (el controlador no está instalado de forma predeterminada. Debes instalar el cliente ceph , se recomienda que sea a través de DaemonSet ) |
Cinder | No | No |
Canal de fibra | No | No |
Flocker | No compatible | No compatible |
iSCSI | No | No |
RBD | No | No |
Modificaciones de la VM de nodo
Las modificaciones en el disco de arranque de las VM de nodo no se mantienen en las recreaciones de nodo. Los nodos se vuelven a crear durante la actualización manual, la actualización automática, la reparación automática y el ajuste de escala automático. Además, los nodos se vuelven a crear cuando habilitas una función que requiera volver a crearlo, como la GKE Sandbox, la visibilidad dentro de los nodos y los nodos protegidos.
Para conservar las modificaciones después de volver a crear el nodo, usa un DaemonSet.
No se recomienda administrar el software crítico que proporciona una imagen de nodo, como el entorno de ejecución del contenedor o kernel (ya sea containerd
o docker
). Las imágenes de nodo se prueban de forma exhaustiva y la modificación del software crítico proporcionado en la imagen de nodo coloca al nodo en un estado inestable y desconocido.
Los nodos de GKE Autopilot no permiten modificar software de nodos.
Asigna versiones de imagen de nodo de Container-Optimized OS a versiones de parche de GKE
GKE publica una asignación JSON de las versiones de parche de GKE a las versiones de imagen de nodo de Container-Optimized OS:
Puedes usar esta asignación para actualizar a una versión específica de GKE a fin de obtener una versión de imagen específica. Por ejemplo, si tu clúster necesita una función determinada o una corrección de una versión de imagen, puedes buscar la asignación y actualizar tu clúster a una versión específica de GKE para obtener la versión de imagen de Container-Optimized OS con los cambios. Para obtener detalles sobre las versiones de imágenes de Container-Optimized OS, consulta las notas de la versión de Container-Optimized OS.
Esta lista se actualiza semanalmente, aproximadamente. Para ver la actualización de la información, consulta el campo creation_time
en el archivo JSON.
Notas de la versión de las imágenes de nodo
Container-Optimized OS
Google ofrece documentación integral para Container-Optimized OS:
Ubuntu
Google actualiza periódicamente las imágenes de Ubuntu disponibles para usarse en los nodos de tu clúster. Consulta las notas de la versión de GKE para obtener más información sobre estas actualizaciones, incluido un vínculo al manifiesto que enumera los paquetes instalados de forma predeterminada.
Problemas conocidos
Restablecimientos aleatorios de la conexión en nodos de GKE con Container-Optimized OS y con entorno de ejecución de Docker
Los nodos de GKE que usan Container-Optimized OS con Docker (cos
) pueden experimentar restablecimientos aleatorios de conexión TCP cuando dos pods en el mismo nodo se comunican mediante un ClusterIP Service de Kubernetes.
Las siguientes versiones de GKE se ven afectadas:
- 1.20.5-gke.100 o posterior
Para solucionar el problema, usa una de las siguientes opciones:
- Migra de Docker a imágenes de nodo containerd.
- Habilita la visibilidad dentro de los nodos para el clúster.
Proyectos de origen de imágenes de nodo
Las imágenes de nodo disponibles para los clústeres de GKE se encuentran en los siguientes proyectos de origen:
- Imágenes de Container-Optimized OS:
gke-node-images
- Imágenes de Ubuntu:
ubuntu-os-gke-cloud
- Imágenes de Windows Server:
gke-windows-node-images
Además de los proyectos de origen mencionados anteriormente, GKE también usa los siguientes proyectos de origen para su uso exclusivo por parte del equipo de GKE:
ubuntu-os-gke-cloud-private
(reservado para uso exclusivo del equipo de GKE)ubuntu-os-gke-cloud-devel
(reservado para uso exclusivo del equipo de GKE)
Es posible que debas conocer los nombres de los proyectos de origen durante la configuración clústeres. Los proyectos de origen enumerados están sujetos a cambios.