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
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
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
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
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
Aplique el archivo de manifiesto del escalador automático mediante el comando
kubectl apply
.kubectl apply -f aks-store-quickstart-hpa.yaml
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:
"aadProfile": null, "addonProfiles": null, "agentPoolProfiles": [ { ... "count": 3, "mode": "System", "name": "nodepool1", "osDiskSizeGb": 128, "osDiskType": "Managed", "osType": "Linux", "ports": null, "vmSize": "Standard_DS2_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.
Azure Kubernetes Service