En esta página se explica cómo asegurarse de que puede usar estrategias de actualización de nodos para hacer cambios en los nodos de su clúster. Te recomendamos que verifiques si tu proyecto tiene suficientes recursos para actualizar tus grupos de nodos estándar de Google Kubernetes Engine (GKE) en función de la estrategia que elijas.
Recursos necesarios para actualizar nodos
Es posible que las actualizaciones de nodos requieran que GKE cree temporalmente nodos adicionales, en función de la estrategia y la configuración de nodos que haya elegido. Por este motivo, es posible que GKE requiera recursos adicionales para actualizar un grupo de nodos.
Todos los nodos que crea GKE, incluidos los que se usan para las actualizaciones, están sujetos a la cuota de recursos de tu proyecto, a la disponibilidad de recursos y a la capacidad de reserva de los grupos de nodos con afinidad de reserva específica.
Te recomendamos que verifiques que tienes recursos suficientes si tienes requisitos especiales de tipo de máquina y restricciones de capacidad. Es posible que tengas que configurar una estrategia que requiera menos recursos para asegurarte de que puedes actualizar tus nodos o tomar otras medidas, como crear una reserva. Para obtener más información, consulta Actualizar en un entorno con recursos limitados.
Recursos necesarios para las distintas estrategias de actualización
En las siguientes secciones se describen los recursos adicionales que se necesitan para usar las estrategias de actualización disponibles. Si tienes problemas con la actualización, consulta las operaciones de actualización y sigue las instrucciones para resolver los errores de actualización.
Recursos para las actualizaciones con sobreaprovisionamiento
Las actualizaciones de aumento son la estrategia de actualización de nodos predeterminada. Dado que la función de sobreaprovisionamiento para actualizaciones crea máquinas virtuales adicionales (si maxSurge
es superior a cero) antes de desviar y eliminar nodos antiguos, las actualizaciones pueden fallar si el proyecto no cuenta con recursos suficientes.
Si los recursos disponibles son inferiores al número de nodos especificado en maxSurge
, el número de actualizaciones en paralelo será inferior a la suma de maxSurge
y maxUnavailable
. Si no tienes capacidad adicional, consulta cómo hacer una actualización en un entorno con recursos limitados.
En la siguiente tabla, se incluyen ejemplos que presentan diferentes comportamientos de actualización:
Configuración de actualización | Número 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, puesto que no es posible activar nodos adicionales y la configuración de actualización prohíbe reiniciar los que ya existen. GKE sigue intentando actualizar automáticamente hasta que la operación se complete 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 temporalmente el número de nodos de 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 has configurado tu grupo de nodos para que use esta estrategia, configura las actualizaciones de picos si necesitas desbloquear las actualizaciones. Cuando configures esta estrategia, asegúrate de configurar los parámetros de actualización de picos que funcionen con los recursos disponibles de los nodos del grupo de nodos. Para obtener más información, consulta la sección anterior Recursos para las actualizaciones de subida.
Comprobar si hay errores relacionados con los recursos en las operaciones de actualización
Si quieres obtener más información sobre las operaciones de actualización, saber si no se realizaron y por qué, puedes comprobar los objetos de las operaciones de actualización. Para ello, 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"
Haz los cambios siguientes:
PROJECT_ID
: el ID de tu proyecto de Google Cloud .COMPUTE_ZONE
: la zona de Compute Engine de tu clúster.CLUSTER_NAME
: el nombre de tu clúster.
Si la actualización más reciente ha fallado debido a una cuota de recursos insuficiente, el resultado será 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 error se debe a que la reserva era insuficiente, el resultado será 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 error se debe a que la capacidad era insuficiente, verás mensajes de error de disponibilidad de recursos.
Solucionar errores de actualización
Si la actualización no se ha realizado porque los recursos no eran suficientes, prueba a seguir estos pasos:
- Plantéate una estrategia de actualización que consuma menos recursos. Si utilizas actualizaciones azul-verde, considera la posibilidad de usar actualizaciones de picos.
- Comprueba si hay recursos de Compute Engine en tu proyecto que consuman recursos y ya no sean necesarios. Si hay alguno, elimínalo y vuelve a intentar la actualización.
- Si con los dos primeros pasos no se ha desbloqueado la actualización, solicita un aumento de la cuota o incrementa el tamaño de la reserva.
- Si trabajas en un entorno con recursos limitados, por ejemplo, con requisitos especiales de tipo de máquina y restricciones de capacidad, consulta la siguiente sección para saber cómo desbloquear las actualizaciones.
Actualizar en un entorno con recursos limitados
Si Google Cloud tiene una capacidad limitada para un recurso específico (por ejemplo, GPUs o TPUs) que esté usando tu grupo de nodos, te recomendamos que uses una reserva para asegurarte de que tienes recursos suficientes. Si no tienes recursos suficientes, es posible que no puedas actualizar tus nodos hasta que tengas acceso a más capacidad, a menos que tengas una reserva para tu capacidad actual.
Si no puedes obtener más capacidad, no podrás usar las actualizaciones azul-verde. En el caso de las actualizaciones con compensación,
maxSurge
se necesitan nodos adicionales. Con,
maxUnavailable
,
si la capacidad no procede de una reserva, GKE libera temporalmente la capacidad del nodo al actualizarlo, lo que significa que, si hay capacidad limitada, corres el riesgo de perderla.
Sigue estas instrucciones en función de si tienes una reserva para el grupo de nodos que quieres actualizar.
Mejorar la versión con capacidad limitada sin reserva
Si no tienes una reserva para los nodos de tu pool de nodos, te recomendamos que crees una. Sin embargo, si no puedes hacerlo, te recomendamos que utilices las actualizaciones de aumento con la configuración predeterminada de maxSurge=1;maxUnavailable=0
. Con esta configuración, no corres el riesgo de perder capacidad. Sin embargo, las actualizaciones de picos solo crean un nodo de pico si hay capacidad disponible. Por lo tanto, si no hay capacidad disponible, las actualizaciones pueden tardar más y el grupo de nodos podría permanecer en un estado parcialmente actualizado hasta que se asegure la capacidad para actualizar cada nodo.
Te recomendamos que crees una reserva o aumentes el tamaño de una reserva que ya tengas.
Actualizar con capacidad limitada mediante una reserva
Si tienes una reserva para los nodos de tu grupo de nodos, puedes actualizar tus grupos de nodos en un entorno con limitaciones de capacidad. Para ello, ajusta la configuración de la actualización gradual para mejorar la velocidad y la fiabilidad.
Si tienes capacidad adicional en la reserva, puedes usar maxSurge
para crear nodos de aumento. Define maxSurge
en función del número de nodos que quieras interrumpir a la vez y de la capacidad adicional que tengas. Por ejemplo, defina maxSurge=1;maxUnavailable=0
si solo quiere interrumpir un nodo a la vez o si solo tiene 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 cada vez y lo vuelve a crear para actualizarlo.
Siguientes pasos
- Estrategias de actualización de nodos
- Más información sobre la cuota de recursos
- Más información sobre el consumo de reservas