Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Para acompanhar as demandas do aplicativo no AKS, talvez seja necessário ajustar o número de nós que executam suas cargas de trabalho. O componente do dimensionador automático de cluster observa os pods no seu cluster que não podem ser agendados devido às restrições de recursos. Quando o dimensionador automático de cluster detecta problemas, ele aumenta o número de nós no pool de nós para atender às demandas do aplicativo. Ele também verifica regularmente os nós quanto à falta de pods em execução e reduz o número de nós conforme necessário.
Este artigo mostra como habilitar e gerenciar o dimensionamento automático de cluster no AKS, que se baseia na versão do Kubernetes de software livre.
Antes de começar
Este artigo exige a versão 2.0.76 ou posterior da CLI do Azure. Execute az --version para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.
Usar o dimensionador automático de cluster em um cluster do AKS
Importante
O dimensionamento automático do cluster é um componente de Kubernetes. Embora o cluster do AKS use um conjunto de dimensionamento de máquinas virtuais para os nós, não habilite ou edite manualmente as configurações para dimensionamento automático do conjunto de dimensionamento. Permita que o dimensionador automático do cluster de Kubernetes gerencie as configurações de dimensionamento necessárias. Para obter mais informações, confira Posso modificar os recursos do AKS no grupo de recursos de nós?
Habilitar o dimensionador automático em um novo cluster
Crie um grupo de recursos usando o comando
az group create.az group create --name myResourceGroup --location eastusCrie um cluster do AKS usando o comando
az aks createe habilite e configure o dimensionador automático de cluster no pool de nós para o cluster usando o parâmetro--enable-cluster-autoscalere especificando um nó--min-counte--max-count. O comando de exemplo a seguir cria um cluster com um único nó apoiado por um conjunto de dimensionamento de máquinas virtuais, habilita o dimensionador automático de cluster, define um mínimo de um e no máximo três nós:az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 1 \ --vm-set-type VirtualMachineScaleSets \ --load-balancer-sku standard \ --enable-cluster-autoscaler \ --min-count 1 \ --max-count 3 \ --generate-ssh-keysSão necessários alguns minutos para criar o cluster e definir as configurações do dimensionador automático de cluster.
Habilitar o dimensionador automático em um cluster existente
Atualize um cluster existente por meio do comando
az aks updatee habilite e configure o dimensionador automático de cluster no pool de nós usando o parâmetro--enable-cluster-autoscalere especificando um nó--min-counte--max-count. O exemplo a seguir atualiza um cluster do AKS existente para habilitar o dimensionamento automático de cluster em conjunto de nós para o cluster e define um mínimo de um e um máximo de três nós:az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --enable-cluster-autoscaler \ --min-count 1 \ --max-count 3São necessários alguns minutos para atualizar o cluster e definir as configurações do dimensionamento automático de cluster.
Desabilitar o dimensionador automático de cluster em um cluster
Desabilite o dimensionador automático de cluster por meio do comando
az aks updatee do parâmetro--disable-cluster-autoscaler.az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --disable-cluster-autoscalerOs nós não são removidos quando o dimensionador automático de cluster é desabilitado.
Observação
Você pode dimensionar manualmente o cluster depois de desabilitar o dimensionador automático de cluster por meio do comando az aks scale. Se você usar o dimensionador automático de pod horizontal, ele continuará sendo executado com o dimensionador automático de cluster desabilitado, mas os pods poderão acabar não sendo agendados se todos os recursos do nó estiverem em uso.
Habilitar novamente o dimensionador automático de cluster em um cluster
Se você quiser reabilitar o dimensionador automático em um cluster existente, poderá fazer isso usando o comando az aks update e especificando os parâmetros --enable-cluster-autoscaler, --min-count e --max-count.
Usar o dimensionador automático de cluster em pools de nós
Usar o dimensionador automático de cluster em vários pools de nós
Você pode usar o dimensionador automático de cluster com vários pools de nós e habilitar o dimensionador automático de cluster em cada pool de nós individual e passar regras de dimensionamento automático exclusivas para eles.
Atualize as configurações em um pool de nós existente usando o comando
az aks nodepool update.az aks nodepool update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name nodepool1 \ --update-cluster-autoscaler \ --min-count 1 \ --max-count 5
Desabilitar o dimensionador automático de cluster em um pool de nós
Desabilite o dimensionador automático de cluster por meio do comando
az aks nodepool updatee do parâmetro--disable-cluster-autoscaler.az aks nodepool update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name nodepool1 \ --disable-cluster-autoscaler
Habilitar novamente o dimensionador automático de cluster em um pool de nós
Você pode reabilitar o dimensionador automático de cluster em um pool de nós usando o comando az aks nodepool update e especificando os parâmetros --enable-cluster-autoscaler, --min-count e --max-count.
Observação
Se você planeja usar o dimensionador automático de cluster com pools de nós que abrangem várias zonas e aproveitam os recursos de agendamento relacionados a zonas, como agendamento topológico de volume, recomendamos que você tenha um pool de nós por zona e habilite --balance-similar-node-groups por meio do perfil de dimensionamento automático. Isso garante que o dimensionador automático possa ser escalado verticalmente com sucesso e manter os tamanhos dos pools de nós equilibrados.
Atualizar as configurações do dimensionador automático do cluster
À medida que as demandas do aplicativo mudam, talvez seja necessário ajustar a contagem de nós do dimensionador automático de cluster para dimensionar com eficiência.
Altere a contagem de nós usando o comando
az aks updatee atualize o dimensionador automático de cluster usando o parâmetro--update-cluster-autoscalere especificando o nó atualizado--min-counte--max-count.az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --update-cluster-autoscaler \ --min-count 1 \ --max-count 5
Observação
O dimensionador automático de cluster imporá a contagem mínima nos casos em que a contagem real ficar abaixo do mínimo devido a fatores externos, como durante um despejo de spot ou ao alterar o valor da contagem mínima da API do AKS.
Usar o perfil do dimensionador automático de cluster
Você pode configurar detalhes mais granulares do dimensionador automático de cluster alterando os valores padrão no perfil de dimensionador automático em todo o cluster. Por exemplo, um evento de redução vertical ocorre depois que os nós são subutilizados por dez minutos. Caso você tenha cargas de trabalho que são executadas a cada 15 minutos, convém alterar o perfil de dimensionamento automático para realizar redução vertical em nós subutilizados após 15 ou 20 minutos. Quando você habilita o dimensionador automático de cluster, um perfil padrão é usado, a menos que você especifique configurações diferentes.
Importante
O perfil de dimensionamento automático de cluster afeta todos os pools de nós que usam o dimensionador automático de clusters. Não é possível definir um perfil de dimensionamento automático por pool de nós. Quando você define o perfil, todos os pools de nós existentes com o dimensionador automático de clusters habilitado começam a usar o perfil imediatamente.
Configurações de perfil do dimensionador automático de cluster
A tabela a seguir lista as configurações disponíveis para o perfil do dimensionador automático de cluster:
| Configuração | Descrição | Valor padrão |
|---|---|---|
scan-interval |
Com que frequência o cluster é reavaliado para escalar ou reduzir verticalmente. | 10 segundos |
scale-down-delay-after-add |
Quanto tempo depois da operação de escalar verticalmente a avaliação de redução vertical será retomada. | 10 minutos |
scale-down-delay-after-delete |
Quanto tempo após a exclusão do nó a avaliação de redução vertical é retomada. | scan-interval |
scale-down-delay-after-failure |
Quanto tempo após a falha na redução vertical a avaliação de redução vertical é retomada. | Três minutos |
scale-down-unneeded-time |
Quanto tempo um nó deve permanecer desnecessário antes de estar qualificado para redução vertical. | 10 minutos |
scale-down-unready-time |
Por quanto tempo um nó que não esteja preparado deve ser desnecessário para que seja elegível para redução vertical. | 20 minutos |
ignore-daemonsets-utilization |
Se os pods DaemonSet serão ignorados ao calcular a utilização de recursos para redução vertical. | false |
daemonset-eviction-for-empty-nodes |
Se os pods DaemonSet serão normalmente encerrados de nós vazios. | false |
daemonset-eviction-for-occupied-nodes |
Se os pods DaemonSet serão normalmente encerrados de nós não vazios. | true |
scale-down-utilization-threshold |
O valor máximo entre a soma de solicitações de CPU e a soma de solicitações de memória de todos os pods em execução no nó dividido pelo recurso alocável correspondente do nó, abaixo do qual um nó pode ser considerado para redução vertical. | 0,5 |
max-graceful-termination-sec |
Número máximo de segundos que o dimensionador automático do cluster aguarda para encerramento do pod ao tentar reduzir verticalmente um nó. | 600 segundos |
balance-similar-node-groups |
Detecta pools de nós semelhantes e equilibra o número de nós entre eles. | false |
expander |
O tipo de pool de nós que o expansor usa para escalar verticalmente. Os valores possíveis incluem most-pods, random, least-waste e priority. |
random |
skip-nodes-with-local-storage |
Se true, o dimensionador automático de cluster não exclui nós com pods com armazenamento local – por exemplo, EmptyDir ou HostPath. |
false |
skip-nodes-with-system-pods |
Se true, o dimensionador automático de cluster não exclui nós com pods do kube-system (exceto para DaemonSet ou pods de espelho). |
true |
max-empty-bulk-delete |
Número máximo de nós vazios que podem ser excluídos ao mesmo tempo. | 10 nós |
new-pod-scale-up-delay |
Para cenários como a escala de intermitência/lote em que você não deseja que a AC atue antes que o agendador do Kubernetes possa agendar todos os pods, você pode dizer à AC para ignorar pods não agendados antes que eles atinjam um determinado tempo decorrido. | 0 segundos |
max-total-unready-percentage |
Percentual máximo de nós não lidos no cluster. Depois que esse percentual é excedido, a autoridade de certificação interrompe as operações. | 45% |
max-node-provision-time |
Tempo máximo que o dimensionador automático aguarda para que um nó seja provisionado. | 15 minutos |
ok-total-unready-count |
Número de nós não preparados permitidos, independentemente do percentual máximo de total não preparado. | Três nós |
Observação
Os parâmetros ignore-daemonsets-utilization, daemonset-eviction-for-empty-nodes e daemonset-eviction-for-occupied-nodes são GA da API versão 2024-05-01. Se você estiver usando a CLI para atualizar esses sinalizadores, certifique-se de estar usando a versão 2.63 ou posterior.
Definir o perfil de dimensionamento automático de cluster em um novo cluster
Crie um cluster do AKS por meio do comando
az aks createe defina o perfil do dimensionador automático de cluster por meio do parâmetrocluster-autoscaler-profile.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 1 \ --enable-cluster-autoscaler \ --min-count 1 \ --max-count 3 \ --cluster-autoscaler-profile scan-interval=30s \ --generate-ssh-keys
Definir o perfil de dimensionamento automático de cluster em um cluster existente
Defina o dimensionador automático de cluster em um cluster existente por meio do comando
az aks updatee do parâmetrocluster-autoscaler-profile. O exemplo a seguir define a configuração do intervalo de verificação como30s:az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --cluster-autoscaler-profile scan-interval=30s
Configurar o perfil do dimensionador automático de cluster para redução vertical agressiva
Observação
Reduzir verticalmente de forma agressiva não é recomendado para clusters que experimentam expansões frequentes e reduções em intervalos curtos, pois isso poderia resultar em tempos de provisionamento de nó estendidos nessas circunstâncias. Aumentar scale-down-delay-after-add pode ajudar nessas circunstâncias, ao manter o nó por perto por mais tempo para lidar com cargas de trabalho de entrada.
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--cluster-autoscaler-profile scan-interval=30s,scale-down-delay-after-add=0m,scale-down-delay-after-failure=1m,scale-down-unneeded-time=3m,scale-down-unready-time=3m,max-graceful-termination-sec=30,skip-nodes-with-local-storage=false,max-empty-bulk-delete=1000,max-total-unready-percentage=100,ok-total-unready-count=1000,max-node-provision-time=15m
Configurar o perfil de dimensionador automático de cluster para cargas de trabalho com intermitência
az aks update \
--resource-group "myResourceGroup" \
--name myAKSCluster \
--cluster-autoscaler-profile scan-interval=20s,scale-down-delay-after-add=10m,scale-down-delay-after-failure=1m,scale-down-unneeded-time=5m,scale-down-unready-time=5m,max-graceful-termination-sec=30,skip-nodes-with-local-storage=false,max-empty-bulk-delete=100,max-total-unready-percentage=100,ok-total-unready-count=1000,max-node-provision-time=15m
Redefinir o perfil de dimensionamento automático de cluster para valores padrão
Redefina o perfil do dimensionador automático de cluster por meio do comando
az aks update.az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --cluster-autoscaler-profile ""
Recuperar status e logs do dimensionador automático de cluster
Você pode recuperar logs e status atualizações do dimensionador automático de cluster para ajudar a diagnosticar e depurar eventos de dimensionamento automático. O AKS gerencia o dimensionador automático de cluster em seu nome e o executa no plano de controle gerenciado. Você pode habilitar o nó do plano de controle para ver os logs e as operações do dimensionador automático de cluster.
Configure uma regra para que os logs de recursos enviem os logs do dimensionador automático do cluster para o Log Analytics usando as instruções aqui. Certifique-se de marcar a caixa
cluster-autoscalerao selecionar as opções de Logs.Selecione a seção Log no seu cluster.
Insira o exemplo de consulta a seguir no Log Analytics:
AzureDiagnostics | where Category == "cluster-autoscaler"Exibir eventos não disparados de escala vertical do dimensionador automático de cluster na CLI.
kubectl get events --field-selector source=cluster-autoscaler,reason=NotTriggerScaleUpExibir eventos de aviso do dimensionador automático de cluster na CLI.
kubectl get events --field-selector source=cluster-autoscaler,type=WarningO dimensionamento automático de cluster também gravará o status da integridade em um
configmapchamadocluster-autoscaler-status. Você pode recuperar esses logs usando o seguintekubectlcomando:kubectl get configmap -n kube-system cluster-autoscaler-status -o yaml
Para obter mais informações, confira Perguntas frequentes sobre o projeto do GitHub do Kubernetes/dimensionador automático.
Métricas do dimensionador automático de cluster
Você pode habilitar as métricas do painel de controle (versão prévia) para ver os logs e as operações do dimensionador automático de cluster com o Serviço gerenciado do Azure Monitor para o complemento do Prometheus
Próximas etapas
Este artigo mostrou como dimensionar automaticamente o número de nós do AKS. Você também pode usar o dimensionador automático de pod horizontal para ajustar automaticamente o número de pods que executam o aplicativo. Para obter as etapas de como usar o dimensionador automático de pod horizontal, confira Dimensionar aplicativos no AKS.
Para ajudar a melhorar ainda mais a utilização de recursos do cluster e liberar CPU e memória para outros pods, consulte Vertical Pod Autoscaler.