Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Using Horizontal Pod Autoscaling (HPA)

Última actualización: Sep 04, 2026

Habilite el escalado automático horizontal de pods (HPA) para ajustar automáticamente sus pods según la utilización de CPU, el uso de memoria o métricas personalizadas. HPA aumenta el número de réplicas de pods para manejar picos de tráfico y lo reduce durante los periodos de inactividad con el fin de ahorrar recursos de forma automática. Esta función es ideal para aplicaciones con cargas de trabajo fluctuantes que requieren un escalado frecuente, como plataformas de comercio electrónico, servicios de educación en línea y aplicaciones financieras.

Antes de empezar

Para utilizar HPA de manera eficaz, se recomienda leer la documentación oficial de Kubernetes sobre escalado automático horizontal de pods para comprender sus principios fundamentales, algoritmos y comportamientos de escalado configurables.

Además, los clústeres de Alibaba Cloud Container Service for Kubernetes (ACK) ofrecen diversas soluciones de escalado de cargas de trabajo (elasticidad en la capa de programación) y de escalado de nodos (elasticidad en la capa de recursos). Antes de continuar, consulte Auto scaling para conocer los casos de uso y las limitaciones de cada solución.

Requisitos previos

Crear una aplicación HPA en la consola

ACK está integrado con HPA, lo que permite crear aplicaciones compatibles con HPA desde la consola. Puede habilitar HPA al crear una nueva aplicación o en una existente. Se recomienda crear solo un HPA por carga de trabajo.

Habilitar HPA al crear una aplicación

El siguiente ejemplo utiliza un Deployment para mostrar cómo habilitar HPA al crear una aplicación. Los pasos para otros tipos de cargas de trabajo son similares.

  1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.

  2. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Workloads > Deployments.

  3. En la página Deployments, haga clic en Create from Image.

  4. En la página Create, siga las instrucciones en pantalla para configurar la información básica de la aplicación, los contenedores, los servicios y el escalado con el fin de crear un Deployment compatible con HPA.

    Para consultar los pasos detallados y las descripciones de los parámetros, vea Create a stateless workload (Deployment). La siguiente sección describe únicamente los parámetros clave.

    • Basic Information: Configure los ajustes de la aplicación, como su nombre y el número de réplicas.

    • Container: Configure la imagen y los recursos de CPU y memoria obligatorios.

      La función de perfilado de recursos analiza el uso histórico de recursos y proporciona recomendaciones para configurar las solicitudes (Requests) y límites (Limits) del contenedor. Para obtener más información, consulte Resource profiling.

      Importante

      Debe establecer las solicitudes (Requests) de recursos para la aplicación con el fin de habilitar HPA.

    • Advanced Settings:

      • En la sección Scaling, seleccione HPA de Enable y configure las condiciones y los parámetros para el escalado.

        • Metric: Las métricas compatibles son CPU y memoria. La métrica debe coincidir con el tipo de recurso obligatorio que haya establecido. Cuando especifica tanto CPU como memoria, HPA realiza una operación de escalado cuando cualquiera de las métricas alcanza su umbral de escalado.

        • Trigger Condition: El umbral de utilización de recursos, especificado como porcentaje. Cuando la utilización de recursos supera este umbral, los contenedores se escalan horizontalmente. Para obtener más información sobre el algoritmo de escalado automático horizontal de pods, consulte Detalles del algoritmo.

        • Max. Replicas: El número máximo de réplicas al que se puede escalar el Deployment. Este valor debe ser mayor que el número mínimo de réplicas.

        • Min. Replicas: El número mínimo de réplicas para el Deployment. El valor debe ser un número entero mayor o igual a 1.

    Una vez completada la creación, puede ver el Deployment creado en la página Deployments. Haga clic en el nombre del Deployment y, a continuación, en la página de detalles del Deployment, haga clic en la pestaña Pod Scaling. En esta sección, puede consultar métricas relacionadas con la actividad de HPA, como la utilización de CPU o memoria y el número máximo o mínimo de réplicas, así como gestionar el HPA actualizando su configuración o deshabilitándolo.

Habilitar HPA para una aplicación existente

Este ejemplo muestra cómo habilitar HPA para un Deployment existente. Los pasos para otros tipos de cargas de trabajo son similares.

Página de cargas de trabajo

  1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.

  2. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Workloads > Deployments.

  3. En la página Deployments, haga clic en el nombre de la aplicación objetivo, haga clic en la pestaña Pod Scaling y, a continuación, haga clic en Create en el área de HPA.

  4. En el cuadro de diálogo Create, configure los ajustes de escalado según las indicaciones de la página.

    • Name: El nombre de la directiva de HPA.

    • Metric: Haga clic en Add.

      • Metric Name: Admite CPU y memoria. La métrica debe coincidir con el tipo de recurso que ha configurado. Cuando especifica tanto CPU como memoria, HPA realiza una operación de escalado tan pronto como cualquiera de las métricas alcanza su umbral de escalado.

      • Threshold: El porcentaje de utilización de recursos por encima del cual los contenedores comienzan a escalarse horizontalmente. Para obtener más información sobre el algoritmo de escalado automático horizontal de pods, consulte Detalles del algoritmo.

  • Max. Containers: El número máximo de réplicas al que puede escalarse el Deployment. Este valor debe ser mayor que el número mínimo de réplicas.

  • Min. Containers: El número mínimo de contenedores al que puede reducirse el Deployment. El valor debe ser un número entero mayor o igual a 1.

Una vez completada la configuración, puede hacer clic en el nombre del Deployment en la página Stateless Application y, a continuación, hacer clic en la pestaña Pod Scaling en la página de detalles del Deployment. En esta área, puede consultar métricas relacionadas con la actividad de HPA, como la utilización de CPU o memoria y el número máximo o mínimo de réplicas, así como gestionar el HPA actualizando su configuración o deshabilitándolo.

Página de escalado de cargas de trabajo

Nota

Esta página solo está disponible para usuarios incluidos en la lista de permitidos. Para solicitar acceso, envíe un ticket.

  1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.

  2. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Workload Scaling.

  3. En la esquina superior derecha de la página, haga clic en Create Auto Scaling y, a continuación, haga clic en la pestaña HPA and CronHPA. Seleccione la carga de trabajo objetivo y, en la sección Configure Auto Scaling Policy, seleccione HPA y configure la directiva de HPA según las indicaciones.

    • Scaling Policy Name: El nombre de la directiva de HPA.

    • Min. Containers: El número mínimo de réplicas para la carga de trabajo. Este valor debe ser un número entero mayor o igual a 1.

    • Max. Containers: El número máximo de contenedores al que puede escalarse la carga de trabajo. Este valor debe ser mayor que el número mínimo de réplicas.

    • Metric Name: Las métricas compatibles incluyen CPU, GPU, memoria, solicitudes de Nginx Ingress y métricas personalizadas. El tipo de métrica debe coincidir con el tipo de recurso especificado. Si especifica varias métricas, el escalado automático horizontal de pods (HPA) realiza una operación de escalado cuando cualquiera de las métricas alcanza su umbral.

    • Threshold: El porcentaje de utilización de recursos. Si la utilización supera este valor, los contenedores comienzan a escalarse horizontalmente. Para obtener más información sobre el algoritmo de escalado automático horizontal de pods, consulte Detalles del algoritmo.

Una vez completada la creación, puede ver la lista de HPA en la página Workload Scaling. En la columna Actions, puede consultar métricas relacionadas con la actividad de HPA, como la utilización de recursos y el número máximo o mínimo de réplicas, así como gestionar el HPA actualizando su configuración o deshabilitándolo.

Comprobar los resultados

  1. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Workload Scaling.

  2. Haga clic en la pestaña Horizontal Scaling y luego seleccione HPA para ver el estado del escalado y la lista de tareas.

Nota

En un entorno de producción, la aplicación se escala según la carga de los pods. También puede ejecutar una prueba de estrés en los pods dentro de un entorno de pruebas para comprobar el comportamiento de escalado horizontal.

Crear una aplicación HPA mediante kubectl

También puede utilizar una plantilla de orquestación para crear manualmente un HPA y vincularlo al Deployment objetivo. Se recomienda crear solo un HPA por carga de trabajo. Este ejemplo muestra cómo desplegar una aplicación Nginx compatible con HPA.

  1. Cree un archivo llamado nginx.yml y copie en él el siguiente contenido.

    Importante

    Para implementar HPA, debe establecer recursos request para el Pod. De lo contrario, HPA no puede ejecutarse. Puede utilizar la función de perfilado de recursos para analizar datos históricos de uso de recursos y obtener recomendaciones para configurar las solicitudes (Requests) y límites (Limits) del contenedor. Para obtener más información, consulte Resource profiling.

    Plantilla YAML

    apiVersion: apps/v1 
    kind: Deployment
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx  
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.7.9 # Replace with your actual <image_name:tags>.
            ports:
            - containerPort: 80
            resources:
              requests:         # You must set requests. Otherwise, HPA cannot calculate metrics, and the status will be 'unknown'.
                cpu: 500m
  2. Ejecute el siguiente comando para crear la aplicación Nginx.

    kubectl apply -f nginx.yml
  3. Cree un archivo llamado hpa.yml y copie en él el siguiente contenido para crear el HPA.

    Utilice scaleTargetRef para especificar el objeto objetivo del HPA. En este ejemplo, el HPA se vincula a un Deployment llamado nginx y desencadena una operación de escalado cuando la utilización promedio de CPU de los contenedores en todos los Pods alcanza el 50 %.

    Kubernetes 1.24 y versiones posteriores

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: nginx-hpa
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: nginx
      minReplicas: 1  # The minimum number of replicas for the Deployment. Must be an integer greater than or equal to 1.
      maxReplicas: 10  # The maximum number of replicas for the Deployment. Must be greater than minReplicas.
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50 # The target average resource utilization, which is the ratio of average resource usage to the requested resource amount.
                   

    Versiones de Kubernetes anteriores a la 1.24

    apiVersion: autoscaling/v2beta2
    kind: HorizontalPodAutoscaler
    metadata:
      name: nginx-hpa
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: nginx
      minReplicas: 1  # Must be an integer greater than or equal to 1.
      maxReplicas: 10  # Must be greater than the minimum number of replicas.
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50
                   

    Si necesita especificar métricas tanto de CPU como de memoria, puede definir los tipos de recursos cpu y memory en el campo metrics en lugar de crear dos HPA. Cuando el HPA detecta que alguna de las métricas alcanza el umbral de escalado, realiza una operación de escalado.

    metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50
      - type: Resource
        resource:
          name: memory
          target:
            type: Utilization
            averageUtilization: 50
  4. Ejecute el siguiente comando para crear el HPA.

    kubectl apply -f hpa.yml

    En este punto, ejecute el comando kubectl describe hpa <HPA name>. En este ejemplo, el nombre del HPA es nginx-hpa. El resultado esperado es el siguiente mensaje de advertencia, que indica que el HPA aún se está desplegando. Puede ejecutar el comando kubectl get hpa para comprobar el estado del HPA.

    Warning  FailedGetResourceMetric       2m (x6 over 4m)  horizontal-pod-autoscaler  missing request for cpu on container nginx in pod default/nginx-deployment-basic-75675f5897-mqzs7
    
    Warning  FailedComputeMetricsReplicas  2m (x6 over 4m)  horizontal-pod-autoscaler  failed to get cpu utilization: missing request for cpu on container nginx in pod default/nginx-deployment-basic-75675f5
  5. Una vez creado el HPA y cuando el Pod cumpla las condiciones de escalado (en este ejemplo, la utilización de CPU del Pod de Nginx supera el 50 %), ejecute nuevamente el comando kubectl describe hpa <HPA-name> para ver el estado del escalado horizontal.

    El siguiente resultado indica que el HPA se está ejecutando correctamente.

    Type    Reason             Age   From                       Message
      ----    ------             ----  ----                       -------
      Normal  SuccessfulRescale  5m6s  horizontal-pod-autoscaler  New size: 1; reason: All metrics below target

Operaciones relacionadas

Si el comportamiento de escalado predeterminado no satisface sus requisitos empresariales, puede utilizar el campo behavior para configurar los comportamientos de reducción (scaleDown) y aumento (scaleUp) con una granularidad más fina. Para obtener más información, consulte Comportamiento de escalado configurable.

Los escenarios típicos para behavior incluyen, entre otros:

  • Escalado horizontal rápido durante picos repentinos de tráfico.

  • Escalado horizontal rápido pero reducción lenta para cargas de trabajo con fluctuaciones frecuentes.

  • Deshabilitar la reducción horizontal para aplicaciones sensibles al estado.

  • En escenarios con recursos limitados o sensibles a costos, la ventana de estabilización stabilizationWindowSeconds limita la tasa de escalado horizontal para reducir los ajustes frecuentes causados por fluctuaciones temporales.

Para obtener una descripción y ejemplos de la configuración de behavior, consulte Tune HPA scaling sensitivity.

Preguntas frecuentes

Documentación relacionada

Otras operaciones relacionadas

Otras soluciones de escalado de cargas de trabajo

  • Si su aplicación tiene patrones periódicos de uso de recursos y necesita escalar pods según una programación, consulte Use CronHPA for scheduled horizontal scaling.

  • Si el uso de recursos de su aplicación presenta cambios cíclicos difíciles de definir mediante reglas, puede utilizar AHPA para identificar automáticamente patrones de carga de trabajo basados en métricas históricas y realizar el escalado automático de Pods. Para obtener más información, consulte Auto Scaling Prediction (AHPA).

  • Para establecer automáticamente límites de recursos para los pods según su uso de recursos, consulte Use Vertical Pod Autoscaler (VPA).

  • Para crear directivas de escalado flexibles basadas en eventos de colas de mensajes, programaciones o métricas personalizadas, consulte Event-driven autoscaling.

Soluciones combinadas

Puede utilizar HPA junto con la función de escalado automático de nodos para escalar automáticamente los nodos del clúster cuando los recursos sean insuficientes. Para obtener más información, consulte Enable node auto scaling.