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

Si ha seguido los tutoriales, tiene un clúster de Kubernetes en funcionamiento en AKS y ha implementado la aplicación Azure Voting de ejemplo.If you've followed the tutorials, you have a working Kubernetes cluster in AKS and you deployed the sample Azure Voting app. En este tutorial, la parte cinco de siete, se escalan horizontalmente los pods en la aplicación y se prueba el escalado automático de pods.In this tutorial, part five of seven, you scale out the pods in the app and try pod autoscaling. También se aprende a escalar el número de nodos de VM de Azure para cambiar la capacidad del clúster de hospedar cargas de trabajo.You also learn how to scale the number of Azure VM nodes to change the cluster's capacity for hosting workloads. Aprenderá a:You learn how to:

  • Escalar los nodos de KubernetesScale the Kubernetes nodes
  • Escalar de forma manual pods de Kubernetes que ejecutan la aplicaciónManually scale Kubernetes pods that run your application
  • Configurar el escalado automático de pods que ejecutan el front-end de la aplicaciónConfigure autoscaling pods that run the app front-end

En otros tutoriales, la aplicación Azure Vote se actualiza a una nueva versión.In additional tutorials, the Azure Vote application is updated to a new version.

Antes de empezarBefore you begin

En los tutoriales anteriores se empaquetó una aplicación en una imagen de contenedor.In previous tutorials, an application was packaged into a container image. Esta imagen se cargó en Azure Container Registry y el usuario creó un clúster de AKS.This image was uploaded to Azure Container Registry, and you created an AKS cluster. Luego la aplicación se implementó en el clúster de AKS.The application was then deployed to the AKS cluster. Si no ha realizado estos pasos, pero quiere continuar, comience con el Tutorial 1: Creación de imágenes de contenedor.If you haven't done these steps, and would like to follow along, start with Tutorial 1 – Create container images.

Para realizar este tutorial es necesario ejecutar la versión 2.0.53, o superior, de la CLI de Azure.This tutorial requires that you're running the Azure CLI version 2.0.53 or later. Ejecute az --version para encontrar la versión.Run az --version to find the version. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.If you need to install or upgrade, see Install Azure CLI.

Escalado manual de podsManually scale pods

Cuando el front-end de Azure Vote y la instancia de Redis se implementaron en los tutoriales anteriores, se creó una única réplica.When the Azure Vote front-end and Redis instance were deployed in previous tutorials, a single replica was created. Para ver el número y el estado de los pods del clúster, use el comando kubectl get como se indica a continuación:To see the number and state of pods in your cluster, use the kubectl get command as follows:

kubectl get pods

La salida del ejemplo siguiente muestra un pod de front-end y un pod de back-end:The following example output shows one front-end pod and one back-end pod:

NAME                               READY     STATUS    RESTARTS   AGE
azure-vote-back-2549686872-4d2r5   1/1       Running   0          31m
azure-vote-front-848767080-tf34m   1/1       Running   0          31m

Para cambiar manualmente el número de pods en la implementación azure-vote-front, use el comando kubectl scale.To manually change the number of pods in the azure-vote-front deployment, use the kubectl scale command. El ejemplo siguiente aumenta el número de pods de front-end a 5:The following example increases the number of front-end pods to 5:

kubectl scale --replicas=5 deployment/azure-vote-front

Ejecute de nuevo kubectl get pods para comprobar que AKS crea los pods adicionales.Run kubectl get pods again to verify that AKS creates the additional pods. Tras un minuto aproximadamente, los pods adicionales están disponibles en el clúster:After a minute or so, the additional pods are available in your cluster:

$ kubectl get pods

                                    READY     STATUS    RESTARTS   AGE
azure-vote-back-2606967446-nmpcf    1/1       Running   0          15m
azure-vote-front-3309479140-2hfh0   1/1       Running   0          3m
azure-vote-front-3309479140-bzt05   1/1       Running   0          3m
azure-vote-front-3309479140-fvcvm   1/1       Running   0          3m
azure-vote-front-3309479140-hrbf2   1/1       Running   0          15m
azure-vote-front-3309479140-qphz8   1/1       Running   0          3m

Escalado automático de podsAutoscale pods

Kubernetes admite el escalado horizontal automático de pods para ajustar el número de pods en una implementación en función del uso de la CPU o de otras métricas de selección.Kubernetes supports horizontal pod autoscaling to adjust the number of pods in a deployment depending on CPU utilization or other select metrics. El servidor de medición se usa para proporcionar utilización de recursos a Kubernetes y se implementa automáticamente en clústeres de Azure Kubernetes Service de la versión 1.10 o posteriores.The Metrics Server is used to provide resource utilization to Kubernetes, and is automatically deployed in AKS clusters versions 1.10 and higher. Para ver la versión del clúster de Azure Kubernetes Service, use el comando az aks show, tal y como se muestra en el ejemplo siguiente:To see the version of your AKS cluster, use the az aks show command, as shown in the following example:

az aks show --resource-group myResourceGroup --name myAKSCluster --query kubernetesVersion

Nota

Si la versión del clúster de Azure Kubernetes Service es anterior a 1.10, el servidor de métricas no se instala automáticamente.If your AKS cluster is less than 1.10, the Metrics Server is not automatically installed. Para realizar la instalación, clone el repositorio de GitHub metrics-server e instale las definiciones de recursos de ejemplo.To install, clone the metrics-server GitHub repo and install the example resource definitions. Para ver el contenido de estas definiciones de YAML, consulte Servidor de métricas para Kuberenetes 1.8 +.To view the contents of these YAML definitions, see Metrics Server for Kuberenetes 1.8+.

git clone https://github.com/kubernetes-incubator/metrics-server.git
kubectl create -f metrics-server/deploy/1.8+/

Para usar la autoescala, todos los contenedores de los pod y los pods deben tener definidos solicitudes y límites de CPU.To use the autoscaler, all containers in your pods and your pods must have CPU requests and limits defined. En la implementación de azure-vote-front, el contenedor del front-end ya solicita 0,25 CPU, con un límite de 0,5 CPU.In the azure-vote-front deployment, the front-end container already requests 0.25 CPU, with a limit of 0.5 CPU. Estas solicitudes de recursos y los límites se definen tal y como se muestra en el siguiente fragmento de código de ejemplo:These resource requests and limits are defined as shown in the following example snippet:

resources:
  requests:
     cpu: 250m
  limits:
     cpu: 500m

En el ejemplo siguiente se usa el comando kubectl autoscale para escalar automáticamente el número de pods en la implementaciónazure-vote-front.The following example uses the kubectl autoscale command to autoscale the number of pods in the azure-vote-front deployment. Si el uso de la CPU supera el 50 %, el escalador automático aumenta el número de pods hasta un máximo de 10 instancias.If CPU utilization exceeds 50%, the autoscaler increases the pods up to a maximum of 10 instances. Luego se define un mínimo de 3 instancias para la implementación:A minimum of 3 instances is then defined for the deployment:

kubectl autoscale deployment azure-vote-front --cpu-percent=50 --min=3 --max=10

Para ver el estado del escalador automático, use el comando kubectl get hpa como se indica a continuación:To see the status of the autoscaler, use the kubectl get hpa command as follows:

$ kubectl get hpa

NAME               REFERENCE                     TARGETS    MINPODS   MAXPODS   REPLICAS   AGE
azure-vote-front   Deployment/azure-vote-front   0% / 50%   3         10        3          2m

Después de unos minutos con carga mínima en la aplicación Azure Vote, el número de réplicas del pod se reduce automáticamente a tres.After a few minutes, with minimal load on the Azure Vote app, the number of pod replicas decreases automatically to three. Puede usar nuevamente kubectl get pods para ver los pods innecesarios que se han eliminado.You can use kubectl get pods again to see the unneeded pods being removed.

Escalado manual de nodos de AKSManually scale AKS nodes

Si creó el clúster de Kubernetes mediante los comandos en el tutorial anterior, este tiene un nodo.If you created your Kubernetes cluster using the commands in the previous tutorial, it has one node. Puede ajustar el número de nodos manualmente si tiene previsto usar más o menos cargas de trabajo de contenedor en el clúster.You can adjust the number of nodes manually if you plan more or fewer container workloads on your cluster.

En el ejemplo siguiente, el número de nodos aumenta a tres en el clúster de Kubernetes denominado myAKSCluster.The following example increases the number of nodes to three in the Kubernetes cluster named myAKSCluster. El comando tarda unos minutos en completarse.The command takes a couple of minutes to complete.

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

Cuando el clúster se escaló correctamente, el resultado es similar al ejemplo siguiente:When the cluster has successfully scaled, the output is similar to following example:

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

Pasos siguientesNext steps

En este tutorial, se han usado distintas características de escalado en el clúster de Kubernetes.In this tutorial, you used different scaling features in your Kubernetes cluster. Ha aprendido a:You learned how to:

  • Escalar de forma manual pods de Kubernetes que ejecutan la aplicaciónManually scale Kubernetes pods that run your application
  • Configurar el escalado automático de pods que ejecutan el front-end de la aplicaciónConfigure autoscaling pods that run the app front-end
  • Escalado manual de los nodos de KubernetesManually scale the Kubernetes nodes

Vaya al siguiente tutorial para aprender a actualizar la aplicación en Kubernetes.Advance to the next tutorial to learn how to update application in Kubernetes.