Descripción de las configuraciones de escalabilidad

Completado

La versión v2 de la API de HPA permite ajustar algunos aspectos de su comportamiento con una nueva clave en el archivo YAML denominada spec.behavior. Acepta otras dos claves: scaleDown y scaleUp, que definen cómo se comporta el HPA en el escalado y la reducción verticales.

Para cada una de estas claves, se permiten los siguientes valores:

Clave Tipo Descripción
stabilizationWindowSeconds int Período en el que el HPA busca métricas para calcular el estado deseado. El valor predeterminado de scaleDown es cinco minutos y no hay ningún período de estabilización para scaleUp.
selectPolicy cadena Tipo de directiva seleccionado para usar. Este valor puede ser Min, Max o Disabled.
directivas matriz de HPAScalingPolicy Matriz de directivas que se pueden aplicar.

El objeto HPAScalingPolicy se define como un objeto con las claves siguientes:

Clave Tipo Descripción
type string Tipo de directiva, que puede ser Percent o Pods.
value int Valor de la directiva.
periodSeconds int Cantidad de tiempo necesaria para que se vuelva a aplicar esta directiva.

Las directivas de escalado permiten ajustar la manera en que funciona el escalado. Por ejemplo, puede deshabilitar completamente la operación de reducción vertical estableciendo una directiva scaleDown en Disabled, como se muestra en el siguiente ejemplo:

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: contoso-website
  namespace: hpa-contoso
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: contoso-website
  minReplicas: 1
  maxReplicas: 10
  behavior:
    scaleDown:
      selectPolicy: Disabled
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 20
    - type: Resource
      resource:
        name: memory
        target:
          type: Utilization
          averageUtilization: 50

También puede establecer el número de réplicas que se escalarán horizontalmente mediante la definición de una directiva scaleUp, como la siguiente:

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: contoso-website
  namespace: hpa-contoso
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: contoso-website
  minReplicas: 1
  maxReplicas: 10
  behavior:
    scaleUp:
      selectPolicy: Max
      stabilizationWindowSeconds: 120
      policies:
        - type: Percent
          value: 30
          periodSeconds: 60
        - type: Pods
          value: 7
          periodSeconds: 90
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 20
    - type: Resource
      resource:
        name: memory
        target:
          type: Utilization
          averageUtilization: 50

En este manifiesto, le indica al HPA que busque los últimos 120 segundos de métricas para calcular el estado deseado y obtener el máximo de estos valores. Una vez hecho esto, calcula el 30 % de los pods existentes, redondea este número y lo compara con el valor fijo de siete pods. Dado que se establece selectPolicy en Max, toma el mayor número de esos dos números y aplica esa directiva y, a continuación, espera periodSeconds antes de volver a aplicar las directivas.

Por ejemplo, supongamos que el sitio web se ejecuta con 18 pods y, a continuación, experimenta un pico que dura aproximadamente 120 segundos. El estado deseado se halla calculando el 30 % de los pods que están actualmente en ejecución, que es 5,4 (redondeado a 6). Este valor se compara con el número de pods de la segunda directiva, que es 7. Dado que la clave selectPolicy se establece en Max, usa el valor mayor de esos dos valores. A continuación, el HPA se escala en 7 y espera 90 segundos antes de volver a escalar verticalmente. Si el pico continuó hasta 25 pods, el cálculo se realiza de nuevo. El 30 % de 25 pods es 7,5 (redondeado a 8), que es mayor que 7. Ahora el HPA crea ocho nuevos pods y espera 60 segundos antes de volver a escalarlos verticalmente.

Comprobar los conocimientos

1.

¿Cuál es la ventana de estabilización?

2.

¿Cuáles son los tres valores de selectPolicies?

3.

¿Cuándo se debe definir el comportamiento del HPA?