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


En esta página se presentan las prácticas recomendadas para compilar plataformas de procesamiento por lotes con Google Kubernetes Engine (GKE). 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 destinadas a los administradores de plataformas, arquitectos de nube y profesionales de operaciones interesados en implementar cargas de trabajo por lotes en GKE. La Arquitectura de referencia para una 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 su finalización sin la intervención del usuario. Para definir tareas, usa el recurso Jobs de Kubernetes. Una plataforma por lotes recibe los trabajos y los pone en cola en el orden en que se reciben. 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 plataformas por lotes

Las plataformas por lotes suelen tener dos perfiles de usuarios principales: desarrolladores y administradores de plataformas:

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

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

  • Los recursos de la plataforma se aprovisionan de forma correcta 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 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 cuando planificas y diseñas tu arquitectura de plataforma por lotes:

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

GKE tiene disponibles los siguientes modos de operación:

  • 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, puedes definir y administrar la configuración de tu clúster, incluidos los nodos, el escalamiento, la seguridad y otras opciones de configuración avanzada.

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:

  • Optimización de los costos, como E2
  • Equilibrado, como N2, N2D o N1
  • Escalamiento horizontal optimizado, como Tau T2D o Tau T2A
  • Con optimización de memoria, como M2 o M1
  • Optimizadas para procesamiento, como C2 o C2D
  • Acelerador optimizado, como A2 con GPU NVIDIA A100, G2 con GPU NVIDIA L4, A3 con GPU NVIDIA H100 (disponible en vista previa privada).

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

Obtén información sobre las opciones que están 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 de gráficos (GPU) y unidades de procesamiento tensorial (TPU) en GKE. Considera es la estrategia de uso compartido de tiempo de la GPU, que permite que varios contenedores compartan el 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 estándar

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 establecer el escalador 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 balanceado. 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 de clústeres 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 Política de ubicación.
  • Habilita el aprovisionamiento automático de nodos para administrar y escalar automáticamente 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 del clúster. Según tu modelo de adopción de la actualización, puedes inscribir tu clúster en los canales disponibles de GKE.

Si deseas 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 permiso de actualización definido, GKE respeta que las cargas de trabajo por lotes de larga duración no se interrumpen por mantenimiento hasta que se completan.

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

Administra el ciclo de vida de los trabajos

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

Un trabajo crea uno o más pods y continúa reintentando la ejecución de estos hasta que una cantidad específica de pods finaliza de forma correcta. A medida que los Pods se completan, el trabajo realiza un seguimiento de las finalizaciones exitosas. 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 en función del índice del pod. Los Pods de un trabajo obtienen un índice de finalización asociado. Si borras un trabajo, se limpiarán los Pods que creó. Si suspendes un trabajo, se borrarán sus Pods activos hasta que se reanude el trabajo.
Configura CronJobs para acciones programadas normales 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 interrupción, la expulsión iniciada por la API o la expulsión basada en taints donde la de los Pods que no tienen una tolerancia para el efecto de taint NoExecute se expulsan. Obtén más información sobre cómo controlar las fallas de los Pods recuperables y que no se pueden reintentar con la política de fallas de Pods.
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 contiene un pod con la anotación cluster-autoscaler.kubernetes.io/safe-to-evict.

Para obtener más información, consulta Considera 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 cuando se administran instancias múltiples:

Recomendación Recursos
Usa espacios de nombres para administrar el aislamiento de los usuarios Puedes separar cada usuario y sus recursos de Kubernetes en sus propios espacios de nombres.
Usa políticas para aplicar el aislamiento de usuarios Define políticas para restringir el acceso a la API, establecer cuotas, restringir el uso de recursos y restringir lo que pueden hacer los contenedores. El alcance de estas políticas se limita a los espacios de nombres.
Configura 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 de cada usuario por espacio de nombres.

Controla el acceso a la plataforma de 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.

Configura el aislamiento de red del clúster Usa clústeres privados en los que el extremo del plano de control y los nodos trabajadores puedan tener direcciones IP internas. También puedes cambiar el aislamiento del clúster para los clústeres públicos existentes que usan Private Service Connect.

Para obtener más información, consulta clústeres públicos y cambia el aislamiento de clústeres.

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, tus cargas de trabajo pueden necesitar un mayor aislamiento. Controla la programación con taints de nodo para separar físicamente a las instancias en grupos de nodos mediante taints de nodo 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 en cada usuario, poner en cola los trabajos entrantes y procesarlos en el orden en que se recibieron.

En la siguiente tabla, se enumeran las recomendaciones clave cuando se administran las colas y el uso compartido legítimo entre cargas de trabajo por lotes:

Recomendación Recursos
Usa Kueue

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

  • Cuando un trabajo debe esperar
  • 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, mediante la eliminación del Pod

Para obtener información sobre cómo implementar un sistema de cola 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 los conceptos de Kueue.

Almacenamiento, rendimiento y rentabilidad

El uso eficiente de nuestros recursos de procesamiento y almacenamiento de GKE puede reducir los costos. Una estrategia es redimensionar y configurar las 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 la optimización del rendimiento:

Recomendación Recursos
Usa discos persistentes de Compute Engine

Te recomendamos usar las siguientes opciones de configuración 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 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.
Define 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 administrados, 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 parámetros de ajuste para tu carga de trabajo

Te recomendamos usar las siguientes configuraciones:

  • Personaliza la configuración de tu sistema de nodos para tu carga de trabajo. Por ejemplo, configura los valores mínimo, predeterminado y máximo del búfer de recepción del socket TCP. Usa la configuración del sistema de nodos.
  • Habilita el sondeo de disponibilidad mediante 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 los Subprocesos múltiples simultáneos.
Optimiza las herramientas de redes y la latencia 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 cargas de trabajo con acoplamiento alto y de alto rendimiento en las que la baja latencia entre 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 Google Cloud Reservations 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 el uso máximo.
Usa el traspaso de imágenes

Usa la transmisión de imágenes para extraer imágenes de contenedor GKE transmite datos desde 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.

Monitoring

GKE está integrado en las 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 cuando habilitas y usas 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 para los clústeres de GKE de forma predeterminada. Te recomendamos que uses la recopilación administrada para eliminar la complejidad de configurar y mantener los servidores de Prometheus.

Si deseas obtener más información, consulta Servicio administrado 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?