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

Políticas CronHPA

Visão geral

Há picos de tráfego previsíveis e imprevisíveis para alguns serviços. Para esses serviços, CronHPA do CCE permite que você dimensione recursos em períodos fixos. Ele pode trabalhar com políticas HPA para ajustar periodicamente o escopo de dimensionamento HPA, implementando o dimensionamento de carga de trabalho.

CronHPA pode ajustar periodicamente os números máximo e mínimo de pods na política HPA ou ajustar diretamente o número de pods de uma Implementação.

O seguinte é um exemplo YAML de CronHPA:

apiVersion: autoscaling.cce.io/v2alpha1
kind: CronHorizontalPodAutoscaler
metadata:
  name: ccetest
  namespace: default
spec:
   scaleTargetRef:                  # Associate an HPA policy or Deployment.
      apiVersion: autoscaling/v1
      kind: HorizontalPodAutoscaler
      name: hpa-test
   rules:
   - ruleName: "scale-down"    
     schedule: "15 * * * *"         # takes a Cron format string, for example, 0 * * * * or @hourly.
     targetReplicas: 1              # Number of target pods
     disable: false
   - ruleName: "scale-up"
     schedule: "13 * * * *"
     targetReplicas: 6
     disable: false
Tabela 1 Principais campos de CronHPA

Campo

Descrição

apiVersion

Versão da API. O valor é fixado em autoscaling.cce.io/v2alpha1.

kind

Tipo de API. O valor é fixado em CronHorizontalPodAutoscaler.

metadata.name

Nome de uma política CronHPA.

metadata.namespace

Namespace ao qual a política CronHPA pertence.

spec.scaleTargetRef

Especifica o objeto de dimensionamento de CronHPA. Os seguintes campos podem ser configurados:

  • apiVersion: versão da API do objeto de dimensionamento de CronHPA.
  • kind: tipo de API do objeto de dimensionamento de CronHPA.
  • name: nome do objeto de dimensionamento de CronHPA.

CronHPA suporta políticas HPA ou Implementações. Para mais detalhes, veja Usar CronHPA para ajustar o escopo de dimensionamento de HPA e Usar CronHPA para ajustar diretamente o número de pods de Implementação.

spec.rules

Regra da política de CronHPA. Várias regras podem ser adicionadas. Os seguintes campos podem ser configurados para cada regra:

  • ruleName: nome da regra de CronHPA, que deve ser exclusivo.
  • schedule: tempo de execução e período de um trabalho. Para obter detalhes, consulte Cron, por exemplo, 0 * * * * or @hourly.
  • targetReplicas: indica o número de pods a serem dimensionados para dentro ou para fora.
  • disable: o valor pode ser true ou false. false indica que a regra entra em vigor e true indica que a regra não entra em vigor.

Pré-requisitos

O complemento HPA de CCE avançado da v1.2.13 ou posterior foi instalado.

Usar CronHPA para ajustar o escopo de dimensionamento de HPA

CronHPA pode periodicamente expandir/reduzir pods em políticas HPA para satisfazer serviços complexos.

HPA e CronHPA associam objetos de dimensionamento usando o campo scaleTargetRef. Se uma Implementação for o objeto de dimensionamento para CronHPA e HPA, as duas políticas de dimensionamento serão independentes uma da outra. A operação realizada posteriormente sobrescreve a operação realizada anteriormente. Como resultado, o efeito de escala não atende à expectativa.

Quando o CronHPA é compatível com a política HPA, o campo scaleTargetRef em CronHPA deve ser definido para a política HPA, e o campo scaleTargetRef na política HPA deve ser definido para Implementação. Desta forma, o CronHPA ajusta os números máximo e mínimo de pods na política HPA em um horário fixo e o dimensionamento agendado é compatível com o dimensionamento automático.

  1. Crie uma política HPA para a Implementação.

    apiVersion: autoscaling/v1
    kind: HorizontalPodAutoscaler
    metadata:
      name: hpa-test
      namespace: default
    spec:
       maxReplicas: 10               #  Maximum number of pods
      minReplicas: 5               #  Minimum number of pods
      scaleTargetRef:              #  Associate a Deployment.
        apiVersion: apps/v1
        kind: Deployment
        name: nginx
      targetCPUUtilizationPercentage: 50

  2. Crie uma política CronHPA e associe-a à política HPA criada em 1.

    apiVersion: autoscaling.cce.io/v2alpha1
    kind: CronHorizontalPodAutoscaler
    metadata:
      name: ccetest
      namespace: default
    spec:
       scaleTargetRef:                  # Associate the HPA policy
          apiVersion: autoscaling/v1
          kind: HorizontalPodAutoscaler
          name: hpa-test
       rules:
       - ruleName: "scale-down"    
         schedule: "15 * * * *"         #  Running time and period of a job. For details, see Cron, for example, 0 * * * * or @hourly.
         targetReplicas: 1              # Number of target pods
         disable: false
       - ruleName: "scale-up"
         schedule: "13 * * * *"
         targetReplicas: 11
         disable: false

    Quando CronHPA e HPA são usados juntos, as regras de CronHPA entram em vigor com base na política HPA. CronHPA usa HPA para realizar operações na Implementação. Compreender os seguintes parâmetros pode entender melhor o princípio de funcionamento do CronHPA.

    • targetReplicas: número de pods definido para CronHPA. Quando o CronHPA entra em vigor, esse parâmetro ajusta o número máximo ou mínimo de pods nas políticas HPA para ajustar o número de pods de Implementação.
    • minReplicas: número mínimo de pods de Implementação.
    • maxReplicas: número máximo de pods de Implementação.
    • replicas: número de pods em uma Implementação antes da política CronHPA entrar em vigor.

    Quando a regra de CronHPA entra em vigor, o número máximo ou mínimo de pods é ajustado comparando o número de targetReplicas com o número real de pods e combinando o número mínimo ou máximo de pods na política HPA.

    Figura 1 Cenários de dimensionamento CronHPA

    Figura 1 mostra possíveis cenários de dimensionamento. Os exemplos a seguir detalham como CronHPA modifica o número de pods em HPAs.

    Cenário

    Descrição do cenário

    Cronhpa

    (targetReplicas)

    Implementação

    (replicas)

    HPA

    (minReplicas / maxReplicas)

    Resultados

    Descrição da operação

    Cenário 1

    targetReplicas < minReplicas ≤ replicas ≤ maxReplicas

    4

    5

    5/10

    HPA: 4/10

    Implementação: 5

    Quando o valor detargetReplicas for menor que o de minReplicas:

    • Altere o valor de minReplicas.
    • O valor de replicas não requer alteração.

    Cenário 2

    targetReplicas = minReplicas ≤ replicas ≤ maxReplicas

    5

    6

    5/10

    HPA: 5/10

    Implementação: 6

    Quando o valor de targetReplicas é igual ao de minReplicas:

    • O valor de minReplicas não requer alteração.
    • O valor de replicas não requer alteração.

    Cenário 3

    minReplicas < targetReplicas < replicas ≤ maxReplicas

    4

    5

    1/10

    HPA: 4/10

    Implementação: 5

    Quando o valor de targetReplicas for maior que o de minReplicas e menor que o de replicates:

    • Altere o valor de minReplicas.
    • O valor de replicas não requer alteração.

    Cenário 4

    minReplicas < targetReplicas = replicas < maxReplicas

    5

    5

    1/10

    HPA: 5/10

    Implementação: 5

    Quando o valor de targetReplicas for maior que o de minReplicas e igual ao de replicates:

    • Altere o valor de minReplicas.
    • O valor de replicas não requer alteração.

    Cenário 5

    minReplicas ≤ replicas < targetReplicas < maxReplicas

    6

    5

    1/10

    HPA: 6/10

    Implementação: 6

    Quando o valor de targetReplicas for maior que o de replicates e menor que o de maxReplicas:

    • Altere o valor de minReplicas.
    • Altere o valor de replicas.

    Cenário 6

    minReplicas ≤ replicas < targetReplicas = maxReplicas

    10

    5

    1/10

    HPA: 10/10

    Implementação: 10

    Quando o valor de targetReplicas for maior que o de replicates e igual ao de maxReplicas:

    • Altere o valor de minReplicas.
    • Altere o valor de replicas.

    Cenário 7

    minReplicas ≤ replicas ≤ maxReplicas < targetReplicas

    11

    5

    5/10

    HPA: 11/11

    Implementação: 11

    Quando o valor de targetReplicas é maior que o de maxReplicas:

    • Altere o valor de minReplicas.
    • Altere o valor de maxReplicas.
    • Altere o valor de replicas.

Usar CronHPA para ajustar diretamente o número de pods de Implementação

CronHPA ajusta as Implementações associadas separadamente para ajustar periodicamente o número de pods de Implementação. O método é o seguinte:

apiVersion: autoscaling.cce.io/v2alpha1
kind: CronHorizontalPodAutoscaler
metadata:
  name: ccetest
  namespace: default
spec:
   scaleTargetRef:             # Associate a Deployment.
      apiVersion: apps/v1
      kind: Deployment
      name: nginx
   rules:
   - ruleName: "scale-down"
     schedule: "08 * * * *"    # Running time and period of a job. For details, see Cron, for example, 0 * * * * or @hourly.
     targetReplicas: 1
     disable: false
   - ruleName: "scale-up"
     schedule: "05 * * * *"
     targetReplicas: 3
     disable: false