Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-09-10 GMT+08:00

Políticas de CronHPA

Descripción general

Hay picos de tráfico predecibles e impredecibles para algunos servicios. Para estos servicios, CCE CronHPA le permite escalar recursos en los períodos fijos. Puede trabajar con las políticas de HPA para ajustar periódicamente el alcance de ajuste de HPA, implementando ajuste de carga de trabajo.

CronHPA puede ajustar periódicamente el número máximo y mínimo de pods en la política de HPA o ajustar directamente el número de pods de una Deployment.

El siguiente es un ejemplo 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
Tabla 1 Campos clave de CronHPA

Campo

Descripción

apiVersion

Versión de la API. El valor se fija en autoscaling.cce.io/v2alpha1.

kind

Tipo de la API. El valor se fija en CronHorizontalPodAutoscaler.

metadata.name

Nombre de una política de CronHPA.

metadata.namespace

Espacio de nombres al que pertenece la política CronHPA.

spec.scaleTargetRef

Especifica el objeto de ajuste de CronHPA. Se pueden configurar los siguientes campos:

  • apiVersion: Versión de API del objeto de ajuste de CronHPA.
  • kind: Tipo de API del objeto de ajuste de CronHPA.
  • name: Nombre del objeto de ajuste de CronHPA.

CronHPA admite políticas de HPA o Deployments. Para más detalles, consulte Uso de CronHPA para ajustar el alcance de escalado de HPA o Uso de CronHPA para ajustar directamente el número de pods de Deployment.

spec.rules

Regla de política de CronHPA. Se pueden agregar varias reglas. Se pueden configurar los siguientes campos para cada regla:

  • ruleName: Nombre de regla de CronHPA, que debe ser único.
  • schedule: Tiempo de ejecución y período de un trabajo. Para obtener más información, consulte Cron, por ejemplo, 0 * * * * o @hourly.
  • targetReplicas: indica el número de pods que se van a escalar dentro o fuera.
  • disable: El valor puede ser true o false. false indica que la regla entra en vigor, y true indica que la regla no entra en vigor.

Requisitos previos

Se ha instalado el complemento cce-hpa-controller de v1.2.13 o posterior.

Uso de CronHPA para ajustar el alcance de escalado de HPA

CronHPA puede periódicamente ampliar/reducir los pods en las políticas de HPA para satisfacer servicios complejos.

HPA y CronHPA asocian objetos de ajuste mediante el campo scaleTargetRef. Si una Deployment es el objeto de ajuste tanto para CronHPA como para HPA, las dos políticas de ajuste son independientes entre sí. La operación realizada posteriormente sobrescribe la operación realizada anteriormente. Como resultado, el efecto de ajuste no cumple con las expectativas.

Cuando CronHPA es compatible con la política de HPA, el campo scaleTargetRef de CronHPA debe establecerse en la política de HPA y el campo scaleTargetRef de la política de HPA debe establecerse en Deployment. De esta manera, CronHPA ajusta el número máximo y mínimo de pods en la política de HPA en un tiempo fijo y el ajuste programado es compatible con el ajuste automático.

  1. Cree una política de HPA para la Deployment.

    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. Cree una política de CronHPA y asóciela con la política de HPA creada en 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 * * * * and @hourly.
         targetReplicas: 1              # Number of target pods
         disable: false
       - ruleName: "scale-up"
         schedule: "13 * * * *"
         targetReplicas: 11
         disable: false

    Cuando CronHPA y HPA se usan juntos, las reglas de CronHPA entran en vigor según la política de HPA. CronHPA utiliza HPA para realizar operaciones en la Deployment. Comprender los siguientes parámetros puede comprender mejor el principio de funcionamiento del CronHPA.

    • targetReplicas: Número de pods fijados para CronHPA. Cuando CronHPA entra en vigor, este parámetro ajusta el número máximo o mínimo de pods en las políticas de HPA para ajustar el número de pods de Deployment.
    • minReplicas: Número mínimo de pods de Deployment.
    • maxReplicas: Número máximo de pods de Deployment.
    • replicas: Número de pods en una Deployment antes de que la política de CronHPA entre en vigor.

    Cuando la regla de CronHPA entra en vigor, el número máximo o mínimo de pods se ajusta comparando el número de targetReplicas con el número real de pods y combinando el número mínimo o máximo de pods en la política de HPA.

    Figura 1 Escenarios de ajuste de CronHPA

    Figura 1 muestra posibles escenarios de ajuste. Los siguientes ejemplos detallan cómo CronHPA modifica el número de pods en HPA.

    Escenario

    Descripción del escenario

    Cronhpa

    (targetReplicas)

    Deployment

    (replicas)

    HPA

    (minReplicas / maxReplicas)

    Resultados

    Descripción de operaciones

    Escenario 1

    targetReplicas < minReplicas ≤ replicas ≤ maxReplicas

    4

    5

    5/10

    HPA: 4/10

    Deployment: 5

    Cuando el valor de targetReplicas es menor que el de minReplicas:

    • Cambie el valor de minReplicas.
    • El valor de replicas no requiere ningún cambio.

    Escenario 2

    targetReplicas = minReplicas ≤ replicas ≤ maxReplicas

    5

    6

    5/10

    HPA: 5/10

    Deployment: 6

    Cuando el valor de targetReplicas es menor que el de minReplicas:

    • El valor de minReplicas no requiere ningún cambio.
    • El valor de replicas no requiere ningún cambio.

    Escenario 3

    minReplicas < targetReplicas < replicas ≤ maxReplicas

    4

    5

    1/10

    HPA: 4/10

    Deployment: 5

    Cuando el valor de targetReplicas es mayor que el de minReplicas y menor que el de replicates:

    • Cambie el valor de minReplicas.
    • El valor de replicas no requiere ningún cambio.

    Escenario 4

    minReplicas < targetReplicas = replicas < maxReplicas

    5

    5

    1/10

    HPA: 5/10

    Deployment: 5

    Cuando el valor de targetReplicas es mayor que el de minReplicas e igual al de replicates:

    • Cambie el valor de minReplicas.
    • El valor de replicas no requiere ningún cambio.

    Escenario 5

    minReplicas ≤ replicas < targetReplicas < maxReplicas

    6

    5

    1/10

    HPA: 6/10

    Deployment: 6

    Cuando el valor de targetReplicas es mayor que el de replicates y menor que el de maxReplicas:

    • Cambie el valor de minReplicas.
    • Cambie el valor de replicas.

    Escenario 6

    minReplicas ≤ replicas < targetReplicas = maxReplicas

    10

    5

    1/10

    HPA: 10/10

    Deployment: 10

    Cuando el valor de targetReplicas es mayor que el de replicates e igual al de maxReplicas:

    • Cambie el valor de minReplicas.
    • Cambie el valor de replicas.

    Escenario 7

    minReplicas ≤ replicas ≤ maxReplicas < targetReplicas

    11

    5

    5/10

    HPA: 11/11

    Deployment: 11

    Cuando el valor de targetReplicas es mayor que el de maxReplicas:

    • Cambie el valor de minReplicas.
    • Cambie el valor de maxReplicas.
    • Cambie el valor de replicas.

Uso de CronHPA para ajustar directamente el número de pods de Deployment

CronHPA ajusta las implementaciones asociadas por separado para ajustar periódicamente el número de pods de Deployment. El método es el siguiente:

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