Tutorial - Dimensionar aplicativos no Serviço Kubernetes do Azure (AKS)

Se você seguiu os tutoriais anteriores, tem um cluster Kubernetes em funcionamento e um aplicativo Azure Store Front.

Neste tutorial, parte seis de sete, você dimensiona os pods no aplicativo, experimenta o dimensionamento automático do pod e dimensiona o número de nós de VM do Azure para alterar a capacidade do cluster para hospedar cargas de trabalho. Sabe como:

  • Dimensione os nós do Kubernetes.
  • Dimensione manualmente os pods do Kubernetes que executam seu aplicativo.
  • Configure 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 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 quer acompanhar, comece com o Tutorial 1 - Preparar a inscrição para o AKS.

Este tutorial requer a CLI do Azure versão 2.34.1 ou posterior. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).

Dimensionar pods manualmente

  1. Visualize os pods em seu cluster usando o kubectl get comando.

    kubectl get pods
    

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

    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 da vitrine usando o kubectl scale comando.

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

    kubectl get pods
    

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

                                      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
    

Dimensionar pods automaticamente

Para usar o pod autoscaler 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, o aks-store-quickstartcontêiner front-end solicita 1m de CPU com um limite de 1000m de CPU.

Essas solicitações de recursos e limites são definidos para cada contêiner, conforme mostrado no seguinte exemplo condensado 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 autoscaler e os limites de recursos, conforme mostrado no seguinte arquivo aks-store-quickstart-hpa.yamlde manifesto de exemplo condensado:

    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 autoscaler usando o kubectl apply comando.

    kubectl apply -f aks-store-quickstart-hpa.yaml
    
  3. Verifique o status do autoscaler usando o kubectl get hpa comando.

    kubectl get hpa
    

    Após alguns minutos, com carga mínima no aplicativo Azure Store Front, o número de réplicas de pod diminui para três. Pode utilizar kubectl get pods novamente para ver os pods que não são precisos a serem removidos.

Nota

Você pode habilitar o complemento AKS KEDA (Event-Driven Autoscaler) baseado em Kubernetes para seu cluster para 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 Kubernetes Event-Driven Autoscaling (KEDA) (Preview).

Dimensionar nós do AKS manualmente

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

O exemplo seguinte aumenta o número de nós para três no cluster do Kubernetes denominado myAKSCluster. O comando demora poucos minutos a concluir.

  • Dimensione os nós do cluster usando o az aks scale comando.

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

    Quando o cluster for dimensionado com êxito, sua saída será semelhante à saída de exemplo a seguir:

    "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 autoscaler de cluster com pools de nós.

Próximos passos

Neste tutorial, utilizou diferentes funcionalidades de dimensionamento no seu cluster Kubernetes. Aprendeu a:

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

No próximo tutorial, você aprenderá como atualizar o Kubernetes em seu cluster AKS.