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, 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. Você aprende a:

  • 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 altera o número de pods e nós e pode aumentar os custos de computação. Utilize uma identidade com permissão para dimensionar cargas de trabalho do AKS e conjuntos de nós, como Contributor ou Owner no grupo de recursos.

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, consulte Install CLI do Azure.

Dimensionar os pods manualmente

AKS Desktop

  1. Edite a configuração de escalonamento do order-service selecionando Escalonamento>Selecionar implementação: order-service>Editar configuração>Número de réplicas: 5. Captura de ecrã que mostra a edição da configuração da escala do serviço de encomendas.

  2. Verifique se a atualização de implementação está concluída antes de continuar.

  3. 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
    
  4. Altere manualmente o número de pods na implementação da vitrine usando o kubectl scale comando.

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

    kubectl get pods --selector app=store-front
    

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

    NAME                              READY     STATUS    RESTARTS   AGE
    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
    

Pods de escala automática

AKS Desktop

  1. No Project, selecione o botão >Kubernetes YAML. Selecione a fonte da aplicação, Kubernetes YAML

  2. Copie e cole este manifesto do autoescalador YAML e dos limites de recursos.

    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
    
  3. Selecione Próximo>Desdobrar>Fechar. Captura de ecrã que mostra a colagem na configuração YAML.

  4. Selecione Dimensionamento>Selecione Implementação: store-front. Pode ver que o modo de escalonamento está agora definido para HPA, Limites de Réplica e Uso / Alvo da CPU definidos pela configuração. Captura de ecrã que mostra uma visão geral da escalabilidade do desktop do AKS mostrando o modo HPA para a implementação na loja.

  5. Verifique se o modo HPA está ativado e que os limites das réplicas correspondem aos valores do manifesto.

Linha de comandos

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 implementação, o aks-store-quickstart contenedor front-end solicita 1m CPU com um limite de 1000m 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 na aplicação Azure Store Front, o número de réplicas de pod diminui para três. Você pode usar kubectl get pods o comando novamente para ver os pods desnecessários sendo removidos.

    Continue quando as colunas TARGETS e REPLICAS mostrarem o comportamento esperado de dimensionamento automático de store-front-hpa.

Nota

Você pode habilitar o complemento AKS baseado em Kubernetes Event-Driven Autoscaler (KEDA) 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) (Visualização).

Dimensionar manualmente os nós do AKS

Nota

Se criaste um cluster AKS Automatic, estes passos não se aplicam porque o cluster escala automaticamente os nós.

Se criaste o teu cluster AKS Standard usando os comandos dos tutoriais anteriores, o teu cluster tem três 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 cinco no cluster Kubernetes chamado myAKSCluster. O comando leva alguns minutos para ser concluído.

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

    Depois de o cluster escalar com sucesso, a sua saída é semelhante à seguinte saída de exemplo:

    az aks nodepool list --resource-group myResourceGroup --cluster-name myAKSCluster --query "[].{name:name,count:count}" -o table
    
    az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 5
    

    Quando o cluster for dimensionado com êxito, o seu resultado será semelhante ao resultado de exemplo a seguir.

    "aadProfile": null,
    "addonProfiles": null,
    "agentPoolProfiles": [
      {
        ...
        "count": 5,
        "mode": "System",
        "name": "nodepool1",
        "osDiskSizeGb": 128,
        "osDiskType": "Managed",
        "osType": "Linux",
        "ports": null,
        "vmSize": "Standard_DS2_v2",
        "vnetSubnetId": null
        ...
      }
      ...
    ]
    

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

Próximos passos

Neste tutorial, você usou diferentes recursos de dimensionamento em seu cluster Kubernetes. Você 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.
  • Redimensione manualmente os nodes do Kubernetes.

Se terminar, selecione o ícone Apagar e, na mensagem de confirmação, selecione Também apagar o espaço de nomes. Captura de ecrã que mostra a eliminação do projeto de ambiente de trabalho do AKS clicando no ícone do lixo.

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