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.
Central de ajuda/ Cloud Container Engine/ Guia de usuário/ Auto Scaling/ Dimensionamento de um nó/ Criação de uma política de dimensionamento de nós
Atualizado em 2024-11-28 GMT+08:00

Criação de uma política de dimensionamento de nós

O CCE fornece dimensionamento de nó por meio do complemento autoscaler. Os nodes com especificações diferentes podem ser adicionados automaticamente em AZs sob demanda.

Se uma política de dimensionamento de nó e a configuração no complemento autoscaler entrarem em vigor ao mesmo tempo, por exemplo, há pods que não podem ser agendados e o valor de uma métrica atinge o limite ao mesmo tempo, expansão é realizada primeiro para os pods não programáveis.

  • Se a expansão for bem-sucedida para os pods não programáveis, o sistema ignora a lógica de regra baseada em métricas e entra no próximo loop.
  • Se a expansãot falhar para os pods não programáveis, a regra baseada em métrica será executada.

Pré-requisitos

Antes de usar a função de dimensionamento de nó, instale o complemento autoscaler da v1.13.8 ou posterior no cluster.

Restrições

  • Somente os pools de nós de pagamento por uso suportam o dimensionamento automático.
  • As políticas de dimensionamento automático se aplicam aos pools de nós. Quando o número de nós em um pool de nós é 0 e a política de dimensionamento é baseada no uso da CPU ou da memória, o escalonamento de nós não é acionado.
  • A redução de nó causará perda de dados de PVC/PV para os PVs locais associado ao nó. Esses PVCs e PVs não podem ser restaurados ou usados novamente. Numa redução de nó, o pod que usa o PV local é despejado do nó. Um novo pod é criado e permanece no estado pendente. Isso ocorre porque a PVC usada pelo pod tem um rótulo de nó, devido ao qual o pod não pode ser programado.

Procedimento

  1. Efetue logon no console do CCE e clique no nome do cluster para acessar o console do cluster.
  2. Escolha Node Scaling no painel de navegação.

    • Se Uninstalled for exibido ao lado do nome do complemento, clique em Install, defina os parâmetros do complemento conforme necessário e clique em Install para instalar o complemento.
    • Se Installed for exibido ao lado do nome do complemento, o complemento foi instalado.

  3. Clique em Create Node Scaling Policy no canto superior direito e defina os parâmetros da seguinte forma:

    • Policy Name: nome da política a ser criada, que pode ser personalizada.
    • Associated Node Pools: selecione o pool de nós a ser associado. Você pode associar vários pools de nós para usar a mesma política de dimensionamento.
    • Rules: clique em Add Rule. Na caixa de diálogo exibida, defina os seguintes parâmetros:

      Rule Name: insira o nome de uma regra.

      Rule Type: você pode selecionar Metric-based ou Periodic. As diferenças entre os dois tipos são as seguintes:

      • Metric-based:
        Condition: selecione CPU allocation rate ou Memory allocation rate e insira um valor. O valor deve ser maior do que a porcentagem de dimensionamento configurada no complemento autoscaler.
        • Alocação de recursos (%) = recursos solicitados pelos pods no pool de nós/recursos alocáveis aos pods no pool de nós
        • Se várias regras atenderem às condições, as regras serão executadas em um dos seguintes modos:

          Se as regras baseadas na CPU allocation rate e na memory allocation rate forem configuradas e duas ou mais regras atenderem às condições de expansão, a regra que adicionará a maioria dos nós será executada.

          Se uma regra baseada na CPU allocation rate e uma regra periódica forem configuradas e ambas atenderem às condições de expansão, uma delas será executada aleatoriamente. A regra executada primeiro (regra A) altera o pool de nós para o estado de escala. Como resultado, a outra regra (regra B) não pode ser executada. Depois que a regra A for executada e o status do pool de nós se tornar normal, a regra B não será executada.

        • Se regras baseadas na CPU allocation rate e na memory allocation rate estiverem configuradas, o período de detecção de política varia de acordo com a lógica de processamento de cada loop do complemento autoscaler. A expansão é acionada quando as condições são atendidas, mas é limitada por outros fatores, como o intervalo de resfriamento e o status do pool de nós.
      • Periodic:

        Trigger Time: você pode selecionar um ponto de tempo específico todos os dias, todas as semanas, todos os meses ou todos os anos.

      Action: defina uma ação a ser executada quando a condição de gatilho for atendida.

      Você pode clicar em Add Rule para adicionar mais políticas de dimensionamento de nó. Você pode adicionar no máximo uma regra baseada em uso de CPU e uma regra baseada em uso de memória. O número total de regras não pode exceder 10.

  4. Clique em OK.

Restrições em redução

Você pode definir políticas de expansão do nó somente ao instalar o complemento autoscaler.

A redução de nó pode ser acionada somente pela taxa de alocação de recursos. Quando as taxas de alocação de CPU e memória em um cluster são menores do que os limites especificados (definidos quando o complemento autoscaler é instalado ou modificado), a redução é acionada para os nós no pool de nós (essa função pode ser desativada), conforme mostrado na Figura 1

Figura 1 Configuração de redução automática

Exemplo YAML

Veja a seguir um exemplo YAML de uma política de dimensionamento de nó:

apiVersion: autoscaling.cce.io/v1alpha1
kind: HorizontalNodeAutoscaler
metadata:
  creationTimestamp: "2020-02-13T12:47:49Z"
  generation: 1
  name: xxxx
  namespace: kube-system
  resourceVersion: "11433270"
  selfLink: /apis/autoscaling.cce.io/v1alpha1/namespaces/kube-system/horizontalnodeautoscalers/xxxx
  uid: c2bd1e1d-60aa-47b5-938c-6bf3fadbe91f
spec:
  disable: false
  rules:
  - action:
      type: ScaleUp
      unit: Node
      value: 1
    cronTrigger:
      schedule: 47 20 * * *
    disable: false
    ruleName: cronrule
    type: Cron
  - action:
      type: ScaleUp
      unit: Node
      value: 2
    disable: false
    metricTrigger:
      metricName: Cpu
      metricOperation: '>'
      metricValue: "40"
      unit: Percent
    ruleName: metricrule
    type: Metric
  targetNodepoolIds:
  - 7d48eca7-3419-11ea-bc29-0255ac1001a8
Tabela 1 Parâmetros principais

Parâmetro

Tipo

Descrição

spec.disable

Bool

Se ativar a política de dimensionamento. Este parâmetro tem efeito para todas as regras na política.

spec.rules

Array

Todas as regras em uma política de dimensionamento.

spec.rules[x].ruleName

String

Nome da regra.

spec.rules[x].type

String

Tipo da regra. Atualmente, Cron e Metric são suportados.

spec.rules[x].disable

Bool

Troca de regra. Atualmente, apenas false é suportado.

spec.rules[x].action.type

String

Tipo de ação de regra. Atualmente, apenas ScaleUp é suportado.

spec.rules[x].action.unit

String

Unidade de ação de regra. Atualmente, apenas Node é suportado.

spec.rules[x].action.value

Integer

Valor da ação da regra.

spec.rules[x].cronTrigger

/

Opcional. Este parâmetro é válido apenas em regras periódicas.

spec.rules[x].cronTrigger.schedule

String

Expressão Cron de uma regra periódica.

spec.rules[x].metricTrigger

/

Opcional. Esse parâmetro é válido somente em regras baseadas em métricas.

spec.rules[x].metricTrigger.metricName

String

Métrica de uma regra baseada em métricas. Atualmente, Cpu e Memory são suportados.

spec.rules[x].metricTrigger.metricOperation

String

Operador de comparação de uma regra baseada em métricas. Atualmente, apenas > é suportado.

spec.rules[x].metricTrigger.metricValue

String

Limite métrico de uma regra baseada em métricas. O valor pode ser qualquer número inteiro de 1 a 100 e deve ser uma cadeia de caracteres.

spec.rules[x].metricTrigger.Unit

String

Unidade do limite de regra baseado em métricas. Atualmente, apenas % é suportado.

spec.targetNodepoolIds

Array

Todos os pools de nós associados à política de dimensionamento.

spec.targetNodepoolIds[x]

String

ID do pool de nós associado à política de dimensionamento.