Imágenes de nodo


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 imagen cos_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 imagen cos 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 imagen ubuntu_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 imagen ubuntu 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 imagen windows_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 marca windows-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 imagen windows_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 imagen windows_ltsc usa Docker como el entorno de ejecución del contenedor.
    • Windows Server SAC con Docker (windows_sac): La imagen windows_sac usa Docker como el entorno de ejecución del contenedor.

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
/
  • solo lectura
  • ejecutable
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
  • admite escritura
  • no ejecutable
  • con estado
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
  • admite escritura
  • ejecutable
  • con estado
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
  • admite escritura
  • ejecutable
  • sin estado
  • tmpfs
Esta ruta es el directorio de trabajo del paquete cloud-init.
/etc
  • admite escritura
  • ejecutable
  • sin estado
  • tmpfs
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
  • admite escritura
  • no ejecutable
  • sin estado
  • tmpfs
Por lo general, se usa como espacio temporal y no se debe usar para almacenar datos persistentes.
/mnt/disks
  • admite escritura
  • ejecutable
  • sin estado
  • tmpfs
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:

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.

¿Qué sigue?