Prácticas recomendadas para ejecutar cargas de trabajo por lotes en GKE

En esta página se presentan las prácticas recomendadas para crear y optimizar plataformas de procesamiento por lotes con Google Kubernetes Engine (GKE), incluidas las prácticas recomendadas para lo siguiente:

  • Arquitectura
  • Gestión de tareas
  • Arquitectura multicliente
  • Seguridad
  • Colas
  • Almacenamiento
  • Rendimiento
  • Rentabilidad
  • Supervisión

GKE proporciona un potente marco para orquestar cargas de trabajo por lotes, como el procesamiento de datos, el entrenamiento de modelos de aprendizaje automático, la ejecución de simulaciones científicas y otras cargas de trabajo de computación de alto rendimiento.

Estas prácticas recomendadas están dirigidas a administradores de plataformas, arquitectos de la nube y profesionales de operaciones interesados en desplegar cargas de trabajo por lotes en GKE. La arquitectura de referencia de la plataforma de procesamiento por lotes en GKE muestra muchas de las prácticas recomendadas que se describen en esta guía y se puede implementar en tu propio proyecto de Google Cloud .

Cómo funcionan las cargas de trabajo por lotes

Una carga de trabajo por lotes es un grupo de tareas que se ejecutan hasta completarse sin la intervención del usuario. Para definir tareas, se usa el recurso Jobs de Kubernetes. Una plataforma de procesamiento por lotes recibe los trabajos y los pone en cola en el orden en que se reciben. La cola de la plataforma de procesamiento por lotes aplica una lógica de procesamiento, como la prioridad, la cuota y los recursos asignables. Al poner en cola y personalizar los parámetros de procesamiento por lotes, Kubernetes te permite optimizar el uso de los recursos disponibles, minimizar el tiempo de inactividad de los trabajos programados y maximizar los ahorros de costes. En el siguiente diagrama se muestran los componentes de GKE que pueden formar parte de una plataforma de procesamiento por lotes.

Gestión de plataformas por lotes

Tradicionalmente, las plataformas de procesamiento por lotes tienen dos perfiles de usuario principales: desarrolladores y administradores de la plataforma.

  • Un desarrollador envía un trabajo especificando el programa, los datos que se van a procesar y los requisitos del trabajo. A continuación, el desarrollador recibe una confirmación del envío del trabajo y un identificador único. Una vez que se haya completado el trabajo, el desarrollador recibirá una notificación junto con cualquier resultado o salida del trabajo.
  • Un administrador de la plataforma gestiona y proporciona a los desarrolladores una plataforma de procesamiento por lotes eficiente y fiable.

Una plataforma de procesamiento por lotes debe cumplir los siguientes requisitos:

  • Los recursos de la plataforma se aprovisionan correctamente para asegurar que los trabajos se ejecuten sin que los usuarios tengan que hacer casi nada.
  • Los recursos de la plataforma se configuran de acuerdo con las prácticas recomendadas de seguridad y observabilidad de la organización.
  • Los recursos de la plataforma se usan de la forma más eficiente posible. En caso de conflicto de recursos, se completará primero el trabajo más importante.

Preparar la arquitectura de la plataforma de procesamiento por lotes en GKE

Un entorno de GKE consta de nodos, que son máquinas virtuales (VMs) de Compute Engine, que se agrupan para formar un clúster.

En la siguiente tabla se enumeran las recomendaciones clave a la hora de planificar y diseñar la arquitectura de tu plataforma de procesamiento por lotes:

Recomendación Recursos
Seleccionar un modo de funcionamiento de GKE

GKE ofrece los siguientes modos de funcionamiento:

  • Con el modo Autopilot, GKE gestiona automáticamente la configuración de tu clúster, incluidos los nodos, el escalado, la seguridad y otros ajustes preconfigurados, para que puedas centrarte en tu carga de trabajo. Los clústeres de Autopilot tienen una alta disponibilidad de forma predeterminada.
  • En el modo Estándar, puedes definir y gestionar la configuración de tu clúster, incluidos los nodos, la escalabilidad, la seguridad y otros ajustes avanzados.

Consulta la comparación general entre el modo Autopilot y el modo Standard.

Elige el tipo de máquina de tus nodos

GKE admite las siguientes series de VMs de Compute Engine:

  • Con optimización de costes, como E2
  • Equilibradas, como N2, N2D o N1
  • Optimizadas para el escalado horizontal, como Tau T2D o Tau T2A
  • Con memoria optimizada, como M2 o M1
  • Optimizadas para la computación, como C2 o C2D
  • Optimizadas para aceleradores, como A4 con GPUs NVIDIA B200

Cada serie de máquinas se asocia a una o varias plataformas de CPU, como los procesadores Arm y los procesadores x86 de Intel y AMD.

Consulta las opciones disponibles para tu carga de trabajo.

Usar aceleradores por hardware en los nodos

También puedes usar aceleradores por hardware, como unidades de procesamiento gráfico (GPUs) y unidades de procesamiento de tensor (TPUs) en GKE. Considera la estrategia de uso compartido de la GPU, que permite que varios contenedores compartan tiempo en la misma GPU física. Este enfoque es útil para cargas de trabajo de GPU homogéneas y con capacidad de ráfaga que tienen pocas solicitudes. GPUs de varias instancias para particionar GPUs y compartir un único recurso de GPU entre varios contenedores al mismo tiempo.

Habilitar la herramienta de adaptación dinámica de clústeres en clústeres estándar

GKE cambia automáticamente el tamaño del número de nodos de un grupo de nodos determinado en función de las demandas de tus cargas de trabajo. No tienes que añadir ni quitar nodos manualmente, ni aprovisionar en exceso tus grupos de nodos. En su lugar, solo tienes que especificar un tamaño mínimo y máximo para el grupo de nodos.

Te recomendamos que configures el autoescalador de clústeres con la siguiente configuración:

  • Usa el perfil optimize-utilization, que elimina los nodos que no se usan hasta tres veces más rápido que el perfil equilibrado. Para obtener más información, consulta Perfiles de autoescalado.
  • Define la política de ubicación como ANY. El autoescalador de clústeres de GKE prioriza el uso de las reservas sin usar y crea nodos en cualquier zona disponible de las regiones. Para obtener más información, consulta la política de ubicación.
  • Habilita el aprovisionamiento automático de nodos para gestionar y autoescalar automáticamente tu infraestructura. Una vez que se crea un grupo de nodos mediante el aprovisionamiento automático, la herramienta de adaptación dinámica del clúster puede escalar el grupo de nodos de forma dinámica. Para obtener más información, consulta Cómo funciona el aprovisionamiento automático de nodos.

Con los clústeres Autopilot, no tienes que preocuparte por aprovisionar nodos ni gestionar grupos de nodos, ya que estos se aprovisionan automáticamente mediante el aprovisionamiento automático de nodos y se escalan automáticamente para satisfacer los requisitos de tus cargas de trabajo.

Registrar un clúster en un canal de lanzamiento

GKE puede gestionar automáticamente la versión y las actualizaciones de tu clúster. En función de tu modelo de adopción de lanzamientos, puedes registrar tu clúster en los canales disponibles de GKE.

Para obtener más información, consulta Cómo elegir el mejor canal de lanzamiento para tus clústeres.

Definir un periodo de mantenimiento que excluir de tu clúster

Si se define una ventana de exclusión del ámbito de la actualización, GKE respetará que las cargas de trabajo por lotes de larga duración no se interrumpan por tareas de mantenimiento hasta que se completen.

Para obtener más información, consulta Ámbito del mantenimiento que se va a excluir.

Gestionar el ciclo de vida de un trabajo

En Kubernetes, las cargas de trabajo se ejecutan en un conjunto de pods. Los pods son grupos de uno o varios contenedores con almacenamiento y recursos de red compartidos. Los pods se definen mediante una especificación de Kubernetes.

Una tarea crea uno o varios pods y trata de ejecutarlos continuamente hasta que finalice correctamente un número específico de pods. A medida que los pods se completan, la tarea monitoriza las finalizaciones correctas. Cuando se alcanza un número específico de finalizaciones correctas, la tarea se completa.

En la siguiente tabla se indican las recomendaciones clave para diseñar y gestionar trabajos:

Recomendación Recursos
Selecciona el modo de finalización del trabajo Especifica el modo de finalización como Indexed. Esta configuración es útil cuando se asigna una partición de los datos que se van a procesar en función del índice del pod. Los pods de un trabajo obtienen un índice de finalización asociado. Al eliminar un trabajo, se limpian los pods que ha creado. Si suspendes un trabajo, se eliminarán sus pods activos hasta que se reanude.
Configurar CronJobs para acciones programadas periódicamente Usa CronJob para GKE para realizar acciones programadas periódicas, como copias de seguridad, generación de informes o entrenamiento programado de modelos de aprendizaje automático.
Gestionar errores en un trabajo Define la política de errores de pods de Kubernetes y el límite de errores de espera de pods para gestionar los errores que se pueden volver a intentar y los que no en un trabajo. Esta definición mejora el consumo de recursos del clúster, ya que evita reintentos innecesarios de pods y fallos de trabajos debido a interrupciones de pods. Por ejemplo, puedes configurar la expropiación, la expulsión iniciada por la API o la expulsión basada en taints, en la que se expulsan los pods que no tienen una tolerancia para el efecto de taint NoExecute. Consulta cómo gestionar errores de pods recuperables y no recuperables con la política de errores de pods.
Gestionar varios trabajos como una unidad Usa la API JobSet para gestionar varios trabajos como una unidad y abordar patrones de carga de trabajo, como un controlador (o coordinador) y varios trabajadores (por ejemplo, MPIJob), al tiempo que defines valores predeterminados de los trabajos que se ajusten a patrones comunes basados en tus casos prácticos. Por ejemplo, puedes crear un trabajo indexado de forma predeterminada, crear un servicio sin encabezado para obtener nombres de dominio completos (FQDN) predecibles para los pods y definir la política de errores de los pods asociados.
Ampliar el tiempo de ejecución de un pod que no tolera reinicios Define la anotación cluster-autoscaler.kubernetes.io/safe-to-evict de Kubernetes en false en la especificación del pod. La herramienta de adaptación dinámica del clúster respeta las reglas de desalojo definidas en los pods. Estas restricciones pueden impedir que el escalador automático elimine un nodo si contiene un pod con la anotación cluster-autoscaler.kubernetes.io/safe-to-evict.

Para obtener más información, consulta Considerar la programación y las interrupciones de los pods.

Gestionar la propiedad múltiple

La propiedad múltiple de clústeres de GKE es una alternativa a la gestión de recursos de GKE por parte de diferentes usuarios o cargas de trabajo, denominados propietarios, en una sola organización. La gestión de los recursos de GKE puede seguir criterios como el aislamiento de los inquilinos, las cuotas y los intervalos de límites, o la asignación de costes.

En la siguiente tabla se indican las principales recomendaciones para gestionar la multitenencia:

Recomendación Recursos
Usar espacios de nombres para gestionar el aislamiento de los clientes Puedes separar cada arrendatario y sus recursos de Kubernetes en sus propios espacios de nombres.
Usar políticas para aplicar el aislamiento de tenants Define políticas para restringir el acceso a las APIs, establecer cuotas, limitar el uso de recursos y restringir lo que pueden hacer los contenedores. Estas políticas se definen por espacios de nombres.
Configurar la asignación de costes de GKE Usa la asignación de costes de GKE para obtener información valiosa sobre las solicitudes de recursos de clúster de cada arrendatario por espacio de nombres.

Controlar el acceso a la plataforma de lotes

GKE te permite ajustar los permisos de acceso de las cargas de trabajo que se ejecutan en el clúster.

En la siguiente tabla se indican las principales recomendaciones para gestionar el acceso y la seguridad.

Recomendación Recursos
Configurar Workload Identity Federation para GKE GKE permite que las cargas de trabajo de tu clúster de GKE actúen como cuentas de servicio de gestión de identidades y accesos (IAM) para acceder a Google Cloud servicios. Al usar Workload Identity Federation para GKE, las cargas de trabajo pueden acceder de forma segura a los secretos almacenados fuera de GKE.

Para obtener más información, consulta Workload Identity Federation for GKE y acceso a secretos almacenados.

Configurar el aislamiento de la red del clúster Configura el aislamiento de red de tus clústeres para que tanto el endpoint del plano de control como los nodos de trabajador puedan tener direcciones IP internas.

Para obtener más información, consulta Información sobre la personalización del aislamiento de redes.

Usar nodos de GKE blindados Configura nodos de GKE blindados para proporcionar una identidad e integridad de nodos sólidas y verificables, y así aumentar la seguridad de los nodos de GKE.
Aislamiento físico Por motivos de seguridad, es posible que tus cargas de trabajo necesiten un mayor aislamiento. Controla la programación con intolerancias de nodos para separar físicamente los clientes en grupos de nodos mediante intolerancias de nodos y tolerancias de cargas de trabajo. De esta forma, solo se programarán las cargas de trabajo adecuadas en esos grupos de nodos.

Colas y uso compartido justo

Para controlar el consumo de recursos, puedes asignar límites de cuota de recursos a cada arrendatario, poner en cola las tareas entrantes y procesarlas en el orden en que se hayan recibido.

En la siguiente tabla se indican las principales recomendaciones para gestionar las colas y el reparto equitativo entre cargas de trabajo por lotes:

Recomendación Recursos
Usar Kueue

Kueue es un sistema de colas de trabajos nativo de Kubernetes para aplicaciones por lotes, de computación de alto rendimiento, de aprendizaje automático y similares en un clúster de Kubernetes. Para ayudar a compartir los recursos del clúster de forma equitativa entre sus inquilinos, Kueue gestiona las cuotas y cómo las consumen los trabajos. Kueue toma las siguientes decisiones:

  • Cuándo debe esperar un trabajo
  • Cuándo se debe permitir que se inicie un trabajo, por ejemplo, creando el pod
  • Cuándo se debe interrumpir un trabajo, por ejemplo, al eliminar el pod

Para saber cómo implementar un sistema de colas de trabajos, consulta Implementar un sistema de colas de trabajos con cuotas compartidas entre espacios de nombres en GKE.

Para obtener más información sobre Kueue, consulta Conceptos de Kueue.

Optimizar el almacenamiento, el rendimiento y la rentabilidad

El uso eficiente de nuestros recursos de computación y almacenamiento de GKE puede reducir los costes. Una estrategia consiste en dimensionar y configurar correctamente las instancias de computación para que se ajusten a tus necesidades de procesamiento por lotes sin sacrificar el rendimiento.

En la siguiente tabla se enumeran las principales recomendaciones para diseñar y gestionar el almacenamiento, así como para optimizar el rendimiento:

Recomendación Recursos
Usar discos persistentes de Compute Engine

Te recomendamos que utilices las siguientes configuraciones de Persistent Disk de Compute Engine:

Usar almacenamiento conectado a una red

Usa el siguiente almacenamiento conectado a la red junto con Persistent Disk para obtener un rendimiento de almacenamiento óptimo:

  • Usa Filestore para permitir que todos los nodos de trabajo de un pod accedan al mismo espacio de nombres de almacenamiento y escalen la capacidad.
  • Usa Cloud Storage FUSE para acceder a Cloud Storage directamente desde un contenedor como un montaje POSIX local.
Definir Pub/Sub

Tu carga de trabajo por lotes también puede leer y escribir datos. Por ejemplo, puedes usar Pub/Sub y escribir los resultados en un almacén de datos como BigQuery, desde donde se actualizan los informes y los paneles de control.

Te recomendamos que utilices las siguientes soluciones de almacenamiento:

  • Para el almacenamiento de objetos gestionado, usa Cloud Storage.
  • Para el almacenamiento de archivos de red gestionado, usa Filestore.
  • Para las cargas de trabajo que requieren semánticas de sistema de archivos, usa el controlador de CSI de Cloud Storage FUSE. Este controlador permite que las aplicaciones de Kubernetes monten segmentos de Cloud Storage como sistemas de archivos locales.
Especificar los parámetros de ajuste de tu carga de trabajo

Te recomendamos que utilices las siguientes configuraciones:

  • Personaliza la configuración del sistema de nodos para tu carga de trabajo. Por ejemplo, define los valores mínimo, predeterminado y máximo del búfer de recepción de sockets TCP. Usa la configuración del sistema de nodos.
  • Habilita el sondeo ocupado mediante perfiles de red. . Algunas cargas de trabajo sensibles a la latencia de red pueden mejorar. Usar perfiles de red.
  • Aumenta el ancho de banda de la red de los nodos de GKE habilitando NIC virtual de Google (gVNIC), una interfaz de red virtual diseñada específicamente para Compute Engine y recomendada para aplicaciones de alto rendimiento.
  • Especifica el número de hilos por núcleo para inhabilitar multihilo simultáneo.
Optimizar la latencia y la red de las cargas de trabajo GKE admite la política de colocación compacta para grupos de nodos, que especifica que estos nodos (y, por lo tanto, las cargas de trabajo que se ejecutan en ellos) deben colocarse más cerca unos de otros en una zona. Esto es especialmente útil para cargas de trabajo de alto rendimiento y estrechamente acopladas en las que la baja latencia entre los diferentes procesos que componen la carga de trabajo es un factor importante. Para obtener más información, consulta Ubicación compacta.
Usa Spot VMs

Las máquinas virtuales de acceso puntual son instancias de máquina virtual (VM) de Compute Engine que tienen un precio más bajo que las VMs estándar de Compute Engine y no ofrecen ninguna garantía de disponibilidad.

Te recomendamos que utilices las siguientes soluciones:

  • Define grupos de nodos de Spot VMs con autoescalado combinado con location_policy= "ANY" . Con esta política, las máquinas virtuales de acceso puntual tienen un menor riesgo de sufrir una expulsión. Esta combinación es especialmente útil para cargas de trabajo que pueden sobrevivir a la expropiación de nodos de trabajo individuales, como computaciones agradablemente paralelas.
  • Si tu carga de trabajo tiene un consumo de recursos predecible, puedes combinar Google Cloudreservas y descuentos por compromiso de uso para ahorrar significativamente. Crea un grupo de nodos con un tamaño igual al número de instancias reservadas y prioriza la saturación de este grupo de nodos para maximizar el uso.
Usar la transmisión de imágenes

Usa streaming de imágenes para extraer imágenes de contenedor. GKE transmite datos de imágenes aptas. De esta forma, las cargas de trabajo se inicializan sin tener que esperar a que se descargue toda la imagen, lo que mejora significativamente los tiempos de inicialización y la eficiencia de los costes.

Monitorizar clústeres

GKE se integra con herramientas de observabilidad y registro que te ayudan a monitorizar la fiabilidad y la eficiencia de tu clúster. En la siguiente tabla se enumeran las principales recomendaciones para habilitar y usar las herramientas de observabilidad de GKE:

Recomendación Recursos
Usar Prometheus

GKE se integra con Google Cloud Observability. Personalizar las métricas que quieras que GKE envíe a Cloud Logging y Cloud Monitoring

Google Cloud Managed Service para Prometheus está habilitado de forma predeterminada en los clústeres de GKE. Te recomendamos que utilices la recogida gestionada para evitar la complejidad de configurar y mantener servidores de Prometheus.

Para obtener más información, consulta Managed Service para Prometheus.

Usar paneles de control de Cloud Monitoring

Usa los paneles de control de Monitoring de GKE para ver una vista general del uso de los clústeres y los recursos, y desglosar y filtrar varias métricas y dimensiones.

Para obtener más información, consulta Monitorizar tus clústeres de GKE.

Siguientes pasos