Equilibrio entre la disponibilidad del servicio y el costo al sincronizar nodos gestionados en pools de nodos

Descubra cómo equilibrar la disponibilidad y el costo del servicio al sincronizar nodos gestionados en pools de nodos que ha creado con Kubernetes Engine (OKE).

Al sincronizar nodos gestionados en pools de nodos para reemplazar volúmenes de inicio o terminar y reemplazar nodos, Kubernetes Engine automáticamente conecta los nodos existentes para que no estén disponibles y drena los nodos (mediante la configuración de Cordón y vaciado especificada para el pool de nodos).

Puede adaptar el comportamiento del motor de Kubernetes para cumplir sus propios requisitos de disponibilidad y costo del servicio de la siguiente manera:

  • Al sustituir volúmenes de inicio, y al terminar y sustituir nodos, puede especificar el número de nodos que permiten que no estén disponibles durante la operación (denominado maxUnavailable). Cuanto mayor sea el número de nodos que permita que no estén disponibles, más nodos podrá actualizar Kubernetes Engine en paralelo sin aumentar los costos. Sin embargo, cuanto mayor sea el número de nodos que permita que no estén disponibles, mayor será la disponibilidad del servicio.
  • Al finalizar y sustituir nodos, puede especificar el número de nodos adicionales que se van a permitir temporalmente durante la operación de actualización (denominado maxSurge). Cuanto mayor sea el número de nodos adicionales que permita, más nodos podrá actualizar Kubernetes Engine en paralelo sin comprometer la disponibilidad del servicio. Sin embargo, cuanto mayor sea el número de nodos adicionales que permita, mayor será el costo.

Para maxUnavailable y maxSurge, puede especificar el número permitido de nodos como un número entero o como un porcentaje del número de nodos que se muestra en la propiedad Recuento de nodos del pool de nodos en la consola (la propiedad Tamaño del pool de nodos en la API).

Al terminar y sustituir nodos, si no especifica explícitamente los números permitidos para nodos adicionales (maxSurge) y nodos no disponibles (maxUnavailable), se aplica lo siguiente:

  • Si no especifica un valor para maxSurge o maxUnavailable, maxSurge se define por defecto en 1 y maxUnavailable se define por defecto en 0.
  • Si solo especifica un valor para maxSurge, maxUnavailable se define por defecto en 0.
  • Si solo especifica un valor para maxUnavailable, maxSurge se define por defecto en 1.
  • No puede especificar 0 como el número permitido para los nodos adicionales (maxSurge) y los no disponibles (maxUnavailable).

Al sustituir volúmenes de inicio, si no especifica explícitamente un número permitido para los nodos no disponibles (maxUnavailable), se aplica lo siguiente:

  • Si no especifica un valor para maxUnavailable, maxUnavailable se define por defecto en 1.
  • No puede especificar 0 como el número permitido para maxUnavailable.

Tenga en cuenta lo siguiente:

  • Al final de la operación, el número de nodos del pool de nodos vuelve al número especificado por la propiedad Recuento de nodos del pool de nodos que se muestra en la consola (la propiedad Tamaño del pool de nodos en la API).
  • Al terminar y sustituir nodos, si especifica un valor para maxSurge durante la operación, su arrendamiento debe tener suficiente cuota para el número de nodos adicionales que especifique.
  • Al especificar un valor para maxUnavailable, si el pool de nodos no puede hacer que ese número de nodos no esté disponible (por ejemplo, debido a un presupuesto de interrupción del pod), la operación falla.
  • Si introduce un porcentaje como valor de maxUnavailable, Kubernetes Engine redondea al alza el porcentaje al entero más cercano al calcular el número permitido de nodos.
  • Al actualizar pools de nodos grandes, tenga en cuenta que los valores que especifique para maxUnavailable pueden provocar tiempos de ciclo inaceptablemente largos. Por ejemplo, si especifica 1 como valor para maxUnavailable al sincronizar los nodos de un pool de nodos con 1000 nodos, Kubernetes Engine puede tardar varios días en sincronizar todos los nodos del pool de nodos. Si la operación de sincronización del nodo no se completa en un plazo de 30 días, el estado de la solicitud de trabajo asociada se establece en Fallo. Envíe otra solicitud de sincronización de nodo para reanudar la operación.
  • Al sincronizar nodos gestionados en un pool de nodos para reducir verticalmente el pool de nodos, tenga en cuenta que el número de nodos del pool de nodos se puede reducir al número especificado como valor para maxUnavailable. Como resultado, las operaciones posteriores podrían reducir el número de nodos disponibles por debajo de lo que pretendía, lo que comprometería la disponibilidad del servicio y afectaría a las cargas de trabajo. En tales situaciones, continúe con cuidado y considere la posibilidad de reducir el valor maxUnavailable.