Usar grupos de posicionamento de proximidade para reduzir a latência para clusters do Serviço Kubernetes do Azure (AKS)

Nota

Ao usar grupos de posicionamento de proximidade no AKS, a colocation só se aplica aos nós do agente. Nó a nó e a latência correspondente do pod hospedado ao pod é melhorada. A colocalização não afeta o posicionamento do plano de controle de um cluster.

Ao implantar seu aplicativo no Azure, você pode criar latência de rede espalhando instâncias de máquina virtual (VM) entre regiões ou zonas de disponibilidade, o que pode afetar o desempenho geral do seu aplicativo. Um grupo de posicionamento de proximidade é um agrupamento lógico usado para garantir que os recursos de computação do Azure estejam fisicamente localizados próximos uns dos outros. Algumas aplicações, como jogos, simulações de engenharia e negociação de alta frequência (HFT) requerem baixa latência e tarefas que podem ser concluídas rapidamente. Para cenários semelhantes de computação de alto desempenho (HPC), considere o uso de grupos de posicionamento de proximidade (PPG) para os pools de nós do cluster.

Antes de começar

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

Limitações

  • Um grupo de posicionamento de proximidade pode mapear para apenas uma zona de disponibilidade.
  • Um pool de nós deve usar Conjuntos de Escala de Máquina Virtual para associar um grupo de posicionamento de proximidade.
  • Um pool de nós pode associar um grupo de posicionamento de proximidade somente ao tempo de criação do pool de nós.

Pools de nós e grupos de posicionamento de proximidade

O primeiro recurso implantado com um grupo de posicionamento de proximidade é anexado a um data center específico. Todos os recursos extras implantados com o mesmo grupo de posicionamento de proximidade são colocados no mesmo data center. Depois que todos os recursos que usam o grupo de posicionamento de proximidade são interrompidos (deslocalizados) ou excluídos, ele não é mais anexado.

  • Você pode associar vários pools de nós a um único grupo de posicionamento de proximidade.
  • Você só pode associar um pool de nós a um único grupo de posicionamento de proximidade.

Configurar grupos de posicionamento de proximidade com zonas de disponibilidade

Nota

Embora os grupos de posicionamento de proximidade exijam um pool de nós para usar apenas uma zona de disponibilidade, o SLA de linha de base da VM do Azure de 99,9% ainda está em vigor para VMs em uma única zona.

Os grupos de posicionamento de proximidade são um conceito de pool de nós e estão associados a cada pool de nós individual. O uso de um recurso PPG não tem impacto na disponibilidade do plano de controle AKS, o que pode afetar como você deve projetar seu cluster com zonas. Para garantir que um cluster esteja espalhado por várias zonas, recomendamos o uso do seguinte design:

  • Provisione um cluster com o primeiro pool de sistemas usando três zonas e nenhum grupo de posicionamento de proximidade associado para garantir que os pods do sistema aterrissem em um pool de nós dedicado, que se espalha por várias zonas.
  • Adicione pools de nós de usuário extras com uma zona exclusiva e um grupo de posicionamento de proximidade associados a cada pool. Um exemplo é nodepool1 na zona um e PPG1, nodepool2 na zona dois e PPG2 e nodepool3 na zona 3 com PPG3. Essa configuração garante que, em um nível de cluster, os nós estejam espalhados por várias zonas e cada pool de nós individuais seja colocalizado na zona designada com um recurso PPG dedicado.

Criar um novo cluster AKS com um grupo de posicionamento de proximidade

A rede acelerada melhora muito o desempenho de rede das máquinas virtuais. O ideal é usar grupos de posicionamento de proximidade com rede acelerada. Por padrão, o AKS usa rede acelerada em instâncias de máquina virtual com suporte, que incluem a maioria das máquinas virtuais do Azure com duas ou mais vCPUs.

  1. Crie um grupo de recursos do Azure usando o az group create comando.

    az group create --name myResourceGroup --location centralus
    
  2. Crie um grupo de posicionamento de proximidade usando o az ppg create comando. Certifique-se de anotar o valor de ID na saída.

    az ppg create --name myPPG --resource-group myResourceGroup --location centralus --type standard
    

    O comando produz uma saída semelhante à saída de exemplo a seguir, que inclui o valor de ID necessário para os próximos comandos da CLI.

    {
      "availabilitySets": null,
      "colocationStatus": null,
      "id": "/subscriptions/yourSubscriptionID/resourceGroups/myResourceGroup/providers/Microsoft.Compute/proximityPlacementGroups/myPPG",
      "location": "centralus",
      "name": "myPPG",
      "proximityPlacementGroupType": "Standard",
      "resourceGroup": "myResourceGroup",
      "tags": {},
      "type": "Microsoft.Compute/proximityPlacementGroups",
      "virtualMachineScaleSets": null,
      "virtualMachines": null
    }
    
  3. Crie um cluster AKS usando o az aks create comando e substitua o valor myPPGResourceID pelo ID de recurso do grupo de posicionamento de proximidade da etapa anterior.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --ppg myPPGResourceID
        --generate-ssh-keys
    

Adicionar um grupo de posicionamento de proximidade a um cluster existente

Você pode adicionar um grupo de posicionamento de proximidade a um cluster existente criando um novo pool de nós. Opcionalmente, você pode migrar cargas de trabalho existentes para o novo pool de nós e excluir o pool de nós original.

Use o mesmo grupo de posicionamento de proximidade que você criou anteriormente para garantir que os nós de agente em ambos os pools de nós em seu cluster AKS estejam fisicamente localizados no mesmo data center.

  • Crie um novo pool de nós usando o az aks nodepool add comando e substitua o valor myPPGResourceID pelo ID de recurso do grupo de posicionamento de proximidade.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name mynodepool \
        --node-count 1 \
        --ppg myPPGResourceID
    

Limpeza

  • Exclua o grupo de recursos do Azure junto com seus recursos usando o az group delete comando.

    az group delete --name myResourceGroup --yes --no-wait
    

Próximos passos

Saiba mais sobre os grupos de posicionamento de proximidade.