En esta página se explica cómo colocar cargas de trabajo en una serie de máquinas de Compute Engine específica para optimizar el rendimiento de las cargas de trabajo en los clústeres Autopilot de Google Kubernetes Engine (GKE).
Asegúrate de que conoces los siguientes aspectos:
- Series de máquinas y casos prácticos de Compute Engine
- Requisitos a nivel de kernel para tus aplicaciones
Cómo funciona la selección de series de máquinas
Puedes añadir un cloud.google.com/machine-family
selector de nodos a la especificación de tu pod para que Autopilot asigne hardware específico de Compute Engine a ese pod. Por ejemplo, puedes elegir la serie de máquinas C3 para los pods que necesiten más potencia de CPU o la serie de máquinas N1 para los pods que necesiten más memoria.
Para ejecutar tu carga de trabajo de forma óptima, Autopilot aprovisiona uno de los tipos de máquinas predefinidos de la serie de máquinas que hayas seleccionado.
Además de ofrecer un rendimiento óptimo de los pods, elegir una serie de máquinas específica ofrece las siguientes ventajas:
Uso eficiente de los nodos: de forma predeterminada, Autopilot optimiza el uso de los recursos de los nodos programando en cada nodo tantos pods como sea posible que soliciten la misma serie de máquinas. Esta estrategia optimiza el uso de recursos en el nodo, lo que mejora la relación precio-rendimiento. Si tu carga de trabajo necesita acceder a todos los recursos del nodo, puedes configurarla para que solicite un pod por cada nodo.
Cargas de trabajo con picos: puedes configurar pods para que aprovechen la capacidad de recursos sin usar del nodo. Para ello, define límites de recursos superiores a tus solicitudes. Para obtener más información, consulta Configurar el bursting de pods en GKE.
Planifica un nodo dedicado para cada pod
Si tienes cargas de trabajo que requieren mucha CPU y necesitan un acceso fiable a todos los recursos del nodo, puedes configurar tu pod para que Autopilot coloque un pod que solicite una serie de máquinas en su propio nodo.
Se recomienda usar nodos dedicados por pod cuando ejecutes cargas de trabajo a gran escala que requieran un uso intensivo de la CPU, como cargas de trabajo de entrenamiento de IA o aprendizaje automático, o cargas de trabajo por lotes de computación de alto rendimiento (HPC).
Elegir entre la programación de varios pods y la de un solo pod
Sigue estas directrices para elegir un comportamiento de programación de pods en función de tus requisitos:
- Si tienes pods que pueden compartir recursos de computación con otros pods o quieres optimizar los costes mientras ejecutas pods en hardware especializado, usa el comportamiento de programación predeterminado de varios pods por nodo.
- Si tienes pods que necesitan acceso fiable a todos los recursos de los nodos o quieres minimizar las probabilidades de que se produzcan interrupciones causadas por el uso compartido de recursos de computación, solicita un nodo dedicado para cada pod.
Precios
Compute Engine te factura la VM subyacente y el hardware conectado, además de una prima por la gestión y la escalabilidad de los nodos de Autopilot. Para obtener más información, consulta los precios de GKE.
Antes de empezar
Antes de empezar, asegúrate de que has realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando
gcloud components update
.
- Asegúrate de que tienes un clúster de Autopilot con la versión 1.30.1-gke.1396000 o una posterior. Para crear un clúster, consulta Crear un clúster de Autopilot.
Seleccionar una serie de máquinas
En esta sección se muestra cómo seleccionar una serie de máquinas de Compute Engine específica en un pod.
Guarda el siguiente archivo de manifiesto como
machine-series-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 5 memory: "25Gi" limits: cpu: 20 memory: 100Gi
Sustituye
MACHINE_SERIES
por la serie de máquinas de Compute Engine de tu pod, comoc3
. Para ver los valores admitidos, consulta la sección Series de máquinas admitidas de esta página.Despliega el pod:
kubectl apply -f machine-series-pod.yaml
Este manifiesto permite que Autopilot optimice el uso de los recursos de los nodos programando de forma eficiente otros pods que seleccionen la misma serie de máquinas en el mismo nodo si hay capacidad disponible.
Usar SSDs locales
Los pods que seleccionan una serie de máquinas pueden usar SSDs locales para el almacenamiento efímero si especificas una serie de máquinas que ofrezca SSD local. Autopilot tiene en cuenta las solicitudes de almacenamiento efímero al elegir un tipo de máquina de Compute Engine para el pod.
Para obtener más información, consulta Usar almacenamiento efímero respaldado por SSD local con clústeres de Autopilot.
Solicitar un nodo dedicado para un pod
Si tu pod tiene requisitos de rendimiento específicos, como la necesidad de acceder de forma fiable a todos los recursos de tu nodo, puedes solicitar un nodo dedicado para cada pod especificando el selector de nodos cloud.google.com/compute-class: Performance
junto con el selector de nodos de tu serie de máquinas. Esto indica a Autopilot que coloque tu pod en un nodo nuevo que use la serie de máquinas especificada y que esté dedicado a ese pod.
Este selector de nodos también impide que Autopilot programe otros pods en ese nodo.
Guarda el siguiente archivo de manifiesto como
dedicated-node-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: dedicated-node-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES cloud.google.com/compute-class: Performance containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 12 memory: "50Gi" ephemeral: "200Gi"
Sustituye
MACHINE_SERIES
por una serie de máquinas admitida que también admita la programación de un Pod por nodo. Si la serie de máquinas especificada no admite la programación de un pod por nodo, la implementación falla y se produce un error.Despliega el pod:
kubectl apply -f dedicated-node-pod.yaml
Cuando implementas este archivo de manifiesto, Autopilot hace lo siguiente:
- Asegura que el pod implementado solicite al menos los recursos mínimos del nodo optimizado para el rendimiento.
- Calcula las solicitudes de recursos totales del pod implementado y de cualquier DaemonSet del clúster.
- Aprovisiona un nodo respaldado por la serie de máquinas seleccionada.
- Modifica el manifiesto del pod con una combinación de selectores de nodos y tolerancias para asegurarse de que el pod se ejecute en su propio nodo.
Series de máquinas admitidas
El selector de machine-family
admite las siguientes series de máquinas:
Ten en cuenta que c4
es el valor predeterminado si no se especifica la serie de máquinas y si c4
está disponible en una región.
Para comparar estas series de máquinas y sus casos prácticos, consulta la comparación de series de máquinas en la documentación de Compute Engine.
Requisitos de la versión
La serie de máquinas C4D está disponible con las siguientes versiones y configuraciones:
- Tipos de máquinas C4D sin SSD local: GKE 1.33.0-gke.1439000 y versiones posteriores.
- Tipos de máquinas C4D con SSD local: GKE 1.33.1-gke.1171000 y versiones posteriores.
Compatibilidad con otras funciones de GKE
Los pods que seleccionan una serie de máquinas pueden usar las funciones y las características de GKE compatibles con esa serie de máquinas, como las siguientes:
- Spot Pods
- Pods con tiempo de ejecución ampliado (solo con nodos dedicados por pod)
- Separación de cargas de trabajo
- Reservas de capacidad
- Descuentos por compromiso de uso
Los pódcasts de actualidad y los pódcasts de larga duración se excluyen mutuamente. GKE no aplica solicitudes de recursos mínimos más altas para los pods dedicados por nodo, aunque usen la separación de cargas de trabajo.
Cómo selecciona GKE un tipo de máquina
Para seleccionar un tipo de máquina de la serie de máquinas especificada, GKE calcula las solicitudes totales de CPU, memoria y almacenamiento efímero de los pods y de los DaemonSets que se ejecutarán en el nuevo nodo. GKE redondea estos valores al tipo de máquina de Compute Engine disponible más cercano que admita todos estos totales.
Ejemplo 1: Supongamos que tienes un Deployment con cuatro réplicas que selecciona la serie de máquinas C3D. No solicitas nodos dedicados por pod. Las solicitudes de recursos de cada réplica son las siguientes:
- 500 m vCPU (0,5 vCPU)
- 1 GiB de memoria
Autopilot coloca los cuatro pods en un nodo respaldado por el tipo de máquina
c3d-standard-4
, que tiene 4 vCPUs y 16 GB de memoria.Ejemplo 2: Supongamos que tienes un pod que selecciona la serie de máquinas
C3D
y las SSD locales para el almacenamiento efímero. Solicitas un nodo dedicado para el Pod. El total de solicitudes de recursos, incluidos los DaemonSets, es el siguiente:- 12 vCPUs
- 50 GiB de memoria
- 200 GiB de almacenamiento efímero
Autopilot coloca el pod en un nodo que usa el tipo de máquina
c3d-standard-16-lssd
, que tiene 16 vCPUs, 64 GiB de memoria y 365 GiB de capacidad de SSD local.
Siguientes pasos
- Para obtener información sobre las opciones de computación que ofrece Autopilot para distintos casos prácticos, consulta Clases de computación en Autopilot.
- Despliega cargas de trabajo basadas en GPUs en Autopilot.