Imágenes de nodos


En esta página se describen las imágenes de nodo disponibles para los nodos de Google Kubernetes Engine (GKE).

Los nodos de Autopilot de GKE 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 del sistema operativo que se ejecuta en cada nodo durante la creación del clúster o del grupo de nodos. También puedes actualizar un clúster estándar para que use otra imagen de nodo. Para obtener instrucciones sobre cómo definir la imagen de un nodo, consulta Especificar una imagen de nodo.

Imágenes de nodos disponibles

GKE ofrece las siguientes opciones de imagen de nodo por sistema operativo para tu clúster:

SO Imágenes de nodos
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 se han optimizado para mejorar la seguridad de los nodos. Las imágenes de Container-Optimized OS cuentan con el respaldo de un equipo de Google que puede aplicar parches rápidamente a las imágenes para mejorar la seguridad y desarrollar las funciones. Las imágenes de Container-Optimized OS ofrecen mejor compatibilidad, seguridad y estabilidad que otras imágenes.

Para obtener información sobre el proyecto y la familia de imágenes, consulta Proyectos de origen de imágenes de nodos.

Variantes de Container-Optimized OS

Container-Optimized OS ofrece dos entornos de ejecución de contenedores. Las imágenes son las mismas, excepto por la elección del tiempo 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 directamente integrado con Kubernetes. Los clústeres de Autopilot de GKE siempre usan esta imagen. Para obtener más información, consulta Imágenes de nodos de containerd.
  • Container-Optimized OS con Docker (cos): la imagen cos usa el entorno de ejecución de contenedores Docker.

Ubuntu

Las imágenes de nodo de Ubuntu se han validado según los requisitos de las imágenes de nodo de GKE. Debes usar las imágenes de 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 Compatibilidad con funciones por sistema operativo.

Variantes de Ubuntu

Ubuntu ofrece dos entornos de ejecución de contenedores. Las imágenes son las mismas, excepto por la elección del tiempo de ejecución del contenedor.

  • Ubuntu con containerd (ubuntu_containerd): la imagen ubuntu_containerd usa containerd como entorno de ejecución del contenedor. Para obtener más información, consulta Imágenes de nodos de containerd.

  • Ubuntu con Docker (ubuntu): la imagen ubuntu usa Docker como entorno de ejecución del contenedor.

Windows Server

Cuando creas un clúster mediante grupos de nodos de Windows Server, puedes usar una imagen de nodo de canal semianual (SAC) de Windows Server o de canal de mantenimiento a largo plazo (LTSC) de Windows Server. Todas las imágenes de nodos de Windows son imágenes de Windows Server Datacenter Core. Un clúster puede tener varios grupos de nodos de Windows Server con diferentes versiones de Windows Server, pero cada grupo de nodos solo puede usar una versión de Windows Server. Para obtener más información, consulta Elegir una imagen de nodo de Windows.

Se ofrecen dos tiempos de ejecución de contenedores con imágenes de nodo de Windows Server LTSC y SAC: Docker y containerd. Las imágenes son las mismas, excepto por la elección del tiempo de ejecución del contenedor.

  • Imágenes de tiempo de ejecución de containerd (disponibles en GKE 1.21 y versiones posteriores):

    • Windows Server LTSC con containerd (windows_ltsc_containerd): la imagen windows_ltsc_containerd usa containerd como entorno de ejecución del contenedor. Actualmente, 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 Windows LTSC2022 mediante el comando de la CLI con la marca windows-os-version.

      Para obtener más información sobre cómo crear grupos de nodos de Windows Server 2022, consulta Crear grupos de nodos de Windows.

      Para obtener más información sobre las imágenes de nodos de containerd, consulta Imágenes de nodos de containerd.

    • Windows Server SAC con containerd (windows_sac_containerd): la imagen windows_sac_containerd usa containerd como entorno de ejecución del contenedor.

      Para obtener más información, consulta Imágenes de nodos de containerd.

  • Imágenes de tiempo de ejecución de Docker (disponibles en GKE 1.16 y versiones posteriores):

    • Windows Server LTSC con Docker (windows_ltsc): la imagen windows_ltsc usa Docker como tiempo de ejecución del contenedor.
    • Windows Server SAC con Docker (windows_sac): la imagen windows_sac usa Docker como entorno de ejecución de contenedores.

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

Comparación de imágenes de nodos Linux

En las siguientes secciones se comparan los aspectos operativos de las imágenes de nodo de Container-Optimized OS y Ubuntu, entre los que se incluyen los siguientes:

  • Gestión de paquetes de software
  • Inicialización del sistema
  • Recopilación de registros
  • Diseño del sistema de archivos
  • Compatibilidad con el controlador de almacenamiento

Gestión de paquetes 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 tiempo de ejecución de contenedores Docker (containerd), que también actúa como gestor de paquetes de software para instalar software en el host. La imagen de Ubuntu usa el gestor de paquetes APT.

Gestionar software en Container-Optimized OS

La imagen de Container-Optimized OS no proporciona software de gestión de paquetes, como apt-get. No puedes instalar software arbitrario en los nodos mediante mecanismos convencionales. En su lugar, crea una imagen de contenedor que incluya el software que necesites.

En los clústeres estándar, solo para depuración, Container-Optimized OS incluye CoreOS Toolbox 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.

Gestionar software en Ubuntu

La imagen de Ubuntu usa el gestor de paquetes APT. Puedes usar el comando apt-get para instalar paquetes en estas imágenes. Por ejemplo, para instalar paquetes de ceph, haz lo siguiente:

sudo apt-get update
sudo apt-get install ceph

Inicialización del sistema

Tanto la imagen de nodo de Container-Optimized OS como la de Ubuntu usan systemd para gestionar 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 para agrupar los destinos de arranque mediante dependencias.

Recopilación de registros

Las imágenes de nodo de Container-Optimized OS y Ubuntu usan systemd-journald para recoger registros de todo el sistema.

Visualizar registros en Container-Optimized OS y Ubuntu

Para ver los registros de un nodo con la imagen de nodo de Container-Optimized OS o Ubuntu, debes usar el comando journalctl. Por ejemplo, para ver los registros del daemon de containerd, haz lo siguiente:

sudo journalctl -u containerd

Para ver los registros de kubelet:

sudo journalctl -u kubelet

Diseño del sistema de archivos

La imagen de 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 de nodo de Container-Optimized OS está optimizado para mejorar la seguridad del nodo. El espacio de disco de inicio se divide en tres tipos de particiones:

  • Partición raíz, que se activa como solo lectura
  • Particiones con reconocimiento del estado, en las que se puede escribir y que, como su nombre indica, reconocen el estado
  • Particiones sin reconocimiento del estado, en las que se puede escribir, pero cuyo contenido no se mantiene con los reinicios

Cuando uses Container-Optimized OS, ten en cuenta la partición si ejecutas tus propios servicios con ciertas expectativas sobre el diseño del sistema de archivos fuera de los contenedores.

Trabajar con el sistema de archivos de Container-Optimized OS

La siguiente es una lista de rutas en el sistema de archivos de la imagen de nodo de Container-Optimized OS, junto con sus propiedades y el uso recomendado:

Ruta Propiedades Finalidad
/
  • Solo lectura
  • Ejecutable
El sistema de archivos raíz está activado como solo lectura para mantener la integridad. El kernel verifica la integridad del sistema de archivos raíz durante el arranque y no se inicia si se producen errores.
/home
/var
  • editable
  • No ejecutable
  • Con reconocimiento del estado
Estas rutas se usan para almacenar datos que se conservan durante la vida útil del disco de arranque. Se montan desde /mnt/stateful_partition.
/var/lib/google
/var/lib/docker
/var/lib/toolbox
  • editable
  • Ejecutable
  • Con reconocimiento del estado
Estas rutas son directorios de trabajo de los paquetes de Compute Engine (por ejemplo, el servicio de gestión de cuentas), Docker y Toolbox, respectivamente.
/var/lib/cloud
  • editable
  • Ejecutable
  • Sin reconocimiento del estado
  • Tmpfs
Esta ruta es el directorio de trabajo del paquete cloud-init.
/etc
  • editable
  • Ejecutable
  • Sin reconocimiento del estado
  • Tmpfs
Normalmente, contiene tu configuración (por ejemplo, systemd servicios definidos mediante cloud-init). Es recomendable registrar el estado deseado de tus instancias en cloud-init, ya que cloud-init se aplica cuando se crea una instancia y cuando se reinicia.
/tmp
  • Editable
  • No ejecutable
  • Sin reconocimiento del estado
  • Tmpfs
Se suele usar como espacio de almacenamiento temporal y no se debe usar para almacenar datos persistentes.
/mnt/disks
  • editable
  • Ejecutable
  • Sin reconocimiento del estado
  • Tmpfs
Puedes activar discos persistentes en directorios de /mnt/disks.

Compatibilidad con el controlador de almacenamiento

Cada imagen de nodo difiere en los tipos de complementos de almacenamiento con los que es compatible. Para describir la compatibilidad de una imagen de nodo con un controlador de almacenamiento concreto, se utilizan los siguientes términos:

  • Sí (prueba y compatibilidad completas): este complemento de almacenamiento es totalmente compatible y se ha probado con la imagen de nodo especificada.
  • Sí (pruebas limitadas): este complemento de almacenamiento funciona con la imagen de nodo especificada, pero solo se ha probado de forma limitada, por lo que es posible que observes un comportamiento inesperado. En el caso de Container-Optimized OS, estos complementos se probarán y admitirán por completo.
  • No compatible: este complemento de almacenamiento no se ha probado ni se ha usado con la imagen de nodo especificada, por lo que GKE no puede ofrecer ninguna garantía de funcionalidad. No hay prevista prueba alguna al respecto.
  • No: este complemento de almacenamiento no funciona con la imagen de nodo especificada debido a una limitación inherente al SO del nodo o a Google Cloud.

En la siguiente matriz se describe cómo admite cada imagen de nodo de GKE algunos complementos de almacenamiento habituales.

Tipo de volumen ¿Funciona en Container-Optimized OS (cos)? ¿Funciona en Ubuntu?
Persistent Disk (EXT4 o XFS) de Compute Engine
Sí, totalmente probada y compatible
(XFS solo es compatible con cos-85 y versiones posteriores). Consulta las notas de la versión de GKE.
Sí (totalmente probado/compatible)
NFSv3 Sí (totalmente probado/compatible) Sí (totalmente probado/compatible)
NFSv4 Sí (totalmente probado/compatible) Sí (totalmente probado/compatible)
CephFS No Sí, pruebas limitadas
(el controlador no está instalado de forma predeterminada. Debes instalar el cliente ceph, preferiblemente a través de DaemonSet.
Cinder No No
Fibre Channel No No
Flocker No compatible No admitido
iSCSI No No
RBD No No

Modificaciones de las VMs de los nodos

Las modificaciones realizadas en el disco de arranque de una VM de un nodo no se mantienen al volver a crear el nodo. Los nodos se vuelven a crear durante la actualización manual, la actualización automática, la reparación automática y el autoescalado. Además, los nodos se vuelven a crear cuando habilitas una función que requiere que se vuelvan a crear los nodos, como GKE Sandbox, visibilidad del intranodo y nodos protegidos.

Para conservar las modificaciones al volver a crear los nodos, utiliza un DaemonSet.

No se recomienda gestionar software crítico proporcionado por una imagen de nodo, como el kernel o el tiempo de ejecución del contenedor (ya sea containerd o docker). Las imágenes de nodo se prueban exhaustivamente y, si se modifica el software crítico proporcionado en la imagen de nodo, el nodo pasa a un estado desconocido y no se puede probar. Los nodos de Autopilot de GKE no permiten modificar el software de los nodos.

Asignar versiones de imágenes de nodo de Container-Optimized OS a versiones de parches de GKE

GKE publica una asignación JSON de las versiones de parches de GKE a las versiones de imágenes de nodo de Container-Optimized OS:

Puedes usar esta asignación para actualizar a una versión específica de GKE y obtener una versión de imagen concreta. Por ejemplo, si tu clúster necesita una función o una corrección concretas de una versión de imagen, puedes encontrar la asignación y actualizar tu clúster a una versión específica de GKE para obtener la versión de imagen de SO optimizado para contenedores con los cambios. Para obtener más información 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 aproximadamente cada semana. Para ver la actualización de la información, consulta el campo creation_time del archivo JSON.

Notas de la versión de imágenes de nodos

Container-Optimized OS

Google proporciona documentación completa para Container-Optimized OS:

Ubuntu

Periódicamente, Google actualiza las imágenes de Ubuntu que están disponibles para usar en los nodos de tu clúster. Consulta las notas de la versión de GKE para obtener información sobre estas actualizaciones, incluido un enlace a un manifiesto con los paquetes que se instalan de forma predeterminada.

Problemas conocidos

Restablecimientos aleatorios de conexiones en nodos de GKE que usan Container-Optimized OS con el tiempo de ejecución de Docker

Los nodos de GKE que usan Container-Optimized OS con Docker (cos) pueden experimentar restablecimientos aleatorios de conexiones TCP cuando dos pods del mismo nodo se comunican mediante un servicio ClusterIP de Kubernetes.

Las versiones de GKE afectadas son las siguientes:

  • 1.20.5-gke.100 o posterior

Para solucionar el problema, usa una de las siguientes opciones:

Proyectos de origen de imágenes de nodos

Las imágenes de nodos 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 que se indican más arriba, GKE también usa los siguientes proyectos de origen para 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 necesites saber los nombres de los proyectos de origen al configurar clústeres de alta seguridad. Los proyectos de origen indicados están sujetos a cambios.

Siguientes pasos