Escalador automático de clúster

En la versión 1.8 de clústeres de Anthos alojados en VMware (GKE On-Prem), el ajuste de escala automático de clústeres para grupos de nodos en clústeres de usuario está disponible en versión de vista previa. El ajuste de escala automático del clúster cambia el tamaño de la cantidad de nodos en un grupo de nodos determinado según las demandas de tus cargas de trabajo. No es necesario que agregues o quites nodos de forma manual ni que sobreaprovisiones tus grupos de nodos. Simplemente especifica un tamaño mínimo y máximo para el grupo de nodos y deja que los cambios necesarios se hagan automáticamente.

Si se borran o mueven recursos mientras se realiza el ajuste de escala automático del clúster, es posible que las cargas de trabajo sufran interrupciones transitorias. Por ejemplo, si tu carga de trabajo es un solo pod y su nodo actual se borra, el pod se reprograma en un nodo diferente. Antes de habilitar el ajuste de escala automático, diseña tus cargas de trabajo para tolerar posibles interrupciones y asegúrate de que no se interrumpan los Pods críticos.

El ajuste de escala automático del clúster está inhabilitado de forma predeterminada para los grupos de nodos. Puedes habilitar o inhabilitar el ajuste de escala automático en los grupos de nodos del clúster de usuario, ya sea durante la creación del clúster o después de su creación, mediante el comando gkectl update.

Cómo funciona el ajuste de escala automático de clústeres

El escalador automático del clúster funciona por grupo de nodos. Cuando configuras un grupo de nodos con el escalador automático del clúster, debes especificar un tamaño mínimo y máximo.

El escalador automático del clúster aumenta o disminuye el tamaño del grupo de nodos automáticamente según las solicitudes de recursos (no el uso real) de los pods que se ejecutan en los nodos del grupo. Periódicamente, el escalador verifica el estado de los pods y los nodos, y realiza las acciones correspondientes:

  • Si no es posible programar pods porque el grupo no tiene nodos suficientes, el escalador automático del clúster agrega los nodos necesarios (siempre y cuando no se haya alcanzado el tamaño máximo configurado para el grupo).
  • Si sobra capacidad de nodos y resulta posible programar todos los pods con una cantidad menor de nodos en el grupo, el escalador automático del clúster quita los nodos sobrantes (siempre y cuando no se haya alcanzado el tamaño mínimo configurado para el grupo). Si el nodo no se puede desviar correctamente, se fuerza su finalización y el disco administrado y administrado de Kubernetes se desconecta de forma segura.

Si tus pods solicitan una cantidad insuficiente de recursos (o no cambian los valores predeterminados, que podrían no alcanzar) y tus nodos sufren escasez, el escalador automático del clúster no corrige la situación. Para ayudar a que el escalador automático del clúster funcione de la manera más precisa posible, debes realizar solicitudes de recursos explícitas para todas tus cargas de trabajo.

Criterios operativos

El escalador automático del clúster actúa según las siguientes suposiciones cuando cambia el tamaño de un grupo de nodos:

  • Todos los Pods replicados se pueden reiniciar en otro nodo, lo que podría provocar una interrupción breve. Si los servicios no pueden tolerar interrupciones, no se recomienda usar el escalador automático del clúster.
  • Los usuarios o administradores no controlan los nodos de forma manual. Si el escalador automático del clúster está activado para un grupo de nodos, no puedes anular el campo replicas del grupo de nodos.
  • Todos los nodos de un grupo tienen el mismo conjunto de etiquetas.
  • El escalador automático del clúster considera el costo relativo de los tipos de instancia en los diversos grupos de nodos y, luego, intenta expandir el grupo de nodos de una manera que genere el menor desperdicio posible.

Tamaño mínimo y máximo del grupo de nodos

Puedes especificar el tamaño mínimo y máximo de cada grupo de nodos del clúster con los valores autoscaling.minReplicas y autoscaling.maxReplicas. El escalador automático de clústeres toma decisiones de ajuste de escala dentro de estos límites. El valor replicas del grupo de nodos, que es el número predeterminado de nodos sin ajuste de escala automático, debe ser mayor que el valor minReplicas especificado y menor que el valor maxReplicas especificado. Cuando habilitas el ajuste de escala automático, el escalador automático del clúster espera hasta que se necesite un nodo nuevo en el grupo o hasta que un nodo pueda borrarse de forma segura del grupo.

Considera la programación y la interrupción de pods

Cuando reduce la escala, el escalador automático del clúster respeta las reglas de programación y expulsión establecidas para los pods. Estas restricciones pueden impedir que el escalador automático borre un nodo. Si un nodo tiene un pod con alguna de las siguientes condiciones, es posible que no se borre.

  • Pods con reglas de afinidad o antiafinidad que impiden las reprogramaciones
  • Pods con almacenamiento local
  • El pod no se encuentra bajo la administración de un controlador, como Deployment, StatefulSet, Job o ReplicaSet.
  • El Pod se encuentra en el espacio de nombres de kube-system y no tiene un PodDisruptionBudget.

Un PodDisruptionBudget de una aplicación también puede evitar el ajuste de escala automático. Si borrar nodos provoca que se supere el presupuesto, el clúster no reducirá la escala verticalmente.

Para obtener más información sobre el escalador automático del clúster y la prevención de interrupciones, consulta las siguientes dudas en las Preguntas frecuentes sobre el escalador automático del clúster:

Limitaciones

El escalador automático de clúster tiene las siguientes limitaciones:

  • No se permite reducir la escala a cero réplicas en el grupo de nodos.
  • En cualquier momento, la suma de los nodos trabajadores del clúster de usuario debe ser de 3 como mínimo. Esto significa que la suma de los valores minReplicas de todos los grupos de nodos con ajuste de escala automático y la suma de los valores replicas de todos los grupos de nodos sin ajuste de escala automático debe ser de 3 al menos.
  • En ocasiones, el escalador automático del clúster no puede reducir la escala por completo, y sigue existiendo un nodo de más después de reducir la escala. Esto puede ocurrir cuando los pods obligatorios del sistema están programados en nodos diferentes, ya que no hay ningún activador que haga que esos pods se transfieran a otro nodo. Consulta Tengo un par de nodos con baja utilización, pero el ajuste de escala no los quita. ¿Por qué? Como solución alternativa a esta limitación, puedes configurar un presupuesto de interrupción de pods.
  • No se admite la programación personalizada con filtros alterados.
  • Los nodos no se escalarán verticalmente si los Pods tienen un valor PriorityClass inferior a -10. Obtén más información en ¿Cómo funciona el escalador automático del clúster con la prioridad y la interrupción del pod?