Tutorial – dimensionar aplicativos no AKS (Serviço de Kubernetes do Azure)

Se seguiu os tutoriais anteriores, você tem um cluster do Kubernetes funcionando e um aplicativo front do Microsoft Azure Store.

Na parte seis de sete deste tutorial, você dimensionará os pods no aplicativo, tentará dimensionar automaticamente o pod e dimensionará o número de nós de VM do Azure para alterar a capacidade do cluster para hospedar cargas de trabalho. Você aprenderá como:

  • Dimensionar os nós Kubernetes.
  • Dimensionar pods Kubernetes manualmente que executam seu aplicativo.
  • Configurar os pods de dimensionamento automático que executam o front-end do aplicativo.

Antes de começar

Em tutoriais anteriores, você empacotou um aplicativo em uma imagem de contêiner, carregou a imagem no Registro de Contêiner do Azure, criou um cluster do AKS, implantou um aplicativo e usou o Barramento de Serviço do Azure para reimplantar um aplicativo atualizado. Se você não concluiu essas etapas e deseja acompanhar este tutorial, comece com Tutorial 1: preparar um aplicativo para o AKS.

Este tutorial requer a CLI do Azure, versão 2.34.1 ou posterior. Execute az --version para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.

Dimensionar pods manualmente

  1. Exiba os pods no cluster usando o comando kubectl get.

    kubectl get pods
    

    A saída de exemplo a seguir mostra os pods que executam o aplicativo front do Microsoft Azure Store:

    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. Altere manualmente o número de pods na implantação store-front usando o comando kubectl scale.

    kubectl scale --replicas=5 deployment.apps/store-front
    
  3. Verifique se os pods adicionais foram criados usando o comando kubectl get pods.

    kubectl get pods
    

    A saída de exemplo a seguir mostra os pods adicionais que executam o aplicativo front do Microsoft Azure Store:

                                      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
    

Dimensionamento automático de pods

Para usar o dimensionador automático de pod horizontal, todos os contêineres devem ter solicitações e limites de CPU definidos, e os pods devem ter solicitações especificadas. Na implantação aks-store-quickstart, o contêiner de front-end solicita 1m CPU, com um limite de 1000m CPU.

Essas solicitações e os limites de recursos são definidos para cada contêiner conforme mostrado no seguinte exemplo condensado 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
...

Dimensionamento automático de pods usando um arquivo de manifesto

  1. Crie um arquivo de manifesto para definir o comportamento do dimensionador automático e os limites de recursos, conforme mostrado no seguinte arquivo de manifesto condensado de exemplo 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 o arquivo de manifesto do dimensionador automático usando o comando kubectl apply.

    kubectl apply -f aks-store-quickstart-hpa.yaml
    
  3. Verifique a status do dimensionador automático usando o comando kubectl get hpa.

    kubectl get hpa
    

    Após alguns minutos, com carga mínima no aplicativo front do Microsoft Azure Store, o número de réplicas de pod diminui para três. Você pode usar kubectl get pods novamente para ver os pods desnecessários que está sendo removidos.

Observação

Você pode habilitar o complemento AKS do KEDA (dimensionador automático baseado em eventos) baseado em Kubernetes para seu cluster impulsionar o dimensionamento com base no número de eventos que precisam ser processados. Para obter mais informações, consulte Habilitar o dimensionamento automático simplificado de aplicativos com o complemento KEDA (dimensionador automático baseado em eventos) do Kubernetes (versão prévia).

Dimensionar nós do AKS manualmente

Se você criou o cluster Kubernetes usando os comandos nos tutoriais anteriores, seu cluster tem dois nós. Se você quiser aumentar ou diminuir esse valor, poderá ajustar manualmente o número de nós.

O exemplo a seguir aumenta o número de nós para três no cluster Kubernetes chamado myAKSCluster. Esse comando leva alguns minutos para ser concluído.

  • Escale seus nós de cluster usando o comando az aks scale.

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

    Depois que o cluster for dimensionado com êxito, sua saída será semelhante à seguinte saída de exemplo:

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

Você também pode dimensionar automaticamente os nós em seu cluster. Para obter mais informações, consulte Usar o dimensionador automático de cluster com pools de nós.

Próximas etapas

Neste tutorial, você usou diferentes recursos de colocação em escala em seu cluster Kubernetes. Você aprendeu a:

  • Dimensionar pods Kubernetes manualmente que executam seu aplicativo.
  • Configurar os pods de dimensionamento automático que executam o front-end do aplicativo.
  • Dimensionar manualmente os nós de Kubernetes.

No próximo tutorial, você aprenderá a atualizar o Kubernetes no cluster do AKS.