Se o cluster não tiver recursos suficientes para agendar pods, use o dimensionamento automático de nós para adicionar ou remover nós automaticamente. O dimensionamento automático de nós é ideal para cenários menos exigentes, como clusters com menos de 20 pools de nós com dimensionamento automático ou menos de 100 nós em cada pool. Também é adequado para cargas de trabalho com tráfego estável, demandas de recursos previsíveis e nas quais uma única ação de dimensionamento basta.
Antes de começar
Para usar o recurso de dimensionamento automático de nós com eficiência, leia primeiro Node scaling e compreenda os pontos a seguir:
Funcionamento e recursos do dimensionamento automático de nós
Casos de uso adequados para o dimensionamento automático de nós
Considerações importantes antes de usar o dimensionamento automático de nós
Durante uma redução de escala (scale-in), as instâncias por assinatura são removidas do cluster, mas não encerradas. Para evitar custos extras, use instâncias de pagamento conforme o uso ao ativar este recurso.
Precauções
Antes de começar, verifique se você já ativou o service Auto Scaling.
Para obter informações sobre cotas e limites, consulte Precautions referente ao dimensionamento de nós.
-
O dimensionamento automático de nós apresenta known limitations com determinadas políticas de agendamento, o que pode levar a comportamentos inesperados de dimensionamento. Se suas cargas de trabalho ou componentes utilizarem uma política de agendamento não suportada, adote uma das seguintes soluções:
Solução 1: Migre para o node instant scaling.
-
Solução 2: Implante as cargas de trabalho ou componentes afetados em um pool de nós onde o dimensionamento de nós não esteja ativado.
Por exemplo, para implantar o componente ack-node-local-dns-admission-controller, implante-o em um pool de nós onde o dimensionamento de nós não esteja ativado e adicione o seguinte requisito de afinidade de nó à configuração do componente.
nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: "k8s.aliyun.com" operator: "NotIn" values: ["true"]
O componente cluster-autoscaler requer recursos de nó durante atualizações ou implantações. A falta de recursos pode causar falhas nessas operações e interromper o dimensionamento. Garanta que seus nós tenham recursos adequados para evitar tais falhas.
Este recurso envolve as seguintes etapas:
Step 1: Enable node autoscaling for the cluster: Ative primeiro o dimensionamento automático de nós no nível do cluster para que as políticas de dimensionamento automático do pool de nós entrem em vigor.
Step 2: Configure autoscaled node pools: O recurso de dimensionamento automático de nós afeta apenas os pools de nós onde está ativado. Portanto, defina o modo de dimensionamento dos pools de nós específicos como Auto.
Etapa 1: Ativar o dimensionamento automático de nós
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em .
Na página Node Pools, ao lado de Node Scaling, clique em Enable.
-
Se esta for a primeira vez que você utiliza o dimensionamento automático de nós, siga as instruções na tela para ativar o service Auto Scaling e conceder as permissões necessárias. Caso já tenha feito isso, pule esta etapa.
Cluster gerenciado ACK: Autorize a função AliyunCSManagedAutoScalerRole.
-
Cluster dedicado ACK: Autorize a função KubernetesWorkerRole e anexe a AliyunCSManagedAutoScalerRolePolicy.
Na caixa de diálogo Node Scaling Configuration, após a aprovação da pré-verificação, clique no link da função RAM (como
KubernetesWorkerRole-xxxx) para concluir a autorização no console RAM.
-
Na página Node Scaling Configuration, defina Node Scaling Plan como Auto Scaling, configure os parâmetros e clique em OK.
É possível alternar a solução de dimensionamento após a seleção. Para alternar, altere a seleção para node instant scaling , leia atentamente os avisos na tela e siga as instruções para concluir a operação.
Parâmetro
Descrição
Node Pool Scale-out Policy
Random Policy: Se vários pools de nós forem elegíveis para expansão, um será escolhido aleatoriamente.
Default Policy: Quando múltiplos pools de nós estiverem aptos para expansão, o sistema escolherá aquele que resultar no menor desperdício de recursos.
Priority-based Policy: Caso haja vários pools de nós elegíveis para expansão, o sistema selecionará o de maior prioridade.
A prioridade do pool de nós é definida pelo parâmetro Node Pool Scale-out Priority.
Node Pool Scale-out Priority
Define a prioridade de expansão para os pools de nós. Este parâmetro só entra em vigor quando Node Pool Scale-out Policy está definido como Priority-based Policy.
Intervalo de valores: número inteiro de 1 a 100. Um valor maior indica maior prioridade.
Clique em Add ao lado do parâmetro, selecione um pool de nós com dimensionamento automático e defina uma prioridade para ele.
Se não houver pools de nós com dimensionamento automático disponíveis, ignore este parâmetro por enquanto e defina a prioridade após concluir a Etapa 2: Configurar pools de nós com dimensionamento automático.
Scaling Sensitivity
Intervalo em que o sistema verifica a necessidade de dimensionamento. O valor padrão é 60s.
Durante o dimensionamento automático, o componente de dimensionamento aciona eventos de expansão automaticamente com base no status de agendamento.
ImportanteNós ECS: O componente de dimensionamento só reduz a escala de um nó quando as condições de Scale-in Threshold, Scale-in Trigger Delay e Cooldown Period forem todas atendidas.
Nós GPU: A redução de escala de um nó GPU pelo componente de dimensionamento ocorre apenas se as condições de GPU Scale-in Threshold, Scale-in Trigger Delay e Cooldown Period forem satisfeitas simultaneamente.
Allow Scale-in
Especifica se a redução de escala de nós é permitida. Se esta opção estiver desativada, as configurações relacionadas à redução de escala não entrarão em vigor. Use esta configuração com cautela.
Scale-in Threshold
Proporção entre as solicitações de recursos e a capacidade total de recursos de um nó em um pool de nós com dimensionamento automático de nós ativado.
Um nó torna-se elegível para redução de escala somente se a utilização de recursos de CPU e memória estiver abaixo do Scale-in Threshold.
GPU Scale-in Threshold
Limiar de redução de escala para instâncias GPU.
Uma instância GPU qualifica-se para redução de escala apenas quando sua utilização de CPU, memória e GPU estiver abaixo do GPU Scale-in Threshold configurado.
Scale-in Trigger Delay
Atraso entre o momento em que um nó se torna elegível para redução de escala e a execução da operação. Unidade: minutos. Valor padrão: 10 minutos.
ImportanteO componente de dimensionamento só executa a redução de escala de um nó após a condição de Scale-in Threshold ser atendida e a duração do Scale-in Trigger Delay ter decorrido.
Cooldown Period
Período após o evento de expansão mais recente durante o qual o componente de dimensionamento não executará uma redução de escala.
Durante o período de resfriamento, as ações de redução de escala são pausadas, mas o sistema continua avaliando a elegibilidade dos nós. Assim que o resfriamento termina, qualquer nó que tenha atendido às condições de redução de escala (limiar e tempo de adiamento) é reduzido. Por exemplo, com um resfriamento de 10 minutos e um adiamento de 5 minutos, nenhum nó é removido por 10 minutos após uma expansão. Se um nó se tornar elegível no minuto 2, ele será removido no minuto 10, pois esteve elegível por 8 minutos, o que excede o adiamento de 5 minutos.
Etapa 2: Configurar pools de nós com dimensionamento automático
Configure um pool de nós existente alterando seu Scaling Mode para Auto ou crie um novo pool de nós com o dimensionamento automático ativado.
Para obter instruções detalhadas, consulte Create and manage a node pool. Os principais parâmetros estão descritos abaixo:
Parâmetro | Descrição |
Scaling Mode |
Importante
|
Instances | Os valores escaláveis de Min. Instances e Max. Instances no pool de nós não incluem suas instâncias existentes. Nota
|
Parâmetros relacionados à instância | Quando um pool de nós expande, ele aloca instâncias a partir das ECS instance family configuradas. Para melhorar a taxa de sucesso das expansões, selecione vários tipos de instância em várias zonas para evitar indisponibilidade ou falta de estoque. O tipo específico de instância para expansão é determinado pela Scaling Policy configurada. Para garantir estabilidade comercial e agendamento preciso de recursos, não misture tipos de instância GPU e não-GPU no mesmo pool de nós. É possível configurar os tipos de instância usados para expansão das duas maneiras seguintes:
Consulte as recomendações de força de elasticidade no console ou view the node pool elasticity strength após a criação do pool de nós. Para informações sobre tipos de instância não suportados e recomendações de configuração de nós, consulte ECS instance type configuration recommendations. Recursos de cloud e faturamento: |
Operating System | Para nós com dimensionamento automático, há suporte para imagens Alibaba Cloud Linux, Windows e Windows Core. Ao selecionar uma imagem Windows ou Windows Core, o sistema adiciona automaticamente a mancha (taint) |
Node Labels | Rótulos de nó adicionados à configuração do cluster são aplicados automaticamente aos nós criados durante uma expansão. Importante O dimensionamento automático de nós reconhece rótulos e manchas de nó somente após serem mapeados para tags de pool de nós, havendo um limite para o número dessas tags. Portanto, para um pool de nós com dimensionamento automático, garanta que o número total de tags ECS, manchas e rótulos de nó configurados não exceda 12. |
scaling policy | Configure como o pool de nós seleciona instâncias durante o dimensionamento.
|
Use Pay-as-you-go Instances When Spot Instances Are Insufficient | Isso exige que o método de faturamento esteja definido como Spot Instance. Quando ativado, se não for possível criar instâncias spot suficientes devido a preço, estoque ou outros motivos, o ACK tentará automaticamente criar instâncias sob demanda como complemento. Recursos de cloud e faturamento: |
Enable Supplemental Spot Instance | Isso exige que o método de faturamento esteja definido como Spot Instance. Quando ativado, ao receber uma mensagem do sistema indicando que uma instância spot está prestes a ser recuperada (5 minutos antes da recuperação), o ACK tentará expandir uma nova instância como compensação.
A liberação proativa de instâncias spot pode causar interrupções nos negócios. Para melhorar a taxa de sucesso da compensação, recomendamos também ativar Use Pay-as-you-go Instances When Spot Instances Are Insufficient. Recursos de cloud e faturamento: |
Scaling Mode | Isso requer que o Auto Scaling do pool de nós esteja ativado e o Scaling Mode definido como Auto.
|
Taints | Impede que pods sejam agendados para o nó. |
Etapa 3: (Opcional) Verificar o resultado
Após concluir estas etapas, o recurso de dimensionamento automático de nós estará pronto para uso. O pool de nós indicará que o dimensionamento automático está ativo e o sistema instalará automaticamente o componente cluster-autoscaler.
O dimensionamento automático está ativado para o pool de nós
Na página Node Pools, a lista exibe os pools de nós para os quais o dimensionamento automático está ativado.
O componente cluster-autoscaler está instalado
No painel de navegação à esquerda da página de gerenciamento do cluster, escolha .
Selecione o namespace kube-system. O componente cluster-autoscaler aparecerá na lista.
Perguntas frequentes
Categoria | Subcategoria | Link |
Comportamento de expansão e redução do dimensionamento automático de nós | ||
Comportamento de dimensionamento personalizado | ||
Componente cluster-autoscaler | ||