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 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:
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:
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:
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 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 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 |
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, es posible que tus cargas de trabajo necesiten un aislamiento más sólido. Controla la programación con taints de nodo para separar físicamente a los usuarios en grupos de nodos con 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:
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:
|
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:
|
Especifica parámetros de ajuste para tu carga de trabajo | Te recomendamos usar las siguientes configuraciones:
|
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:
|
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. |
Supervisión
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?
- Aprende a implementar un sistema por lotes con Kueue
- Observa las prácticas recomendadas para ejecutar aplicaciones de Kubernetes con optimización de costos en GKE