Configura controles de escalamiento personalizados para los servicios

De forma predeterminada, Cloud Run se optimiza para obtener un alto rendimiento con un objetivo de utilización del 60% tanto para la CPU como para la simultaneidad, y ajusta la cantidad de instancias automáticamente para controlar todas las solicitudes entrantes. Sin embargo, en algunos casos de uso, es posible que desees configurar qué factores de escalamiento usar, como solo la CPU, y establecer objetivos personalizados para el uso.

Cloud Run proporciona controles de escalamiento para que tengas más control sobre el comportamiento de escalamiento de tu servicio, lo que te permite tomar decisiones fundamentadas sobre el escalamiento de tu carga de trabajo según tus requisitos. Puedes habilitar el comportamiento de ajuste mejorado conservando los objetivos de utilización predeterminados o configurar los siguientes objetivos de utilización personalizados:

  • Uso objetivo para el ajuste de escala basado en la CPU
  • Uso objetivo para el ajuste de escala basado en la simultaneidad

Con los controles de escalamiento, puedes optimizar los costos y mejorar la previsibilidad de tus servicios. Para obtener más información sobre el comportamiento predeterminado del ajuste de escala automático de los servicios de Cloud Run, consulta Información acerca del ajuste de escala automático de instancias en los servicios de Cloud Run.

Límites de configuración

Se aplican los siguientes límites a los objetivos de ajuste personalizados:

Factor de escalamiento % predeterminado Porcentaje mínimo configurable Porcentaje máximo configurable
CPU target utilization 60% 10% 95%
Concurrency target utilization 60% 10% 95%

Habilita el comportamiento de expansión mejorado

El escalador automático de Cloud Run responde de cerca a los objetivos que configuras, incluso para los servicios con una cantidad baja de instancias. Considera habilitar esta función para mejorar la previsibilidad del ajuste de escala, incluso si planeas mantener los objetivos de utilización predeterminados del 60% para la CPU y la simultaneidad.

Para habilitar la opción, puedes usar gcloud CLI o YAML cuando implementes una revisión nueva.

Cualquier cambio en la configuración conlleva la creación de una revisión nueva. Las revisiones posteriores también adoptarán esta configuración de manera automática, a menos que realices actualizaciones explícitas para cambiarla.

gcloud

Establece los valores de uso de CPU objetivo y uso de simultaneidad objetivo de una revisión determinada ejecutando el siguiente comando de gcloud beta run services update:

gcloud beta run services update SERVICE --scaling-cpu-target=0.6 \
--scaling-concurrency-target=0.6

SERVICE por el nombre del servicio

YAML

  1. Si creas un servicio nuevo, omite este paso. Si actualizas un servicio existente, descarga su configuración de YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Agrega los atributos run.googleapis.com/scaling-cpu-target y run.googleapis.com/scaling-concurrency-target.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-cpu-target: '0.6'
            run.googleapis.com/scaling-concurrency-target: '0.6'

    SERVICE por el nombre del servicio

  3. Crea o actualiza el servicio con el siguiente comando:

    gcloud run services replace service.yaml

Cómo configurar objetivos personalizados

Define objetivos de utilización personalizados para optimizar los costos o mejorar el rendimiento de tus cargas de trabajo configurando objetivos específicos de utilización de CPU y simultaneidad dentro de los límites de configuración.

Cualquier cambio en la configuración conlleva la creación de una revisión nueva. Las revisiones posteriores también adoptarán esta configuración de manera automática, a menos que realices actualizaciones explícitas para cambiarla.

Puedes configurar los controles de ajuste de escala con gcloud CLI o YAML cuando implementas una revisión nueva.

gcloud

Actualiza los valores de uso de CPU objetivo y uso de simultaneidad objetivo de una revisión determinada ejecutando el comando gcloud beta run services update.

  • Para actualizar el uso de CPU objetivo, ejecuta el siguiente comando:

    gcloud beta run services update SERVICE --scaling-cpu-target=CPU_TARGET

    Reemplaza lo siguiente:

    • SERVICE: El nombre de tu servicio.

    • CPU_TARGET: Es el objetivo de uso de CPU. Especifica un valor de 0.1 a 0.95. Solo puedes configurar hasta dos dígitos después del punto decimal.

  • Para actualizar el uso objetivo de la simultaneidad, ejecuta el siguiente comando:

    gcloud beta run services update SERVICE --scaling-concurrency-target=CONCURRENCY_TARGET

    Reemplaza lo siguiente:

    • SERVICE: El nombre de tu servicio.

    • CONCURRENCY_TARGET: Es el objetivo de uso de simultaneidad. Especifica un valor de 0.1 a 0.95. Solo puedes configurar hasta dos dígitos después del punto decimal.

  • Para actualizar la CPU objetivo y el uso de la simultaneidad, ejecuta el siguiente comando:

    gcloud beta run services update SERVICE --scaling-cpu-target=CPU_TARGET \
    --scaling-concurrency-target=CONCURRENCY_TARGET

    Reemplaza lo siguiente:

    • SERVICE: El nombre de tu servicio.
    • CPU_TARGET: Es el objetivo de uso de CPU. Especifica un valor de 0.1 a 0.95. Solo puedes configurar hasta dos dígitos después del punto decimal.
    • CONCURRENCY_TARGET: Es el objetivo de uso de simultaneidad. Especifica un valor de 0.1 a 0.95. Solo puedes configurar hasta dos dígitos después del punto decimal.

YAML

  1. Si creas un servicio nuevo, omite este paso. Si actualizas un servicio existente, descarga su configuración de YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Para actualizar el uso de CPU y de simultaneidad objetivo, agrega los atributos run.googleapis.com/scaling-cpu-target y run.googleapis.com/scaling-concurrency-target:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-cpu-target: 'CPU_TARGET'
            run.googleapis.com/scaling-concurrency-target: 'CONCURRENCY_TARGET'

    Reemplaza lo siguiente:

    • SERVICE: El nombre de tu servicio.
    • CPU_TARGET: Es el objetivo de uso de CPU. Especifica un valor de 0.1 a 0.95. Solo puedes configurar hasta dos dígitos después del punto decimal.
    • CONCURRENCY_TARGET: Es el objetivo de uso de simultaneidad. Especifica un valor de 0.1 a 0.95. Solo puedes configurar hasta dos dígitos después del punto decimal.
  3. Crea o actualiza el servicio con el siguiente comando:

    gcloud run services replace service.yaml

Inhabilita los controles de escalamiento

Puedes inhabilitar los objetivos de utilización de la CPU o de utilización de la simultaneidad, pero no ambos. Siempre debe haber un factor de ajuste activo. Para inhabilitar los controles de ajuste, restablece los valores de uso predeterminados en lugar de inhabilitarlos. Cuando inhabilitas un controlador de escalamiento, Cloud Run ignora esa métrica cuando toma decisiones de escalamiento.

Puedes inhabilitar los controles de ajuste de escala con gcloud CLI o YAML cuando implementas una revisión nueva.

gcloud

Puedes inhabilitar el uso de CPU objetivo o el uso de simultaneidad objetivo ejecutando el comando gcloud beta run services update.

  • Para ajustar la escala solo según la CPU, inhabilita el destino de simultaneidad ejecutando el siguiente comando:

    gcloud beta run services update SERVICE --scaling-concurrency-target=disabled

    SERVICE por el nombre del servicio

  • Para ajustar la escala solo según la simultaneidad, inhabilita el objetivo de CPU ejecutando el siguiente comando:

    gcloud beta run services update SERVICE --scaling-cpu-target=disabled

    SERVICE por el nombre del servicio

YAML

  1. Si creas un servicio nuevo, omite este paso. Si actualizas un servicio existente, descarga su configuración de YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Para escalar solo por CPU, inhabilita el objetivo de simultaneidad estableciendo el atributo run.googleapis.com/scaling-concurrency-target en disabled:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-concurrency-target: disabled

    SERVICE por el nombre del servicio

  3. Para escalar solo por simultaneidad, inhabilita el objetivo de CPU estableciendo el atributo run.googleapis.com/scaling-cpu-target en disabled:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-cpu-target: disabled

    SERVICE por el nombre del servicio

  4. Crea o actualiza el servicio con el siguiente comando:

    gcloud run services replace service.yaml

Restablecer los valores predeterminados

Cuando restableces los valores predeterminados de la CPU objetivo o el uso de la simultaneidad objetivo, inhabilitas la función de controles de ajuste de escala. Puedes restablecer los controles de ajuste de escala a la configuración predeterminada con gcloud CLI o YAML cuando implementas una revisión nueva.

gcloud

Ejecuta el comando gcloud beta run services update para restablecer los valores predeterminados del uso de CPU objetivo y el uso de simultaneidad objetivo.

  • Para restablecer el uso de CPU objetivo a su valor predeterminado, ejecuta el siguiente comando:

    gcloud beta run services update SERVICE --scaling-cpu-target=default

    SERVICE por el nombre del servicio

  • Para restablecer el uso de simultaneidad objetivo a su valor predeterminado, ejecuta el siguiente comando:

    gcloud beta run services update SERVICE --scaling-concurrency-target=default

    SERVICE por el nombre del servicio

  • Para restablecer el uso de CPU objetivo y la simultaneidad objetivo a sus valores predeterminados, ejecuta el siguiente comando:

    gcloud beta run services update SERVICE --scaling-cpu-target=default \
    --scaling-concurrency-target=default

    SERVICE por el nombre del servicio

YAML

  1. Si creas un servicio nuevo, omite este paso. Si actualizas un servicio existente, descarga su configuración de YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Para restablecer la utilización de CPU y la simultaneidad a sus objetivos predeterminados, quita los atributos run.googleapis.com/scaling-cpu-target y run.googleapis.com/scaling-concurrency-target de tu archivo YAML:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          # Remove the scaling target annotations to restore defaults
        ...

    SERVICE por el nombre del servicio

  3. Crea o actualiza el servicio con el siguiente comando:

    gcloud run services replace service.yaml

Consulta la configuración de escalamiento

Puedes ver tu configuración de ajuste de escala con gcloud CLI o YAML.

Console

  1. En la consola de Google Cloud , ve a la página Servicios de Cloud Run:

    Ir a Cloud Run

  2. Haz clic en tu servicio para abrir el panel Detalles del servicio.

  3. Haz clic en la pestaña Revisiones.

  4. En el panel de detalles a la derecha, consulta el parámetro de configuración Métricas de ajuste de escala automático que aparece en la pestaña Contenedores.

gcloud

  1. Usa el siguiente comando:

    gcloud run services describe SERVICE

    SERVICE por el nombre del servicio

  2. Busca los valores de los parámetros de configuración Uso de CPU objetivo: y Uso de simultaneidad objetivo: en la configuración que se muestra.

Prácticas recomendadas

Puedes optimizar los costos y evitar el sobredimensionamiento disminuyendo la cantidad de instancias, o bien mejorar el rendimiento realizando un escalamiento más agresivo en respuesta a factores específicos. Para determinar los objetivos de utilización óptimos para tu carga de trabajo, usa las siguientes estrategias:

  • Antes de ajustar los objetivos, identifica qué métrica activa el escalamiento de tu servicio. Sigue estos pasos para identificar la métrica de ajuste:

    1. Ve al Explorador de métricas en la consola de Google Cloud para revisar el gráfico de supervisión del uso de CPU y de la simultaneidad.

    2. Busca y selecciona la métrica run.googleapis.com/scaling/recommended_instances, y configura Agregación como Sin agregar para ver la métrica agrupada por factor de ajuste.

    El controlador con el valor más alto es el que controla la cantidad de instancias de tu servicio. Si deseas que un factor diferente tenga prioridad o si quieres aumentar o disminuir la agresividad del ajuste, modifica el objetivo de utilización para ese factor específico.

  • Ajusta los objetivos de forma incremental y espera unos minutos entre los ajustes para observar el efecto en el rendimiento.

  • Usa la división del tráfico para probar nuevos objetivos de escalamiento. Para ello, dirige un pequeño porcentaje de tu tráfico a una revisión independiente antes de implementarlos en todo tu servicio.

Acerca de los objetivos de uso bajos

Si reduces tu objetivo de utilización al mínimo de 0.1 (10%), cambiará significativamente la forma en que se escala tu servicio.

Estos son algunos de los beneficios de establecer un objetivo de utilización bajo:

  • Alta disponibilidad del servicio: Tu servicio se ajusta mucho antes, lo que mantiene un gran búfer de capacidad inactiva para controlar los aumentos repentinos de tráfico sin afectar la latencia.

  • Escalamiento más rápido con una cantidad baja de instancias: Los servicios se escalan de manera más confiable antes de alcanzar los cuellos de botella de alta utilización.

Entre las desventajas de establecer objetivos de utilización bajos, se incluyen las siguientes:

  • Posibilidad de aumento de costos: Ejecutas más instancias de las estrictamente necesarias para tu carga actual, lo que genera una facturación más alta.
  • Decisiones de ajuste de escala más frecuentes: Con niveles de utilización más bajos, Cloud Run tiene una tolerancia menor y no espera tanto tiempo antes de ajustar la escala.

¿Qué sigue?