Se o seu cluster não tiver recursos suficientes para agendar pods, você poderá usar 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 de dimensionamento menos exigentes, como clusters com menos de 20 grupos de nós com dimensionamento automático ou menos de 100 nós em cada um. Também é adequado para workloads com tráfego estável, demandas de recursos previsíveis e nas quais uma única ação de dimensionamento é suficiente.
Antes de começar
Para usar o recurso de dimensionamento automático de nós de forma eficaz, recomendamos que você leia primeiro Node scaling e entenda o seguinte:
Como o dimensionamento automático de nós funciona e seus recursos
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 são encerradas. Para evitar custos extras, use instâncias de pagamento conforme o uso ao ativar este recurso.
Precauções
Antes de começar, certifique-se de ter ativado o service do Auto Scaling.
Para obter informações sobre cotas e limites, consulte Precautions para o dimensionamento de nós.
-
O dimensionamento automático de nós tem known limitations com determinadas políticas de agendamento, o que pode levar a um comportamento de dimensionamento inesperado. Se seus workloads ou componentes usarem uma política de agendamento não suportada, recomendamos uma das seguintes soluções:
Solução 1: Mude para node instant scaling.
-
Solução 2: Implante os workloads ou componentes afetados em um grupo 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 grupo 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. Recursos insuficientes podem causar falhas nessas operações e interromper o dimensionamento. Certifique-se de que seus nós tenham recursos adequados para evitar essas falhas.
Este recurso envolve as seguintes etapas:
Step 1: Enable node autoscaling for the cluster: Você deve primeiro ativar o dimensionamento automático de nós no nível do cluster para que as políticas de Auto Scaling do grupo de nós tenham efeito.
Step 2: Configure autoscaled node pools: O recurso de dimensionamento automático de nós afeta apenas os grupos de nós onde está ativado. Portanto, você deve definir o modo de dimensionamento de grupos de nós específicos como Auto.
Etapa 1: Ativar o dimensionamento automático de nós
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em seu 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ê usa o dimensionamento automático de nós, siga as instruções na tela para ativar o service do Auto Scaling e conceder as permissões necessárias. Se você já fez isso, pule esta etapa.
Cluster gerenciado pelo ACK: Autorize a função AliyunCSManagedAutoScalerRole.
-
Cluster dedicado do 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 em link da função RAM (como
KubernetesWorkerRole-xxxx) para concluir a autorização no console do RAM.
-
Na página Node Scaling Configuration, defina Node Scaling Plan como Auto Scaling, configure os parâmetros e clique em OK.
Você pode alterar a solução de dimensionamento após selecioná-la. Para alterar, mude 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 grupos de nós forem elegíveis para expansão (scale-out), um será escolhido aleatoriamente.
Default Policy: Se vários grupos de nós forem elegíveis para expansão, escolha aquele que resulta no menor desperdício de recursos.
Priority-based Policy: Se vários grupos de nós forem elegíveis para expansão, escolha aquele com a maior prioridade.
A prioridade do grupo 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 grupos de nós. Este parâmetro só tem efeito quando Node Pool Scale-out Policy está definido como Priority-based Policy.
Intervalo de valores: um número inteiro de 1 a 100. Um valor maior indica uma prioridade mais alta.
Você deve clique em Add ao lado do parâmetro, selecione um grupo de nós com dimensionamento automático e defina uma prioridade para ele.
Se não houver grupos de nós com dimensionamento automático disponíveis, você pode ignorar este parâmetro por enquanto e defina a prioridade após concluir Step 2: Configure autoscaled node pools.
Scaling Sensitivity
O intervalo no qual o sistema verifica se deve realizar o dimensionamento. O valor padrão é 60s.
Durante o Auto Scaling, o componente de dimensionamento aciona automaticamente eventos de expansão com base no status de agendamento.
ImportanteNós ecs: O componente de dimensionamento só pode reduzir a escala (scale-in) de um nó quando as condições de Scale-in Threshold, Scale-in Trigger Delay e Cooldown Period forem todas atendidas.
Nós GPU: O componente de dimensionamento só pode reduzir a escala de um nó GPU quando as condições de GPU Scale-in Threshold, Scale-in Trigger Delay e Cooldown Period forem todas atendidas.
Allow Scale-in
Especifica se deve permitir a redução de escala do nó. Se isso estiver desativado, as configurações relacionadas à redução de escala não terão efeito. Use esta configuração com cuidado.
Scale-in Threshold
A proporção de solicitações de recursos em relação à capacidade total de recursos de um nó em um grupo de nós com dimensionamento automático de nós ativado.
Um nó só é elegível para redução de escala se a utilização de recursos de cpu e memória estiver abaixo do Scale-in Threshold.
GPU Scale-in Threshold
O limiar de redução de escala para instâncias GPU.
Uma instância GPU só é elegível para redução de escala quando a utilização de cpu, memória e GPU estiver abaixo do GPU Scale-in Threshold configurado.
Scale-in Trigger Delay
O atraso entre o momento em que um nó se torna elegível para redução de escala e o momento em que a operação é realizada. Unidade: minutos. Valor padrão: 10 minutos.
ImportanteO componente de dimensionamento só pode realizar 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 passado.
Cooldown Period
O período após o evento de expansão mais recente durante o qual o componente de dimensionamento não realizará uma redução de escala.
Durante o período de resfriamento (cooldown), 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: Configure grupos de nós com dimensionamento automático
Você pode configure um grupo de nós existente alterando seu Scaling Mode para Auto ou crie um novo grupo de nós com o Auto Scaling ativado.
Para obter instruções detalhadas, consulte Crie e gerencie um grupo de nós. Os principais parâmetros estão descritos abaixo:
Parâmetro | Descrição |
Scaling Mode |
Importante
|
Instances | As Min. Instances e Max. Instances escaláveis no grupo de nós não incluem suas instâncias existentes. Nota
|
Parâmetros relacionados à instância | Quando um grupo de nós expande, ele aloca instâncias a partir do ecs instance family configurado. 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 de instância específico para expansão é determinado pela Scaling Policy configurada. Para garantir a estabilidade dos negócios e o agendamento preciso de recursos, não misture tipos de instância GPU e não-GPU no mesmo grupo de nós. Você pode configure os tipos de instância usados para expansão das seguintes maneiras:
Você pode consulte as recomendações de força de elasticidade no console ou visualize the node pool elasticity strength após a criação do grupo de nós. Para obter 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 do Alibaba Cloud Linux, Windows e Windows Core. Selecione uma imagem do Windows ou Windows Core, o sistema adiciona automaticamente o taint |
Node Labels | Os rótulos de nó (node labels) 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 taints de nós somente após serem mapeados para tags de grupo de nós, e há um limite para o número de tags de grupo de nós. Portanto, para um grupo de nós com dimensionamento automático, certifique-se de que o número total de tags ecs, taints e rótulos de nó configurados não exceda 12. |
scaling policy | Configure como o grupo de nós seleciona instâncias durante o dimensionamento de nós.
|
Use Pay-as-you-go Instances When Spot Instances Are Insufficient | Isso requer que o método de faturamento seja 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á criar automaticamente instâncias sob demanda como suplemento. Recursos de cloud e faturamento: |
Enable Supplemental Spot Instance | Isso requer que o método de faturamento seja definido como Spot Instance. Quando ativado, ao receber uma mensagem do sistema de 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 grupo de nós esteja ativado e o Scaling Mode definido como Auto.
|
Taints | Impede que os pods sejam agendados para o nó. |
Etapa 3: (Opcional) Verifique o resultado
Após concluir estas etapas, o recurso de dimensionamento automático de nós estará pronto para uso. O grupo de nós indicará que o Auto Scaling está ativo e instale automaticamente o componente cluster-autoscaler.
O Auto Scaling está ativado para o grupo de nós
Na página Node Pools, a lista de grupos de nós mostra os grupos de nós para os quais o Auto Scaling 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 aparece na lista.
Perguntas frequentes
Categoria | Subcategoria | Link |
Comportamento de expansão e redução de escala do dimensionamento automático de nós | ||
Comportamento de dimensionamento personalizado | ||
Componente cluster-autoscaler | ||