Actualizaciones y cuota de los nodos

Descripción general

Todos los nodos creados están sujetos a la cuota de recursos del proyecto. Cualquier grupo de nodos creado con afinidad de reserva específica está sujeto a la capacidad de la reserva para toda la vida útil del grupo de nodos.

Debido a que las actualizaciones de aumento crean VM adicionales antes de vaciar y borrar los nodos antiguos, las actualizaciones pueden fallar si tu proyecto no tiene suficiente cuota de recursos o reserva (en este artículo, usaremos “cuota” para referirnos a ambas).

Si la cuota disponible es menor que la cantidad de nodos especificada en maxSurge, la cantidad de actualizaciones paralelas será inferior a maxSurge + maxUnavailable. Si no tienes suficiente cuota disponible para crear un solo nodo y maxUnavailable se configura como 0, fallará la actualización.

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 cuota 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.
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 una modalidad de actualización progresiva.

Comprueba la cuota

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/[ZONE]/clusters/[CLUSTER_NAME]"

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."

Resuelve errores de actualización

Si la actualización falló debido a la cuota, tienes 3 opciones:

  1. Revisa si el proyecto tiene recursos innecesarios de Compute Engine que consuman la cuota. Si encuentras alguno, quítalo y vuelve a intentar la actualización.
  2. Si con el paso 1 no se desbloqueó la actualización, solicita un aumento de cuota o aumenta el tamaño de la reserva específica.
  3. Si por algún motivo no es posible aumentar la cuota, cambia maxUnavailable a 1 para desbloquear las actualizaciones. Esta opción se debe usar solo como último recurso, ya que mantener maxUnavailable = 0 para minimizar las interrupciones ocasionadas por las actualizaciones es una práctica recomendada.

Pasos siguientes