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 uma carga de trabalho/ Criação de uma política CustomedHPA para o dimensionamento automático da carga de trabalho
Atualizado em 2024-11-28 GMT+08:00

Criação de uma política CustomedHPA para o dimensionamento automático da carga de trabalho

Uma política CustomedHPA dimensiona as Implementações com base em métricas (como uso da CPU e uso da memória) ou em um intervalo periódico (um ponto de tempo específico todos os dias, todas as semanas, todos os meses ou todos os anos). Esse tipo de política é um recurso de dimensionamento automático aprimorado do CCE.

Funções suportadas:
  • O dimensionamento pode ser realizado com base na porcentagem do número atual de pods.
  • A etapa mínima de dimensionamento pode ser definida.
  • Diferentes operações de escala podem ser executadas com base nos valores métricos reais.

Pré-requisitos

Para usar uma política CustomedHPA, você deve instalar o complemento cce-hpa-controller. Se a versão do cce-hpa-controller for anterior a 1.2.11, o complemento Prometheus deve ser instalado. Se a versão do cce-hpa-controller for 1.2.11 ou posterior, os complementos que podem fornecer a API de métricas devem ser instalados. Selecione um dos seguintes complementos com base na versão do cluster e nos requisitos reais.

Restrições

  • As políticas CustomedHPA podem ser criadas apenas para clusters de v1.15 ou posterior.
  • Para clusters anteriores à v1.19.10, se uma política HPA for usada para expandir uma carga de trabalho com volumes do EVS montados, os pods existentes não poderão ser lidos ou gravados quando um novo pod for agendado para outro nó.

    Para clusters de v1.19.10 e posterior, se uma política HPA for usada para expandir uma carga de trabalho com o volume do EVS montado, um novo pod não poderá ser iniciado porque os discos EVS não podem ser anexados.

  • As especificações do cce-hpa-controller são decididas pelo número total de contêineres no cluster e pelo número de políticas de escala. É aconselhável configurar 500m de CPU e 1.000 MiB de memória para cada 5.000 contêineres e 100m de CPU e 500 MiB de memória para cada 1.000 políticas de dimensionamento.

Procedimento

  1. Efetue logon no console do CCE e clique no nome do cluster para acessar o console do cluster.
  2. Escolha Auto Scaling no painel de navegação e clique na guia CustomedHPA Policy.

    • 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. Depois que o complemento for instalado, clique em Create CustomedHPA Policy no canto superior direito.
  4. Defina parâmetros de política.

    Tabela 1 Parâmetros de política CustomedHPA

    Parâmetro

    Descrição

    Policy Name

    Nome da política a ser criada. Defina este parâmetro conforme necessário.

    Namespace

    Namespace ao qual a carga de trabalho pertence.

    Associated Workload

    Carga de trabalho com a qual a política CustomedHPA está associada.

    Pod Range

    Número mínimo e máximo de pods.

    Quando uma política é acionada, os pods de carga de trabalho são escalados dentro desse intervalo.

    Cooldown Period

    Introduza um intervalo, em minutos.

    Este parâmetro indica o intervalo entre operações consecutivas de dimensionamento. O período de resfriamento garante que uma operação de dimensionamento seja iniciada somente quando a anterior for concluída e o sistema estiver funcionando de forma estável.

    Rules

    Clique em . Na caixa de diálogo exibida, defina os seguintes parâmetros:

    • Name: insira um nome de regra personalizado.
    • Type: você pode selecionar Metric-based (Tabela 2) ou Periodic (Tabela 3). Em seguida, configure as condições e ações do gatilho.
    • Enable: habilitar ou desabilitar a regra de política.

    Depois de configurar os parâmetros anteriores, clique em OK. Em seguida, a regra de política adicionada é apresentada na lista de regras.

    Tabela 2 Regras baseadas em métricas

    Parâmetro

    Descrição

    Trigger

    Selecione CPU usage ou Memory usage, escolha > ou < e insira uma porcentagem.
    NOTA:

    Uso = CPUs ou memória usadas por pods/CPUs ou memória solicitadas.

    Action

    Defina uma ação a ser executada quando a condição de gatilho for atendida. Várias ações podem ser adicionadas.
    • Scale To: ajuste o número de pods para o valor especificado. Tanto um número quanto uma porcentagem servirão. Esta ação pode ser usada para reduzir ou expandir pods. Se o número atual de pods for menor que o valor alvo ou a porcentagem alvo for maior que 100%, o número de pods será expandido para o valor alvo. Se o número atual de pods for maior que o valor alvo ou se a porcentagem alvo for menor que 100%, o número de pods será reduzido para o valor alvo.
    • Add: configure este parâmetro quando Trigger estiver definido como >. Adicione o número de pods. Você pode especificar um número ou uma porcentagem. Esta ação só pode ser usada para expandir pods.
    • Reduce: configure este parâmetro quando Trigger estiver definido como <. Reduza o número de pods. Você pode especificar um número ou uma porcentagem. Esta ação só pode ser usada para reduzir pods.
    NOTA:

    Você pode inserir um número ou uma porcentagem para as ações anteriores.

    Ao inserir uma porcentagem, você deve especificar o número mínimo de pods disponíveis. Número final de pods = número de pods atuais x porcentagem. O resultado é arredondado. Se o resultado for menor que o número mínimo de pods disponíveis, o valor predefinido será usado. Caso contrário, o resultado do cálculo é usado.

    Conforme mostrado abaixo, quando o uso da CPU excede 50%, o número de pods é dimensionado para 5. Quando o uso da CPU excede 70%, o número de pods é ampliado para 8. Quando o uso da CPU excede 90%, o número de pods é ampliado para 18 (adicionando mais 10 pods). Essas regras também funcionam para operações de escala.

    Figura 1 Definir uma condição de gatilho
    Tabela 3 Regras baseadas em periódicos

    Parâmetro

    Descrição

    Trigger Time

    Você pode selecionar um horário específico todos os dias, todas as semanas, todos os meses ou todos os anos.

    Action

    Defina uma ação a ser executada no Triggered Time. Como mostrado abaixo, um pod será adicionado às 17:00 todos os dias.
    • Scale To: ajuste o número de pods para o valor especificado. Tanto um número quanto uma porcentagem servirão. Esta ação pode ser usada para reduzir ou expandir pods. Se o número atual de pods for menor que o valor alvo ou a porcentagem alvo for maior que 100%, o número de pods será expandido para o valor alvo. Se o número atual de pods for maior que o valor alvo ou se a porcentagem alvo for menor que 100%, o número de pods será reduzido para o valor alvo.
    • Add: adicione o número de pods. Você pode especificar um número ou uma porcentagem. Esta ação só pode ser usada para expandir pods.
    • Reduce: reduza o número de pods. Você pode especificar um número ou uma porcentagem. Esta ação só pode ser usada para reduzir pods.
    NOTA:

    Você pode inserir um número ou uma porcentagem para as ações anteriores.

    Ao inserir uma porcentagem, você deve especificar o número mínimo de pods disponíveis. Número final de pods = número de pods atuais x porcentagem. O resultado é arredondado. Se o resultado for menor que o número mínimo de pods disponíveis, o valor predefinido será usado. Caso contrário, o resultado do cálculo é usado.

    Figura 2 Disparo periódico (diário)

  5. Clique em Create.

Usar o kubectl

Uma política CustomHPA é uma CustomResourceDefinition (CRD) e pode ser definida da seguinte forma no YAML:

apiVersion: autoscaling.cce.io/v1alpha1
kind: CustomedHorizontalPodAutoscaler
metadata:
  name: customhpa-example
  namespace: default
spec:
  coolDownTime: 3m             #Cooldown period
  maxReplicas: 10              # Maximum number of pods
  minReplicas: 1               # Minimum number of pods
  rules:
    - actions:                          #Policy rules
        - metricRange: 0,0.1            # Metric range, from 0 to 10%
          operationType: ScaleDown      # Scaling type. ScaleDown indicates downsizing.
          operationUnit: Task           #Operation unit. Task indicates the number of tasks.
          operationValue: 1             # Resource quantity in each scaling
        - metricRange: 0.1,0.3          # Metric range, from 10% to 30%
          operationType: ScaleDown
          operationUnit: Task
          operationValue: 2
      disable: false
      metricTrigger:
        hitThreshold: 1
        metricName: CPURatioToRequest   # Metric name. CPURatioToRequest indicates the CPU usage.
        metricOperation: <              # Metric expression operator
        metricValue: 0.3                # Value on the right of the metric expression
        periodSeconds: 60               # 
        statistic: instantaneous        #
      ruleName: low
      ruleType: Metric
    - actions:
        - metricRange: 0.7,0.9
          operationType: ScaleUp
          operationUnit: Task
          operationValue: 1
        - metricRange: 0.9,+Infinity
          operationType: ScaleUp
          operationUnit: Task
          operationValue: 2
      disable: false
      metricTrigger:
        hitThreshold: 1
        metricName: CPURatioToRequest
        metricOperation: '>'
        metricValue: 0.7
        periodSeconds: 60
        statistic: instantaneous
      ruleName: high
      ruleType: Metric
  scaleTargetRef:                # Associated workload
    apiVersion: apps/v1
    kind: Deployment
    name: nginx