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

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

  • Arquitectura
  • Administra trabajos
  • Multiusuario
  • Seguridad
  • Agregar a una cola
  • Almacenamiento
  • Rendimiento
  • Rentabilidad
  • Supervisión

GKE proporciona un framework potente para organizar cargas de trabajo por lotes, como procesamiento de datos, entrenamiento de modelos de aprendizaje automático, 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 nube y profesionales de operaciones interesados en implementar cargas de trabajo por lotes en GKE. La arquitectura de referencia: Plataforma de procesamiento por lotes en GKE muestra muchas de las prácticas recomendadas que se analizan 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 intervención del usuario. Para definir tareas, 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 los recibe. La cola en la plataforma de lotes aplica la lógica de procesamiento, como la prioridad, la cuota y los recursos asignables. Si pones en cola y personalizas los parámetros de procesamiento por lotes, Kubernetes te permite optimizar el uso de recursos disponibles, minimizar el tiempo de inactividad de los trabajos programados y maximizar los ahorros de costos. En el siguiente diagrama, se muestran los componentes de GKE que pueden ser parte de una plataforma por lotes.

Administración de la plataforma por lotes

Tradicionalmente, las plataformas de procesamiento por lotes tienen dos arquetipos de usuarios principales: los desarrolladores y los administradores de la plataforma.

  • Un desarrollador envía un trabajo en el que especifica el programa, los datos que se procesarán y los requisitos del trabajo. Luego, el desarrollador recibe la confirmación del envío del trabajo y un identificador único. Una vez que se complete el trabajo, el desarrollador recibirá una notificación junto con cualquier resultado o salida del trabajo.
  • Un administrador de la plataforma administra y proporciona una plataforma de procesamiento por lotes eficiente y confiable para los desarrolladores.

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

  • Los recursos de la plataforma se aprovisionan correctamente para garantizar que los trabajos se ejecuten con poca o ninguna intervención del usuario.
  • 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 manera más eficiente posible. En caso de contención de recursos, primero el trabajo más importante se realiza.

Prepara la arquitectura de la plataforma 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 para planificar y diseñar la arquitectura de tu plataforma de procesamiento por lotes:

Recomendación Recursos
Selecciona un modo de operación de GKE

GKE tiene los siguientes modos de operación disponibles:

  • Con el modo Autopilot, GKE administra automáticamente la configuración de tu clúster, incluidos los nodos, el escalamiento, la seguridad y otros parámetros de configuración ya establecidos para que puedas enfocarte en tu carga de trabajo. Los clústeres de Autopilot tienen alta disponibilidad de forma predeterminada.
  • Con el modo Standard, defines y administras la configuración de tu clúster, incluidos los nodos, el escalamiento, la seguridad y otros parámetros de configuración avanzados.

Consulta la comparación de alto nivel entre el modo Autopilot y el modo Standard.

Elige el tipo de máquina para tus nodos

GKE es compatible con las siguientes series de VMs de Compute Engine:

  • Optimizado para el costo, como E2
  • Equilibrado, como N2, N2D o N1
  • Optimizadas para el escalamiento horizontal, como Tau T2D o Tau T2A
  • Con optimización de memoria, como M2 o M1
  • Optimizadas para procesamiento, como C2 o C2D
  • Con optimización de acelerador, como A4 con GPUs NVIDIA B200

Cada serie de máquinas está asociada con una o más plataformas de CPU, como procesadores Arm y procesadores x86 de Intel y AMD.

Obtén información sobre las opciones disponibles actualmente para tu carga de trabajo.

Usa aceleradores de hardware para tus nodos

También puedes usar aceleradores de hardware, como unidades de procesamiento gráfico (GPU) y unidades de procesamiento tensorial (TPU) en GKE. Considera la estrategia de uso compartido de tiempo 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 de alto rendimiento y homogéneas con solicitudes bajas. GPUs de varias instancias para GPU en particiones para compartir un solo recurso de GPU en varios contenedores al mismo tiempo

Habilita el escalador automático de clústeres en clústeres de Standard

GKE cambia automáticamente el tamaño de la cantidad de nodos en un grupo de nodos determinado según las demandas de tus cargas de trabajo. No es necesario que agregues o quites nodos de forma manual ni que sobreaprovisiones tus grupos de nodos. En su lugar, solo debes especificar un tamaño mínimo y máximo para el grupo de nodos.

Te recomendamos que configures el ajuste de escala automático del clúster con la siguiente configuración:

  • Usa el perfil optimize-utilization, que quita los nodos sin usar hasta tres veces más rápido que el perfil equilibrado. Para obtener más información, consulta Perfiles de ajuste de escala automático.
  • Establece la política de ubicación en ANY. El escalador automático del clúster de GKE prioriza el uso de 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 administrar y ajustar automáticamente la escala de tu infraestructura. Una vez que se crea un grupo de nodos con el aprovisionamiento automático, el escalador automático 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 de Autopilot, no tienes que preocuparte por aprovisionar nodos o administrar los grupos de nodos, ya que los grupos de nodos se aprovisionan automáticamente mediante el aprovisionamiento automático de nodos y se escalan de forma automática para cumplir con los requisitos de tus cargas de trabajo.

Inscribe tu clúster en un canal de versiones

GKE puede administrar automáticamente la versión y las actualizaciones de tu clúster. Según tu modelo de adopción de versiones, puedes inscribir tu clúster en los canales disponibles de GKE.

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

Define un permiso de mantenimiento para excluir de tu clúster

Con un período de exclusión del alcance de la actualización definido, GKE respeta que las cargas de trabajo por lotes de larga duración no se interrumpan para el mantenimiento hasta que se completen.

Para obtener más información, consulta Alcance del mantenimiento que se excluirá.

Administra el ciclo de vida del trabajo

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

Un objeto Job crea uno o más Pods y trata de ejecutarlos de forma continua hasta que una cantidad especificada de Pods finaliza correctamente. A medida que los Pods se completan, el objeto Job realiza un seguimiento de las finalizaciones correctas. Cuando se alcanza una cantidad especificada de finalizaciones exitosas, el trabajo está completo.

En la siguiente tabla, se enumeran las recomendaciones clave para diseñar y administrar 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 procesarán según el índice del Pod. Los Pods de un trabajo obtienen un índice de finalización asociado. Si borras un objeto Job, se limpian los Pods que creó. Si suspendes un trabajo, se borrarán sus Pods activos hasta que se reanude el trabajo.
Configura trabajos cron para acciones programadas regulares Usa CronJob para GKE para realizar acciones programadas regulares, como copias de seguridad, generación de informes o entrenamiento programado para modelos de aprendizaje automático.
Administra fallas en un trabajo Define la política de fallas del Pod de Kubernetes y el límite de fallas de la retirada de Pods para controlar las fallas que se pueden reintentar y que no se pueden reintentar en un trabajo. Esta definición mejora el consumo de los recursos del clúster, ya que evita los reintentos innecesarios del Pod y las fallas del trabajo debido a las interrupciones del Pod. Por ejemplo, puedes configurar la preemption, 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. Aprende a controlar las fallas de Pod que se pueden reintentar y las que no con la política de fallas de Pod.
Administra varios trabajos como una unidad Usa la API de JobSet para administrar varios trabajos como una unidad para abordar los patrones de carga de trabajo, como un controlador (o coordinador) y varios trabajadores (por ejemplo, MPIJob). Configura valores predeterminados del trabajo que estén alineados con patrones comunes en función de tus casos de uso. Por ejemplo, puedes crear un trabajo indexado de forma predeterminada, crear un servicio sin interfaz gráfica para nombres de dominio completamente calificados (FQDN) predecibles para Pods y configurar la política de fallas del Pod asociada.
Extiende el tiempo de ejecución de un Pod que no tolera los reinicios Configura la anotación cluster-autoscaler.kubernetes.io/safe-to-evict de Kubernetes como false en la especificación del Pod. El escalador automático del clúster respeta las reglas de expulsión establecidas para los Pods. Estas restricciones pueden impedir que el escalador automático borre un nodo si este contiene un Pod con la anotación cluster-autoscaler.kubernetes.io/safe-to-evict.

Para obtener más información, consulta Consideraciones sobre la programación y la interrupción de Pods.

Administra instancias múltiples

El clúster multiusuario de GKE es una alternativa para administrar los recursos de GKE de diferentes usuarios o cargas de trabajo, llamados usuarios, en una organización individual. La administración de los recursos de GKE puede seguir criterios como aislamiento de usuarios, cuotas y los rangos de límites o asignación de costos.

En la siguiente tabla, se enumeran las recomendaciones clave para administrar la arquitectura de múltiples usuarios:

Recomendación Recursos
Usa espacios de nombres para administrar el aislamiento de usuarios Puedes separar cada usuario y sus recursos de Kubernetes en sus propios espacios de nombres.
Usa políticas para aplicar el aislamiento de instancias Define políticas para restringir el acceso a la API, establecer cuotas, limitar el uso de recursos y restringir lo que pueden hacer los contenedores. Estas políticas se definen por espacios de nombres.
Cómo establecer la asignación de costos de GKE Usa la asignación de costos de GKE para obtener estadísticas sobre las solicitudes de recursos del clúster para cada instancia según el espacio de nombres.

Controla el acceso a la plataforma de procesamiento por lotes

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

En la siguiente tabla, se enumeran las recomendaciones clave para administrar el acceso y la seguridad.

Recomendación Recursos
Configura la federación de identidades para cargas de trabajo para GKE GKE permite que las cargas de trabajo de tu clúster de GKE actúen en nombre de las cuentas de servicio de Identity and Access Management (IAM) para acceder a los servicios de Google Cloud . Mediante la federación de identidades para cargas de trabajo para GKE, las cargas de trabajo pueden acceder de forma segura a los Secrets almacenados fuera de GKE.

Si deseas obtener más información, consulta Federación de identidades para cargas de trabajo para GKE y accede a los Secrets almacenados.

Cómo configurar el aislamiento de red del clúster Configura el aislamiento de red de tus clústeres para que tanto el extremo del plano de control como los nodos trabajadores puedan tener direcciones IP internas.

Para obtener más información, consulta Acerca de la personalización del aislamiento de red.

Usar nodos de GKE protegidos Configura los nodos de GKE protegidos para proporcionar identidad y integridad de nodo sólidas y verificables para 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 taints de nodos para separar físicamente los inquilinos en grupos de nodos con taints de nodos y tolerancias de cargas de trabajo. Esto garantiza que solo se programen las cargas de trabajo adecuadas en esos grupos de nodos.

Pon en cola y comparte equitativamente

Para controlar el consumo de recursos, puedes asignar límites de cuota de recursos para cada instancia, poner en cola los trabajos entrantes y procesarlos en el orden en que se recibieron.

En la siguiente tabla, se enumeran las recomendaciones clave para administrar la administración de filas y el uso compartido equitativo entre las cargas de trabajo por lotes:

Recomendación Recursos
Usa Kueue

Kueue es un sistema de filas 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 de manera equitativa los recursos del clúster entre sus usuarios, Kueue administra las cuotas y cómo los trabajos las consumen. Kueue toma las siguientes decisiones:

  • Cuándo debe esperar un trabajo
  • Cuando se debe admitir el inicio de un trabajo, por ejemplo, mediante la creación del Pod
  • Cuando se debe interrumpir un trabajo, por ejemplo, borrando el Pod

Para obtener información sobre cómo implementar un sistema de colas de trabajos, consulta Implementa un sistema de colas de trabajos con uso compartido de cuotas entre espacios de nombres en GKE.

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

Optimiza el almacenamiento, el rendimiento y la eficiencia de costos

El uso eficiente de nuestros recursos de procesamiento y almacenamiento de GKE puede reducir los costos. Una estrategia es redimensionar y configurar tus instancias de procesamiento para que se alineen con tus necesidades de procesamiento por lotes sin sacrificar el rendimiento.

En la siguiente tabla, se enumeran las recomendaciones clave para diseñar y administrar el almacenamiento, y optimizar el rendimiento:

Recomendación Recursos
Usa discos persistentes de Compute Engine

Te recomendamos que uses las siguientes configuraciones de discos persistentes de Compute Engine:

Usa el almacenamiento conectado a la 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 trabajadores de un Pod accedan al mismo espacio de nombres de almacenamiento y capacidad de escalamiento.
  • Usa Cloud Storage FUSE para acceder a Cloud Storage directamente desde un contenedor como una activación local de POSIX.
Definición de 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 el que se actualizan los informes y los paneles.

Te recomendamos que uses las siguientes soluciones de almacenamiento:

  • Para el almacenamiento de objetos administrado, usa Cloud Storage.
  • Para el almacenamiento de archivos de red administrado, usa Filestore.
  • Para cargas de trabajo que requieren semántica de sistema de archivos, usa el controlador CSI de Cloud Storage FUSE. Este controlador permite que las aplicaciones de Kubernetes activen buckets de Cloud Storage como sistemas de archivos locales.
Especifica los parámetros de ajuste para tu carga de trabajo

Te recomendamos que uses los siguientes parámetros de configuración:

  • Personaliza la configuración del sistema de nodos para tu carga de trabajo. Por ejemplo, establece 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 la sondeo ocupado con perfiles de red. Algunas cargas de trabajo que son sensibles a la latencia de red pueden mejorarse. Usa perfiles de red.
  • Aumenta el ancho de banda de red para los nodos de GKE mediante la habilitación de la NIC virtual de Google (gVNIC), una interfaz de red virtual diseñada específicamente para Compute Engine recomendada para aplicaciones de alto rendimiento.
  • Especifica la cantidad de subprocesos por núcleo para inhabilitar el multiprocesamiento simultáneo.
Optimiza la latencia y las redes de tus cargas de trabajo GKE admite la política de posición compacta para los grupos de nodos, que especifica que estos nodos (y, por lo tanto, las cargas de trabajo que se ejecutan en ellos) deben colocarse cerca el uno del otro dentro de una zona. Esto es especialmente útil para las cargas de trabajo de alto rendimiento y con acoplamiento alto, en las que la baja latencia entre los diferentes procesos que componen la carga de trabajo es una preocupación importante. Para obtener más información, consulta posición compacta.
Use VMs Spot

Las VMs Spot son instancias de máquinas virtuales (VM) de Compute Engine que tienen un precio menor que las VM estándar de Compute Engine y no proporcionan garantía de disponibilidad.

Te recomendamos que uses las siguientes soluciones:

  • Configura grupos de nodos de VMs Spot con ajuste de escala automático combinados con location_policy= "ANY". Con esta política, las VMs Spot tienen un riesgo menor de interrupción. Esta combinación es especialmente útil para las cargas de trabajo que pueden permanecer vigente a la interrupción de los nodos trabajadores individuales, como los cálculos paralelos de forma satisfactoria.
  • Si tu carga de trabajo tiene una huella de recursos predecible, combinar las Google Cloudreservas y los descuentos por compromiso de uso puede generar ahorros significativos. Crea un grupo de nodos con su tamaño establecido en la cantidad de instancias reservadas y prioriza la saturación de este grupo de nodos para lograr el máximo uso.
Cómo usar la transmisión de imágenes

Usa la transmisión de imágenes para extraer imágenes de contenedor GKE transmite datos de imágenes aptas. Esto permite que las cargas de trabajo se inicien sin esperar a que se descargue toda la imagen, lo que mejora considerablemente los tiempos de inicialización y una mejor rentabilidad.

Supervisa clústeres

GKE se integra en herramientas de observabilidad y registro que te ayudan a supervisar la confiabilidad y la eficiencia de tu clúster. En la siguiente tabla, se enumeran las recomendaciones clave para habilitar y usar las herramientas de observabilidad de GKE:

Recomendación Recursos
Usa Prometheus

GKE se integra en Google Cloud Observability. Personaliza las métricas que deseas que GKE envíe a Cloud Logging y Cloud Monitoring.

Google Cloud Managed Service para Prometheus está habilitado de forma predeterminada para los clústeres de GKE. Te recomendamos que uses la recopilación administrada para eliminar la complejidad de configurar y mantener servidores de Prometheus.

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

Usa los paneles de Cloud Monitoring

Usa los paneles de Monitoring para GKE para ver una descripción general de alto nivel del uso de clústeres y recursos, y desglosar y filtrar varias métricas y dimensiones.

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

¿Qué sigue?