Tutorial: Aplicações no Azure Kubernetes Service (AKS)Tutorial: Scale applications in Azure Kubernetes Service (AKS)

Se seguiu os tutoriais, terá um cluster do Kubernetes a trabalhar no AKS e implementado a aplicação de votação do Azure de exemplo.If you've followed the tutorials, you have a working Kubernetes cluster in AKS and you deployed the sample Azure Voting app. Neste tutorial, parte cinco de sete, aumenta horizontalmente pods na aplicação e tenta dimensionar automaticamente.In this tutorial, part five of seven, you scale out the pods in the app and try pod autoscaling. Também irá aprender a dimensionar o número de nós da VM do Azure, para alterar a capacidade do cluster para alojar cargas de trabalho.You also learn how to scale the number of Azure VM nodes to change the cluster's capacity for hosting workloads. Saiba como:You learn how to:

  • Dimensionar os nós do KubernetesScale the Kubernetes nodes
  • Dimensionar manualmente pods do Kubernetes que executam a sua aplicaçãoManually scale Kubernetes pods that run your application
  • Configurar pods de dimensionamento automático que executam a aplicação de front-endConfigure autoscaling pods that run the app front-end

Tutoriais adicionais, a aplicação Azure Vote é atualizada para uma nova versão.In additional tutorials, the Azure Vote application is updated to a new version.

Antes de começarBefore you begin

Nos tutoriais anteriores, foi compactada uma aplicação numa imagem de contentor.In previous tutorials, an application was packaged into a container image. A imagem foi carregada para o Azure Container Registry e criado um cluster do AKS.This image was uploaded to Azure Container Registry, and you created an AKS cluster. A aplicação foi implementada, em seguida, para o cluster do AKS.The application was then deployed to the AKS cluster. Se ainda não concluiu estes passos e pretende acompanhar, inicie com Tutorial 1 – criar imagens de contentor.If you haven't done these steps, and would like to follow along, start with Tutorial 1 – Create container images.

Este tutorial requer que está a executar a CLI do Azure versão 2.0.53 ou posterior.This tutorial requires that you're running the Azure CLI version 2.0.53 or later. Executar az --version para localizar a versão.Run az --version to find the version. Se precisar de instalar ou atualizar, veja Instalar a CLI do Azure.If you need to install or upgrade, see Install Azure CLI.

Dimensionar pods manualmenteManually scale pods

Quando o front-end do Azure Vote e a instância de Redis foram implementados nos tutoriais anteriores, foi criada uma réplica única.When the Azure Vote front-end and Redis instance were deployed in previous tutorials, a single replica was created. Para ver o número e o estado de pods no seu cluster, utilize o kubectl obter comando da seguinte forma:To see the number and state of pods in your cluster, use the kubectl get command as follows:

kubectl get pods

O resultado do exemplo seguinte mostra um pod de front-end e um 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 alterar manualmente o número de pods na azure-vote-front implementação, utilize o kubectl dimensionamento comando.To manually change the number of pods in the azure-vote-front deployment, use the kubectl scale command. O exemplo seguinte aumenta o número de pods de front-end para 5:The following example increases the number of front-end pods to 5:

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

Execute kubectl obter pods novamente para verificar que o AKS cria os pods adicionais.Run kubectl get pods again to verify that AKS creates the additional pods. Um ou dois minutos depois, os pods adicionais estão disponíveis no seu cluster: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

Dimensionar pods automaticamenteAutoscale pods

Kubernetes suporta dimensionamento automático horizontal de pods to adjust the number of pods in a deployment depending on CPU utilization or other select metrics. The Metrics Server é utilizado para fornecer a utilização de recursos para o Kubernetes e será automaticamente implantado em clusters do AKS versões 1.10 e superiores.Kubernetes supports horizontal pod autoscaling to adjust the number of pods in a deployment depending on CPU utilization or other select metrics. 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 a versão do cluster do AKS, utilize o show do az aks de comando, conforme mostrado no exemplo a seguir: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

Se a versão do cluster AKS for inferior a 1.10, instale o Servidor de Métricas; caso contrário, ignore este passo.If your AKS cluster is less than 1.10, install the Metrics Server, otherwise skip this step. Para instalar, clone o metrics-server repositório do GitHub e instalem as definições de recursos de exemplo.To install, clone the metrics-server GitHub repo and install the example resource definitions. Para ver o conteúdo dessas definições 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 utilizar o dimensionamento automático, todos os contentores em seus pods e seus pods tem de ter os pedidos de CPU e os limites definidos.To use the autoscaler, all containers in your pods and your pods must have CPU requests and limits defined. Na azure-vote-front implementação, o contentor de front-end já pede 0,25 de CPU, com um limite de 0,5 de CPU.In the azure-vote-front deployment, the front-end container already requests 0.25 CPU, with a limit of 0.5 CPU. Estes pedidos de recursos e os limites são definidos como mostrado no seguinte fragmento de exemplo:These resource requests and limits are defined as shown in the following example snippet:

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

O exemplo seguinte utiliza a kubectl autoscale comando para dimensionar automaticamente o número de pods na do azure-vote-front implementação.The following example uses the kubectl autoscale command to autoscale the number of pods in the azure-vote-front deployment. Se a utilização da CPU exceder 50%, o dimensionamento automático aumenta os pods até um máximo de 10 instâncias.If CPU utilization exceeds 50%, the autoscaler increases the pods up to a maximum of 10 instances. Um mínimo de 3 instâncias, em seguida, é definida para a implementação: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 o estado do dimensionamento automático, utilize o comando kubectl get hpa da seguinte forma: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

Após alguns minutos, com carga mínima na aplicação do Azure Vote, o número de réplicas de pod diminui automaticamente para três.After a few minutes, with minimal load on the Azure Vote app, the number of pod replicas decreases automatically to three. Pode utilizar kubectl get pods novamente para ver os pods que não são precisos a serem removidos.You can use kubectl get pods again to see the unneeded pods being removed.

Dimensionar nós do AKS manualmenteManually scale AKS nodes

Se criou o seu cluster Kubernetes com os comandos no tutorial anterior, tem um nó.If you created your Kubernetes cluster using the commands in the previous tutorial, it has one node. Pode ajustar o número de nós manualmente, se pretender mais ou menos cargas de trabalho do contentor no seu cluster.You can adjust the number of nodes manually if you plan more or fewer container workloads on your cluster.

O exemplo seguinte aumenta o número de nós para três no cluster do Kubernetes denominado myAKSCluster.The following example increases the number of nodes to three in the Kubernetes cluster named myAKSCluster. O comando demora poucos minutos a concluir.The command takes a couple of minutes to complete.

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

Quando o cluster foi dimensionada com êxito, o resultado é semelhante ao exemplo seguinte: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
  }

Passos SeguintesNext steps

Neste tutorial, utilizou diferentes funcionalidades de dimensionamento no seu cluster Kubernetes.In this tutorial, you used different scaling features in your Kubernetes cluster. Aprendeu a:You learned how to:

  • Dimensionar manualmente pods do Kubernetes que executam a sua aplicaçãoManually scale Kubernetes pods that run your application
  • Configurar pods de dimensionamento automático que executam a aplicação de front-endConfigure autoscaling pods that run the app front-end
  • Dimensionar manualmente os nós do KubernetesManually scale the Kubernetes nodes

Avance para o próximo tutorial para saber como atualizar a aplicação no Kubernetes.Advance to the next tutorial to learn how to update application in Kubernetes.