Conceptos de escalabilidad de clústeres

Completado

Escasez de nodos

En la clave spec.containers.resources de un archivo YAML de pod, se define el número de recursos que requiere el pod. Después de crear un pod dentro de un nodo, Kubernetes asigna automáticamente ese número especificado de recursos al pod para que se ejecute con la cantidad de potencia que necesita.

Un solo nodo es una sola máquina virtual (VM) que tiene una cantidad limitada de recursos disponibles para pods, como CPU y RAM. No se puede poner en marcha un número infinito de pods en un nodo. Cuando un nodo no cumple los requisitos necesarios para el recurso del pod, el pod compite con los recursos especificados para los recursos del nodo, lo que provoca el colapso del nodo. El pod permanece en un estado Pendiente y no está programado para ningún nodo hasta que haya suficientes recursos disponibles.

Escalabilidad de clústeres

Para evitar el colapso de nodos, el operador debe escalar horizontalmente el clúster y agregar más máquinas virtuales al grupo de nodos. Puede realizar el escalado de clústeres manual mediante el comando az aks scale de la CLI de Azure. También puede usar Azure Portal para escalar manualmente el clúster. Inicie sesión en el portal y seleccione el clúster de Azure Kubernetes Service (AKS). En Configuración, seleccione Grupos de nodos. Seleccione el grupo de nodos que desea escalar y, a continuación, seleccione Escalar grupo de nodos.

El escalado manual puede ser abrumador, especialmente para clústeres con demanda incoherente y fluctuante. Cuando el número de pods fluctúa constantemente, debe supervisarlo constantemente para pods no programados y realizar los ajustes necesarios en tiempo real.

Escalador automático de clúster

En AKS, la herramienta escalador automático del clúster automatiza el proceso de escalado de clústeres. Al habilitarlo en el clúster de AKS, busca pods no programados con restricciones de recursos y aumenta automáticamente el número de nodos para cumplir los requisitos.

Diagrama que muestra cómo funciona el escalador automático de clúster.

El escalador automático de clústeres también puede reducir el número de nodos de un clúster si hay capacidad de clúster sin usar durante una cantidad específica de tiempo. Cuando se cumple esta condición, el escalador automático se acordona (hace que el nodo no esté disponible para la programación de nuevas cargas de trabajo) y purga (mueve las cargas de trabajo existentes a otro nodo) el nodo. Como resultado, todos los pods programados en ese nodo se mueven de forma segura a otros nodos. También garantiza que no se programan otros pods durante el proceso. A continuación, quita el nodo del grupo.

Hay algunas situaciones en las que el escalador automático de clústeres no quitará el nodo ya que algunos pods no se pueden mover fuera de ese nodo. Entre estas situaciones se incluyen las siguientes:

  • Un pod se crea directamente con un archivo YAML y no está enlazado a ningún controlador como Deployments o ReplicaSets.
  • El presupuesto de interrupciones de pods (PDB) es demasiado restrictivo y no permite que la cantidad de pods sea menor que el umbral definido.
  • El pod tiene un selector de nodos para ese nodo determinado o una afinidad de nodo que impide que se mueva a otro lugar.

Cuando se habilita el escalado automático, el escalado manual de clústeres está deshabilitado.

Comprobación de conocimientos

1.

¿Cómo es diferente el escalador automático del clúster de HPA?

2.

¿Por qué es necesario el escalador automático de clústeres en un entorno de producción?

3.

¿En cuál de estas situaciones el clúster no puede quitar un nodo?