Dimensionar manualmente a contagem de nós em um cluster do Serviço Kubernetes do Azure (AKS)

Se as necessidades de recursos de seus aplicativos mudarem, o desempenho do cluster poderá ser afetado devido à baixa capacidade de CPU, memória, espaço PID ou tamanhos de disco. Para resolver essas alterações, você pode dimensionar manualmente seu cluster AKS para executar um número diferente de nós. Quando você reduz a escala, os nós são cuidadosamente isolados e drenados para minimizar a interrupção dos aplicativos em execução. Quando você aumenta a escala, o AKS aguarda até que os nós sejam marcados como Prontos pelo cluster do Kubernetes antes que os pods sejam agendados neles.

Este artigo descreve como aumentar ou diminuir manualmente o número de nós em um cluster AKS.

Antes de começar

  • Analise as cotas e limites de serviço do AKS para verificar se o cluster pode ser dimensionado para o número desejado de nós.

  • O nome de um pool de nós pode conter apenas caracteres alfanuméricos minúsculos e deve começar com uma letra minúscula.

    • Para pools de nós Linux, o comprimento deve estar entre 1 e 11 caracteres.
    • Para pools de nós do Windows, o comprimento deve estar entre 1 e 6 caracteres.

Dimensionar nós de cluster

Importante

Não há suporte para a remoção de nós de um pool de nós usando o comando kubectl. Isso pode criar problemas de dimensionamento com seu cluster AKS.

  1. Obtenha o nome do pool de nós usando o az aks show comando. O exemplo a seguir obtém o nome do pool de nós para o cluster chamado myAKSCluster no grupo de recursos myResourceGroup :

    az aks show --resource-group myResourceGroup --name myAKSCluster --query agentPoolProfiles
    

    A saída de exemplo a seguir mostra que o nome é nodepool1:

    [
      {
        "count": 1,
        "maxPods": 110,
        "name": "nodepool1",
        "osDiskSizeGb": 30,
        "osType": "Linux",
        "vmSize": "Standard_DS2_v2"
      }
    ]
    
  2. Dimensione os nós do cluster usando o az aks scale comando. O exemplo a seguir dimensiona um cluster chamado myAKSCluster para um único nó. Forneça o seu próprio --nodepool-name a partir do comando anterior, como nodepool1:

    az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 1 --nodepool-name <your node pool name>
    

    A saída de exemplo a seguir mostra o cluster dimensionado com êxito para um nó, conforme mostrado na seção agentPoolProfiles :

    {
      "aadProfile": null,
      "addonProfiles": null,
      "agentPoolProfiles": [
        {
          "count": 1,
          "maxPods": 110,
          "name": "nodepool1",
          "osDiskSizeGb": 30,
          "osType": "Linux",
          "vmSize": "Standard_DS2_v2",
          "vnetSubnetId": null
        }
      ],
      [...]
    }
    

Dimensionar User pools de nós para 0

Ao contrário System dos pools de nós que sempre exigem a execução de nós, User os pools de nós permitem dimensionar para 0. Para saber mais sobre as diferenças entre os pools de nós do sistema e do usuário, consulte Pools de nós do sistema e do usuário.

Importante

Não é possível dimensionar um pool de nós de usuário com o autoscaler de cluster habilitado para 0 nós. Para dimensionar um pool de nós de usuário para 0 nós, você deve desabilitar o autoscaler de cluster primeiro. Para obter mais informações, consulte Desabilitar o autoscaler de cluster em um pool de nós.

  • Para dimensionar um pool de usuários para 0, você pode usar a escala az aks nodepool em alternativa ao comando acima az aks scale e definir 0 como sua contagem de nós.

    az aks nodepool scale --name <your node pool name> --cluster-name myAKSCluster --resource-group myResourceGroup  --node-count 0 
    
  • Você também pode dimensionar User automaticamente os pools de nós para zero nós, definindo o --min-count parâmetro do Autoscaler de cluster como 0.

Próximos passos

Neste artigo, você dimensionou manualmente um cluster AKS para aumentar ou diminuir o número de nós. Você também pode usar o dimensionador automático de cluster para dimensionar automaticamente o cluster.