Imágenes de nodo

En esta página, se describen las imágenes de nodo disponibles para los nodos de Google Kubernetes Engine (GKE). Para aprender a seleccionar una imagen de nodo, consulta Especifica una imagen de nodo.

Descripción general

Cuando creas un grupo de nodos o un clúster de GKE, puedes elegir la imagen de sistema operativo que se ejecuta en cada nodo. También puedes actualizar un clúster existente para que use otro tipo de imagen de nodo.

Imágenes de nodos disponibles

GKE ofrece las siguientes opciones de imágenes para tu clúster:

Container-Optimized OS

La imagen de nodo Container-Optimized OS de Google se basada en una versión reciente del kernel de Linux y está optimizada para mejorar la seguridad del nodo. Cuenta con el respaldo de un equipo de Google que puede aplicar parches rápidamente para mejorar la seguridad y para realizar iteraciones en las funciones. La imagen Container-Optimized OS ofrece un mejor nivel de asistencia, seguridad y estabilidad que otras.

Para obtener información sobre el proyecto de imagen y la familia, consulta Asistencia de las funciones por sistema operativo.

Ubuntu

La imagen del nodo de Ubuntu se validó con los requisitos de la imagen del nodo de GKE. Deberías usar la imagen del nodo de Ubuntu si tus nodos requieren compatibilidad con paquetes XFS, CephFS o Debian.

Para obtener información sobre el proyecto de imagen y la familia, consulta Asistencia de las funciones por sistema operativo.

Windows Server LTSC y Windows Server SAC

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.

Estas imágenes solo están disponibles para clústeres con la versión 1.16.8-gke.9 o posteriores.

Para obtener información sobre el proyecto de imagen y la familia, consulta Asistencia de las funciones por sistema operativo.

Imágenes de nodo containerd

containerd es una pieza fundamental y el componente más importante del entorno de ejecución de Docker. Hay dos imágenes de SO que usan containerd como principal entorno de ejecución del contenedor integrado directamente con Kubernetes: cos_containerd y ubuntu_containerd.

Para depurar o solucionar problemas en el nodo, puedes interactuar con containerd mediante la herramienta portátil de línea de comandos creada para entornos de ejecución de contenedor de Kubernetes: crictl. crictl admite funcionalidades comunes para ver imágenes y contenedores, leer registros y ejecutar comandos en los contenedores. Consulta la guía del usuario de crictl para ver el conjunto completo de características admitidas y la información de uso.

containerd en Container-Optimized OS (cos_containerd)

cos_containerd es una variante de la imagen de Container-Optimized OS con containerd como entorno de ejecución del contenedor integrado directamente con Kubernetes.

Para obtener más información, visita Usa Container-Optimized OS con containerd.

containerd en Ubuntu (ubuntu_containerd)

ubuntu_containerd es una variante de la imagen de Ubuntu que usa containerd como entorno de ejecución del contenedor.

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 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.

A fin de realizar la 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 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, úsalo para ver registros del daemon de Docker:

sudo journalctl -u docker

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 en /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
  • no ejecutable
  • sin estado
  • tmpfs
Por lo general, tu configuración se encuentra en /etc (por ejemplo, servicios systemd definidos a través de cloud-init). Se recomienda capturar el estado deseado de tus instancias en cloud-init, mientras que cloud-init se aplica cuando se crea o se reinicia una instancia.
/tmp
  • admite escritura
  • no ejecutable
  • sin estado
  • tmpfs
Por lo general, /tmp se usa como un espacio temporal y no debería almacenar datos persistentes.
/mnt/disks
  • admite escritura
  • ejecutable
  • sin estado
  • tmpfs
Puedes activar los 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 Platform.

La imagen del nodo de GKE admite algunos complementos comunes de almacenamiento.

Tipo de volumen ¿Funciona en Container-Optimized OS (cos)? ¿Funciona en Ubuntu?
Google Compute Engine
Persistent Disk (EXT4 o XFS)
Sí: Compatible y probado por completo
(XFS no es compatible)
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 zona de pruebas de GKE, 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.

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 de manera periódica 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.

Próximos pasos