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
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:
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:
|
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.
- 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
- 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 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