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 se há nós subutilizados e os remove quando as cargas de trabalho podem ser reagendadas com segurança e as condições de redução são atendidas.
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.
Habilitar ou desabilitar o dimensionador automático de cluster em um cluster
Importante
O dimensionamento automático do cluster é um componente de Kubernetes. Embora o cluster do AKS use Conjuntos 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 máximo de 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 update e habilite e configure o dimensionador automático de cluster no pool de nós usando o parâmetro --enable-cluster-autoscaler e especificando um nó --min-count e --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 3
Sã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 update e do parâmetro --disable-cluster-autoscaler.
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--disable-cluster-autoscaler
Os 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.
Habilitar ou desabilitar 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 update e 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 update e atualize o dimensionador automático de cluster usando o parâmetro --update-cluster-autoscaler e especificando o nó atualizado --min-count e --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.
Definir o perfil de dimensionamento automático de cluster em um novo cluster
Crie um cluster do AKS por meio do comando az aks create e defina o perfil do dimensionador automático de cluster por meio do parâmetro cluster-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 update e 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.
O comando a seguir configura um perfil de redução agressiva. Ele verifica o cluster a cada 30 segundos, retoma a avaliação de redução imediatamente após a adição de um nó e um minuto após uma falha, torna os nós desnecessários e não resguardados elegíveis para redução após três minutos, limita a terminação normal para 30 segundos, permite que até 1.000 nós vazios sejam excluídos de uma vez e eleva os limites de nó não ressocimento para 100% ou 1.000 nós. Ele também mantém explicitamente o comportamento padrão de não ignorar nós com armazenamento local e esperar até 15 minutos para que um nó seja provisionado.
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
O comando a seguir configura um perfil para cargas de trabalho com intermitência. Ele verifica o cluster a cada 20 segundos, pausa a avaliação horizontal por 10 minutos depois que um nó é adicionado para reter a capacidade de intermitências de entrada, retoma a avaliação um minuto após uma falha, torna nós desnecessários e desproteger qualificados para redução após cinco minutos, limita o término normal a 30 segundos, permite que até 100 nós vazios sejam excluídos ao mesmo tempo, e eleva os limites de nó de despreparado para 100% ou 1.000 nós. Ele também mantém explicitamente o comportamento padrão de não ignorar nós com armazenamento local e esperar até 15 minutos para que um nó seja provisionado.
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. Para coletar os logs do plano de controle, crie uma configuração de diagnóstico Azure Monitor para o cluster do AKS no portal Azure ou use az monitor diagnostic-settings createe habilite a cluster-autoscaler categoria de log.
Configure uma regra para logs de recursos para enviar por push logs de dimensionador automático de cluster para Log Analytics usando a coleção configurar logs de recursos para instruções do plano de controle do AKS. Certifique-se de marcar a caixa
cluster-autoscalerao selecionar as opções de Logs.Selecione a seção Logs no cluster.
Se as configurações de diagnóstico usarem Azure modo de diagnóstico, insira a seguinte consulta em Log Analytics:
AzureDiagnostics | where Category == "cluster-autoscaler"Se as configurações de diagnóstico usarem o modo específico do recurso, insira a seguinte consulta em vez disso:
AKSControlPlane | 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 esse status 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 usar métricas do plano de controle (versão prévia) com Azure Monitor serviço gerenciado do Prometheus para coletar métricas de dimensionador automático de cluster. O controlplane-cluster-autoscaler destino de raspagem é desabilitado por padrão, portanto, você deve habilitá-lo para coletar essas métricas.
As métricas disponíveis incluem cluster_autoscaler_unschedulable_pods_count e cluster_autoscaler_unneeded_nodes_count, que mostram o número de pods que não podem ser agendados e nós marcados como candidatos à remoção. Você também pode monitorar se o cluster é seguro para dimensionar automaticamente cluster_autoscaler_cluster_safe_to_autoscale e se a redução horizontal está em um período de resfriamento com cluster_autoscaler_scale_down_in_cooldown.
Conteúdo relacionado
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.