Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-11-28 GMT+08:00

Autoscaler de cluster do CCE

Introdução

O Autoscaler é um controlador importante do Kubernetes. Ele suporta escalabilidade de microsserviços e é fundamental para o design sem servidor.

Quando o uso da CPU ou da memória de um microsserviço é muito alto, o escalonamento automático de pods horizontais é acionado para adicionar pods e reduzir a carga. Esses pods podem ser reduzidos automaticamente quando a carga é baixa, permitindo que o microsserviço seja executado da forma mais eficiente possível.

O CCE simplifica a criação, a atualização e o dimensionamento manual de clusters do Kubernetes, nos quais as cargas de tráfego mudam ao longo do tempo. Para equilibrar o uso de recursos e o desempenho da carga de trabalho dos nós, o Kubernetes introduz o complemento Autoscaler para ajustar automaticamente o número de nós de um cluster com base no uso de recursos necessário para cargas de trabalho implementadas no cluster. Para mais detalhes, consulte Criação de uma política de dimensionamento de nós.

Comunidade de código aberto: https://github.com/kubernetes/autoscaler

Como funciona o complemento

Autoscaler controla expansão e redução automáticas.

  • Expansão automática
    Você pode escolher um dos seguintes métodos:
    • Se os pods em um cluster não puderem ser agendados devido a nós de trabalho insuficientes, o dimensionamento do cluster será acionado para adicionar nós. Os nós a serem adicionados têm a mesma especificação configurada para o pool de nós ao qual os nós pertencem.
      Expansão automática será realizada quando:
      • Os recursos de nó são insuficientes.
      • Nenhuma política de afinidade de nó é definida na configuração de agendamento do pod. Se um nó tiver sido configurado como um nó de afinidade para pods, nenhum nó não será adicionado automaticamente quando os pods não puderem ser agendados. Para obter detalhes sobre como configurar a política de afinidade de nó, consulte Política de agendamento (afinidade/antiafinidade).
    • Quando o cluster atende à política de dimensionamento do nó, a expansão de cluster também é acionada. Para mais detalhes, consulte Criação de uma política de dimensionamento de nós.

    O complemento segue a política "No Less, No More". Por exemplo, se três núcleos forem necessários para criar um pod e o sistema oferecer suporte a nós de quatro e oito núcleos, o Autoscaler criará preferencialmente um nó de quatro núcleos.

  • Redução automática
    Quando um nó de cluster fica ocioso por um período (10 minutos por padrão), o dimensionamento de cluster é acionado e o nó é excluído automaticamente. No entanto, um nó não pode ser excluído de um cluster se os seguintes pods existirem:
    • Pods que não atendem aos requisitos específicos definidos nos Orçamentos de interrupção de pods (PodDisruptionBudget)
    • Pods que não podem ser programados para outros nós devido a restrições, como políticas de afinidade e antiafinidade
    • Pods que têm a anotação cluster-autoscaler.kubernetes.io/safe-to-evict: 'false'
    • Pods (exceto aqueles criados por DaemonSets no namespace do kube-system) que existem no namespace do kube-system no nó
    • Pods que não são criados pelo controlador (Implementação/ReplicaSet/tarefa/StatefulSet)

    Quando um nó atende às condições de dimensionamento, o Autoscaler adiciona a mancha DeletionCandidateOfClusterAutoscaler ao nó com antecedência para evitar que pods sejam programados para o nó. Após a desinstalação do complemento Autoscaler, se a mancha ainda existir no nó, exclua-a manualmente.

Restrições

  • Verifique se há recursos suficientes para instalar o complemento.
  • Somente os nós de VM com pagamento por uso podem ser adicionados ou removidos pelo Autoscaler.
  • O pool de nós padrão não oferece suporte ao dimensionamento automático. Para mais detalhes, consulte Descrição de DefaultPool.
  • Quando o Autoscaler é usado, algumas manchas ou anotações podem afetar o dimensionamento automático. Portanto, não use as seguintes manchas ou anotações em clusters:
    • ignore-taint.cluster-autoscaler.kubernetes.io: a mancha funciona em nós. O Autoscaler do Kubernetes nativo suporta proteção contra expansões anormais e avalia periodicamente a proporção de nós disponíveis no cluster. Quando a proporção de nós não prontos exceder 45%, a proteção será acionada. Nesse caso, todos os nós com a mancha ignore-taint.cluster-autoscaler.kubernetes.io no cluster são filtrados do modelo do Autoscaler e registrados como nós não prontos, que afeta o dimensionamento do cluster.
    • cluster-autoscaler.kubernetes.io/enable-ds-eviction: a anotação funciona em pods, o que determina se os pods de DaemonSet podem ser removidos pelo Autoscaler. Para mais detalhes, veja Rótulos, anotações e manchas bem conhecidos.

Instalar o complemento

  1. Efetue logon no console do CCE e clique no nome do cluster para acessar o console do cluster. Escolha Add-ons no painel de navegação, localize o CCE Cluster Autoscaler à direita e clique em Install.
  2. Na página Install Add-on, configure as especificações.

    Tabela 1 Configuração de especificações

    Parâmetro

    Descrição

    Pods

    Número de pods para o complemento.

    A alta disponibilidade não é possível com um único pod. Se ocorrer um erro no nó em que o pod do complemento é executado, o complemento falhará.

    Containers

    Ajuste o número dos pods do Autoscaler e suas cotas de CPU e memória com base na escala de cluster. Para mais detalhes, consulte Tabela 2.

    Tabela 2 Cotas recomendadas do Autoscaler

    Nós

    Pods

    VCPUs solicitadas

    Limite da vCPU

    Memória solicitada

    Limite de memória

    50

    2

    1000m

    1000m

    1000 MiB

    1000 MiB

    200

    2

    4000m

    4000m

    2000 MiB

    2000 MiB

    1000

    2

    8000m

    8000m

    8000 MiB

    8000 MiB

    2000

    2

    8000m

    8000m

    8000 MiB

    8000 MiB

  3. Configure os parâmetros do complemento.

    Tabela 3 Parâmetros

    Parâmetro

    Descrição

    Total Nodes

    Número máximo de nós que podem ser gerenciados pelo cluster, dentro dos quais o dimensionamento do cluster é realizado.

    Total CPUs

    Soma máxima de núcleos de CPU de todos os nós em um cluster, dentro do qual a escalabilidade do cluster é executada.

    Total Memory (GB)

    A soma máxima da memória de todos os nós em um cluster, dentro do qual a expansão de cluster é executado.

  4. Configure as políticas de agendamento para o complemento.

    • As políticas de agendamento não entram em vigor em instâncias complementares do tipo DaemonSet.
    • Ao configurar a implementação de várias AZs ou a afinidade de nó, verifique se há nós que atendem à política de agendamento e se os recursos são suficientes no cluster. Caso contrário, o complemento não pode ser executado.
    Tabela 4 Configurações para programação de complementos

    Parâmetro

    Descrição

    Multi-AZ Deployment

    • Preferred: os pods de Implementação do complemento serão agendados preferencialmente para nós em diferentes AZs. Se todos os nós no cluster forem implementados na mesma AZ, os pods serão agendados para essa AZ.
    • Forcible: os pods de Implementação do complemento serão forçosamente agendados para nós em diferentes AZs. Se houver menos AZs do que pods, os pods extras não funcionarão.

    Node Affinity

    • Incompatibility: a afinidade de nó está desabilitada para o complemento.
    • Node Affinity: especifique os nós em que o complemento é implementado. Se você não especificar os nós, o complemento será agendado aleatoriamente com base na política de agendamento de cluster padrão.
    • Specified Node Pool Scheduling: especifique o pool de nós em que o complemento é implementado. Se você não especificar o pool de nós, o complemento será agendado aleatoriamente com base na política de agendamento de cluster padrão.
    • Custom Policies: insira os rótulos dos nós em que o complemento será implementado para políticas de agendamento mais flexíveis. Se você não especificar rótulos de nó, o complemento será agendado aleatoriamente com base na política de agendamento de cluster padrão.

      Se várias políticas de afinidade personalizadas estiverem configuradas, certifique-se de que existem nós que atendam a todas as políticas de afinidade no cluster. Caso contrário, o complemento não pode ser executado.

    Taints and Tolerations

    O uso de manchas e tolerâncias permite (não forçosamente) que Implementação do complemento seja agendada para um nó com as manchas correspondentes e controla as políticas de despejo de Implementação depois que o nó onde a Implementação está localizada é contaminado.

    O complemento adiciona a política de tolerância padrão para as manchas node.kubernetes.io/not-ready e node.kubernetes.io/unreachable, respectivamente. A janela de tempo de tolerância é 60s.

    Para mais detalhes, consulte Manchas e tolerâncias.

  5. Após a conclusão da configuração, clique em Install.

Componentes

Tabela 5 Autoscaler

Componente

Descrição

Tipo de recurso

Autoscaler

Dimensionamento automático para clusters do Kubernetes

Implementação

Período de resfriamento de redução

Os intervalos de resfriamento de redução podem ser configurados nas configurações do pool de nós e nas configurações do complemento Autoscaler.

Intervalo de resfriamento de redução configurado em um pool de nós

Esse intervalo indica o período durante o qual os nós adicionados ao pool de nós atual após uma operação de expansão não podem ser excluídos. Esse intervalo entra em vigor no nível do pool de nós.

Intervalo de resfriamento de redução configurado no complemento Autoscaler

O intervalo após uma expansão indica o período durante o qual todo o cluster não pode ser dimensionado após o complemento Autoscaler disparar a expansão (devido aos pods, métricas e políticas de dimensionamento não programáveis). Esse intervalo entra em vigor no nível do cluster.

O intervalo depois que um nó é excluído indica o período durante o qual o cluster não pode ser dimensionado após o complemento Autoscaler disparar a redução. Esse intervalo entra em vigor em todo o cluster.

O intervalo após uma falha de redução indica o período durante o qual o cluster não pode ser dimensionado após o complemento Autoscaler disparar a redução. Esse intervalo entra em vigor em todo o cluster.