Tutorial: Escalado de aplicaciones en Azure Kubernetes Service (AKS)

Si ha seguido los tutoriales anteriores, tiene un clúster de Kubernetes en funcionamiento y la aplicación Store Front de Azure.

En este tutorial, parte seis de siete, escala horizontalmente los pods de la aplicación, prueba el escalado automático de pods y escala el número de nodos de máquina virtual de Azure para cambiar la capacidad del clúster con el fin de hospedar cargas de trabajo. Aprenderá a:

  • Escalar los nodos de Kubernetes.
  • Escalar de forma manual pods de Kubernetes que ejecutan la aplicación.
  • Configurar el escalado automático de pods que ejecutan el front-end de la aplicación.

Antes de empezar

En tutoriales anteriores, empaquetó una aplicación en una imagen de contenedor, cargó la imagen en Azure Container Registry, creó un clúster de AKS, implementó una aplicación y usó Azure Service Bus para volver a implementar una aplicación actualizada. Si no ha realizado estos pasos, pero quiere seguir con el tutorial, comience con Tutorial 1: Preparación de una aplicación para AKS.

Para este tutorial se necesita la versión 2.34.1 o posterior de la CLI de Azure. Ejecute az --version para encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.

Escalado manual de pods

  1. Use el comando kubectl get para ver los pods del clúster.

    kubectl get pods
    

    La salida del siguiente ejemplo muestra los pods que ejecutan la aplicación Store Front de Azure:

    NAME                               READY     STATUS     RESTARTS   AGE
    order-service-848767080-tf34m      1/1       Running    0          31m
    product-service-4019737227-2q2qz   1/1       Running    0          31m
    store-front-2606967446-2q2qz       1/1       Running    0          31m
    
  2. Cambie manualmente el número de pods en la implementación de store-front con el comando kubectl scale.

    kubectl scale --replicas=5 deployment.apps/store-front
    
  3. Compruebe que se crearon pods adicionales con el comando kubectl get pods.

    kubectl get pods
    

    La salida del siguiente ejemplo muestra los pods adicionales que ejecutan la aplicación Store Front de Azure:

                                      READY     STATUS    RESTARTS   AGE
    store-front-2606967446-2q2qzc     1/1       Running   0          15m
    store-front-3309479140-2hfh0      1/1       Running   0          3m
    store-front-3309479140-bzt05      1/1       Running   0          3m
    store-front-3309479140-fvcvm      1/1       Running   0          3m
    store-front-3309479140-hrbf2      1/1       Running   0          15m
    store-front-3309479140-qphz8      1/1       Running   0          3m
    

Escalado automático de pods

Para usar el escalador automático horizontal de pods, todos los contenedores deben tener límites y solicitudes de CPU definidos, y los pods deben tener solicitudes especificadas. En la implementación de aks-store-quickstart, el contenedor del front-end solicita 1 m de CPU con un límite de 1000 m de CPU.

Estas solicitudes de recursos y límites se definen para cada contenedor tal y como se muestra de forma condensada en el siguiente código de ejemplo de YAML:

...
  containers:
  - name: store-front
    image: ghcr.io/azure-samples/aks-store-demo/store-front:latest
    ports:
    - containerPort: 8080
      name: store-front
...
    resources:
      requests:
        cpu: 1m
...
      limits:
        cpu: 1000m
...

Escalado automático de pods mediante un archivo de manifiesto

  1. Cree un archivo de manifiesto para definir el comportamiento de escalabilidad automática y los límites de recursos, como se muestra en el siguiente archivo de manifiesto abreviado de ejemplo, aks-store-quickstart-hpa.yaml:

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: store-front-hpa
    spec:
      maxReplicas: 10 # define max replica count
      minReplicas: 3  # define min replica count
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: store-front
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50
    
  2. Aplique el archivo de manifiesto del escalador automático mediante el comando kubectl apply.

    kubectl apply -f aks-store-quickstart-hpa.yaml
    
  3. Compruebe el estado del escalador automático con el comando kubectl get hpa.

    kubectl get hpa
    

    Después de unos minutos con una carga mínima en la aplicación Store Front de Azure, el número de réplicas de pods se reduce a tres. Puede usar nuevamente kubectl get pods para ver los pods innecesarios que se han eliminado.

Nota:

Puede habilitar el complemento de escalado automático controlado por eventos de Kubernetes (KEDA) de AKS en el clúster para impulsar el escalado en función del número de eventos que deben procesarse. Para obtener más información, consulte Escalado automático de aplicaciones simplificado con el complemento de escalado automático controlado por eventos (KEDA) de Kubernetes (versión preliminar).

Escalado manual de nodos de AKS

Si creó el clúster de Kubernetes mediante los comandos en el tutorial anterior, su clúster tendrá dos nodos. Si desea aumentar o disminuir esta cantidad, puede ajustar manualmente el número de nodos.

En el ejemplo siguiente, el número de nodos aumenta a tres en el clúster de Kubernetes denominado myAKSCluster. El comando tarda unos minutos en completarse.

  • Escale los nodos del clúster con el comando az aks scale.

    az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3
    

    Una vez que el clúster se escale correctamente, la salida será similar a la salida de ejemplo siguiente:

    "agentPoolProfiles": [
      {
        "count": 3,
        "dnsPrefix": null,
        "fqdn": null,
        "name": "myAKSCluster",
        "osDiskSizeGb": null,
        "osType": "Linux",
        "ports": null,
        "vmSize": "Standard_D2_v2",
        "vnetSubnetId": null
      }
    

También puede escalar automáticamente los nodos del clúster. Para obtener más información, consulte Uso del escalador automático de clústeres con grupos de nodos.

Pasos siguientes

En este tutorial, se han usado distintas características de escalado en el clúster de Kubernetes. Ha aprendido a:

  • Escalar de forma manual pods de Kubernetes que ejecutan la aplicación.
  • Configurar el escalado automático de pods que ejecutan el front-end de la aplicación.
  • Escalado manual de los nodos de Kubernetes.

En el siguiente tutorial, aprenderá a actualizar Kubernetes en el clúster de AKS.