Asegurar los recursos para las actualizaciones de nodos


En esta página, se explica cómo asegurarte de que puedas usar estrategias de actualización de nodos para realizar cambios en los nodos de tu clúster. Recomendamos verificar si tu proyecto tiene recursos suficientes para actualizar tus grupos de nodos de Google Kubernetes Engine (GKE) Standard según la estrategia que elijas.

Recursos necesarios para las actualizaciones de nodos

Es posible que las actualizaciones de nodos requieran que GKE cree nodos adicionales de forma temporal, según la estrategia y la configuración de nodos que elijas. Debido a esto, GKE podría requerir recursos adicionales para una actualización del grupo de nodos.

Todos los nodos que crea GKE, incluidos los que se usan para actualizaciones, están sujetos a lascuota de recursos de tu proyecto,disponibilidad de recursos y capacidad de reserva, para grupos de nodos con afinidad de reserva específica.

Te recomendamos que verifiques si tienes recursos adecuados si tienes requisitos especiales de tipo de máquina y limitaciones de capacidad. Es posible que debas configurar una estrategia que requiera menos recursos para asegurarte de que puedas actualizar tus nodos o realizar otra acción, como crear una reserva. Para obtener más información, consulta Actualiza en un entorno con recursos restringidos.

Recursos necesarios para diferentes estrategias de actualización

En las siguientes secciones, se describen los recursos adicionales necesarios para usar las estrategias de actualización disponibles. Si tienes problemas de actualización, verifica las operaciones de actualización y sigue las instrucciones para resolver errores de actualización.

Recursos para las actualizaciones de aumento

Las actualizaciones de aumento son la estrategia predeterminada de actualización de nodos. Debido a que las actualizaciones de aumento crean VMs adicionales (si maxSurge se establece en un valor mayor que cero) antes de desviar y borrar los nodos antiguos, las actualizaciones pueden fallar si tu proyecto no funciona tengas suficientes recursos.

Si los recursos disponibles son menores que la cantidad de nodos especificada en maxSurge, la cantidad de actualizaciones paralelas es menor que maxSurge más maxUnavailable. Si no tienes capacidad adicional, consulta cómo actualizar en un entorno con recursos limitados.

En la siguiente tabla, se describen ejemplos para demostrar diferentes comportamientos de actualización:

Configuración de actualización Cantidad de nodos adicionales permitidos por los recursos disponibles Resultado
maxSurge: 5 maxUnavailable: 0 5 Se actualizan 5 nodos en paralelo.
maxSurge: 5 maxUnavailable: 0 2 Se actualizan solo 2 nodos en paralelo.
maxSurge: 5 maxUnavailable: 0 0 La actualización falla, ya que no se pueden activar nodos adicionales y la configuración de actualización no permite reiniciar los existentes. GKE seguirá intentando la actualización automática hasta que la operación se realice correctamente.
maxSurge: 5 maxUnavailable: 1 5 Se actualizan 6 nodos en paralelo y se garantiza que el grupo de nodos pierda solo un nodo de forma temporal debido a la actualización.
maxSurge: 5 maxUnavailable: 1 2 Se actualizan solo 3 nodos en paralelo y se garantiza que al grupo de nodos no le falte más de un nodo debido a la actualización.
maxSurge: 5 maxUnavailable: 1 0 Se actualiza solo 1 nodo a la vez. Para ello, se vuelve a crear cada nodo con un método de actualización progresiva.

Recursos para las actualizaciones azul-verde

Las actualizaciones azul-verde duplican de forma temporal la cantidad de nodos en un grupo de nodos, lo que significa que tu grupo de nodos necesita temporalmente el doble de recursos. Si no tienes suficientes recursos disponibles y configuraste tu grupo de nodos para usar esta estrategia, configura las actualizaciones de aumento si necesitas desbloquear las actualizaciones. Cuando configures esta estrategia, asegúrate de configurar parámetros de actualización de aumento que funcionen con los recursos disponibles para los nodos del grupo de nodos. Para obtener más información, consulta la sección anterior Recursos para actualizaciones de aumento.

Verifica las operaciones de actualización en busca de fallas relacionadas con los recursos

Puedes obtener más información sobre las operaciones de actualización, ver si fallaron y conocer el motivo de los errores. Para ello, verifica los objetos de las operaciones de actualización. Para enumerar los objetos de las operaciones de actualización, ejecuta el siguiente comando:

gcloud container operations list \
    --filter="STATUS=DONE AND TYPE=UPGRADE_NODES AND targetLink:https://container.googleapis.com/v1/projects/PROJECT_ID/zones/COMPUTE_ZONE/clusters/CLUSTER_NAME"

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto de Google Cloud.
  • COMPUTE_ZONE: Es la zona de Compute Engine para tu clúster.
  • CLUSTER_NAME: El nombre de tu clúster.

Si la actualización más reciente falló debido a una cuota de recursos insuficiente, el resultado tendrá un aspecto similar al siguiente:

gcloud container operations describe operation-1234567891234-1abc2d3e
detail: "Insufficient quota to satisfy the request: waiting on IG: instance https://www.googleapis.com/compute/v1/projects/my-project-123/zones/us-central1-a/instances/gke-my-cluster-default-pool-123ab45c-de67\
  \ is still CREATING. Last attempt errors: [QUOTA_EXCEEDED] Instance 'gke-my-cluster-default-pool-123ab45c-de67'\
  \ creation failed: Quota 'IN_USE_ADDRESSES' exceeded.  Limit: 50.0 in region us-central1.\
...

Si el motivo fue una reserva insuficiente, el resultado tendrá un aspecto similar al siguiente:

gcloud container operations describe operation-1234567891234-1abc2d3e
detail: "Reservation does not have enough resources for the request: waiting on IG:\
  \ instance https://www.googleapis.com/compute/v1/projects/my-project-123/zones/us-central1-a/instances/gke-my-cluster-default-pool-123ab45c-de67\
  \ is still CREATING. Last attempt error: [CONDITION_NOT_MET] Instance 'gke-my-cluster-default-pool-123ab45c-de67'\
  \ creation failed: Specified reservation 'foo' does not have available resources\
  \ for the request."

Si el motivo fue una capacidad insuficiente, verás mensajes de error de disponibilidad de recursos.

Resuelve errores de actualización

Si la actualización falló debido a que los recursos son insuficientes, sigue estos pasos:

  1. Considera una estrategia de actualización que requiere menos recursos. Si usas actualizaciones azul-verde, considera las actualizaciones de aumento.
  2. Revisa si el proyecto tiene recursos innecesarios de Compute Engine que consuman la cuota y no sean necesarios. Si encuentras alguno, quítalo y vuelve a intentar la actualización.
  3. Si los dos primeros pasos no desbloquean la actualización, solicita un aumento de la cuota o aumenta el tamaño de la reserva específica.
  4. Si operas en un entorno con recursos limitados, por ejemplo, requisitos de tipo de máquina especial y restricciones de capacidad, consulta la siguiente sección a fin de conocer los pasos para desbloquear las actualizaciones.

Actualiza en un entorno con recursos limitados

Si Google Cloud tiene capacidad limitada para un recurso específico (por ejemplo, GPU o TPU) que usa tu grupo de nodos, te recomendamos que usas una reserva para asegurarte de tener los recursos adecuados. Si no tienes recursos adecuados, es posible que no puedas actualizar los nodos hasta que puedas acceder a más capacidad, en caso de que no tengas una reserva para tu capacidad existente.

Si no puedes obtener capacidad adicional, no puedes usar las actualizaciones azul-verde. Para las actualizaciones de aumento, maxSurge requiere nodos adicionales. Con maxUnavailable, si la capacidad no proviene de una reserva, GKE libera de forma temporal la capacidad del nodo cuando lo actualiza, lo que significa que, si hay capacidad limitada, corres el riesgo de perder la capacidad.

Usa la siguiente guía, según si tienes una reserva para tu grupo de nodos que se debe actualizar.

Actualiza con capacidad limitada sin una reserva

Si no tienes una reserva para los nodos de tu grupo de nodos, te recomendamos crear una reserva. Sin embargo, si no puedes, te recomendamos que uses las actualizaciones de aumento con la configuración predeterminada de maxSurge=1;maxUnavailable=0. Con esta configuración, no corres el riesgo de perder la capacidad existente. Sin embargo, las actualizaciones de aumento solo crean un nodo de aumento si la capacidad está disponible. Por lo tanto, si no hay capacidad disponible, las actualizaciones pueden tardar más y tu grupo de nodos puede permanecer en un estado actualizado de forma parcial hasta que se proteja la capacidad para actualizar cada nodo.

Te recomendamos que crees una reserva o aumentes el tamaño de una reserva existente.

Actualiza con capacidad limitada con una reserva

Si tienes una reserva para los nodos de tu grupo de nodos, puedes actualizar tus grupos de nodos en un entorno con capacidad limitada y ajustar la configuración de actualización de aumento para obtener velocidad y confiabilidad.

Si tienes capacidad adicional en la reserva, puedes usar maxSurge para crear nodos de aumento. Establece maxSurge según la cantidad de nodos que deseas interrumpir a la vez y la capacidad adicional que tienes. Por ejemplo, establece maxSurge=1;maxUnavailable=0 si solo quieres interrumpir un nodo a la vez o si solo tienes capacidad para crear un nodo adicional.

Si no tienes capacidad adicional, puedes usar maxUnavailable con una configuración como maxSurge=0;maxUnavailable=1, ya que la capacidad está reservada. Esta configuración interrumpe un nodo por vez y se vuelve a crear el nodo para actualizarlo.

¿Qué sigue?