Ejecuta VM interrumpibles

En esta página, se proporciona una descripción general de la asistencia de VM interrumpibles en Google Kubernetes Engine.

Descripción general

Las VM interrumpibles son instancias de VM de Google Compute Engine que duran un máximo de 24 horas y no proporcionan garantías de disponibilidad. Las VM interrumpibles tienen un precio más bajo que las VM estándar de Compute Engine y ofrecen los mismos tipos de máquina y opciones.

Puedes usar VM interrumpibles en tus clústeres de GKE o grupos de nodos para ejecutar trabajos en lotes o tolerantes a errores que sean menos sensibles a la naturaleza efímera y no garantizada de las VM interrumpibles.

Para obtener más información sobre las VM interrumpibles, consulta VM interrumpibles en la documentación de Compute Engine.

Funcionamiento de las VM interrumpibles

Cuando los clústeres o grupos de nodos de GKE crean VM de Compute Engine, las VM se comportan como un grupo de instancias administrado. Las VM interrumpibles en GKE están sujetas a las mismas limitaciones que las instancias interrumpibles en un grupo de instancias administrado. Las instancias interrumpibles finalizan 30 segundos después de recibir una notificación de interrupción.

Además, se proporciona una etiqueta de Kubernetes, cloud.google.com/gke-preemptible=true, a estas VM interrumpibles. Las etiquetas Kubernetes se pueden usar en el campo de nodeSelector para programar Pods en nodos específicos.

A continuación, se muestra un selector de ejemplo para filtrar VM interrumpibles:

apiVersion: v1
kind: Pod
spec:
  nodeSelector:
    cloud.google.com/gke-preemptible: "true"

Recomendaciones

Debido a que las VM interrumpibles no tienen garantías de disponibilidad, debes diseñar tu sistema a partir de la suposición de que cualquiera o todas tus instancias de Compute Engine se pueden interrumpir y no estar disponibles. No hay garantías en cuanto al momento en que las instancias nuevas están disponibles.

Además, no hay garantía de que los Pods que se ejecutan en VM interrumpibles siempre puedan cerrarse con facilidad.

Si quieres asegurarte de que tus trabajos o cargas de trabajo se procesen incluso si no hay VM interrumpibles disponibles, puedes crear grupos de nodos interrumpibles y no interrumpibles en tu clúster.

Crea un clúster o un grupo de nodos con VM interrumpibles

Puedes usar la herramienta de línea de comandos de gcloud o GCP Console para crear un clúster o un grupo de nodos con VM interrumpibles.

gcloud

Puedes crear un clúster o un grupo de nodos con VM interrumpibles, si especificas la marca --preemptible.

Para crear un clúster con VM interrumpibles, ejecuta el siguiente comando:

gcloud beta container clusters create [CLUSTER_NAME] --preemptible

en el que [COMPUTE_ZONE] es la zona de procesamiento del clúster.

Para crear un grupo de nodos con VM interrumpibles, sigue estos pasos:

gcloud beta container node-pools create [POOL_NAME] --preemptible \
--cluster [CLUSTER_NAME]

Console

  1. Dirígete al menú de Google Kubernetes Engine en GCP Console.

    Ir al menú de Google Kubernetes Engine

  2. Haz clic en Crear clúster.

  3. Elige la plantilla Clúster estándar o una plantilla adecuada para tu carga de trabajo.

  4. Configura tu clúster como desees. Luego, haz clic en Edición avanzada para el grupo de nodos que deseas configurar.

  5. En la sección Nodos interrumpibles, selecciona Habilitar nodos interrumpibles.

  6. Haz clic en Guardar para cerrar la superposición de modificación del grupo de nodos.

  7. Haz clic en Crear.

Usa taints de nodos para evitar programar nodos de VM interrumpibles

Según tu caso práctico, es posible que quieras evitar la programación de Pods críticos en un nodo de VM interrumpibles. En esos casos, puedes usar un taint de nodo y tolerancia para evitar la programación de Pods en nodos con VM interrumpibles.

Agrega un taint de nodo para VM interrumpibles

Si quieres agregar un taint de nodo para un nodo con VM interrumpibles, ejecuta el siguiente comando:

kubectl taint nodes [NODE_NAME] cloud.google.com/gke-preemptible="true":NoSchedule

Ahora, solo los Pods que toleran el taint de nodo están programados para el nodo.

Agrega tolerancia a los Pods

Para agregar la tolerancia relevante a tus Pods, agrega lo siguiente a la especificación de tu Pod o a la especificación de la plantilla de Pod de tu objeto:

tolerations:
- key: cloud.google.com/gke-preemptible
  operator: Equal
  value: "true"
  effect: NoSchedule

Pasos siguientes

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...