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 escala 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 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 de escala personalizados:

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

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

Incluso si configuras objetivos de simultaneidad personalizados o inhabilitas el ajuste de escala basado en la CPU, el Ajuste de simultaneidad adaptativo (ACT) permanece activo. Para obtener más información, consulta Acerca del ajuste de escala automático de instancias.

Puedes configurar los controles de ajuste de escala con la Google Cloud consola, gcloud CLI, YAML o Terraform cuando implementas una revisión nueva.

Console

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

    Ir a Cloud Run

  2. Si quieres configurar un servicio nuevo, haz clic en Implementar contenedor para mostrar la página Crear servicio.

  3. Si quieres configurar un servicio existente, haz clic en el servicio para abrir su página Detalles del servicio y, luego, haz clic en la pestaña Escalado.

  4. Ubica la sección Ajuste de escala del servicio. Asegúrate de que esté seleccionada la opción Ajuste de escala automático. Expande la sección Personalizar los factores de escalado automático para configurar los siguientes objetivos de utilización:

    • Para configurar el uso de CPU objetivo, haz clic en Uso de CPU y, luego, ingresa un valor entre 10 y 90.

    • Para configurar el uso de simultaneidad objetivo, haz clic en Uso de solicitudes simultáneas y, luego, ingresa un valor de 10 a 95.

    • Haz clic en Listo en cada configuración de utilización.

  5. Haz clic en Crear para un servicio nuevo. Haz clic en Ver diferencia y volver a implementar y, luego, en Implementar cambios para un servicio existente.

gcloud

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

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

    gcloud 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.90. Solo puedes configurar hasta dos dígitos después del punto decimal.

  • Para actualizar la utilización de simultaneidad objetivo, ejecuta el siguiente comando:

    gcloud 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 tanto la CPU objetivo como el uso de simultaneidad, ejecuta el siguiente comando:

    gcloud 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.90. 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 objetivo de la CPU y la simultaneidad, agrega los atributos run.googleapis.com/scaling-cpu-target y run.googleapis.com/scaling-concurrency-target:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      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.90. 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

    El comando gcloud run services replace usa de forma predeterminada el archivo service.yaml si está presente.

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

Agrega lo siguiente a un recurso google_cloud_run_v2_service en tu configuración de Terraform:
resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE"
  location = "REGION"

  template {
    scaling {
      cpu_utilization         = CPU_TARGET
      concurrency_utilization = CONCURRENCY_TARGET
    }
    containers {
      image = "IMAGE_URL"
    }
  }
}

Reemplaza lo siguiente:

  • SERVICE: El nombre de tu servicio.
  • REGION: La Google Cloud región, por ejemplo,europe-west1.
  • CPU_TARGET: Es el objetivo de uso de CPU. Especifica un valor de 0.1 a 0.90. 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.
  • IMAGE_URL: Es una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL sigue el formato de LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

Inhabilita los controles de ajuste de escala

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

Puedes inhabilitar los controles de ajuste de escala con la Google Cloud consola, gcloud CLI, YAML o Terraform cuando implementes una revisión nueva.

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 el servicio para abrir su página Detalles del servicio y, luego, haz clic en la pestaña Escalado.

  3. Ubica la sección Ajuste de escala del servicio. Asegúrate de que esté seleccionada la opción Ajuste de escala automático. Expande la sección Personalizar los factores de escalado automático:

    • Para ajustar la escala solo según la CPU, haz clic en el ícono de eliminación junto a Uso de solicitudes simultáneas y, luego, ingresa un valor para el uso de CPU objetivo si falta.

    • Para ajustar la escala solo por simultaneidad, haz clic en el ícono de eliminación junto a Uso de CPU y, luego, ingresa un valor para el uso objetivo de simultaneidad si falta.

    • Haz clic en Listo en cada configuración de utilización.

  4. Haz clic en Crear para un servicio nuevo. Haz clic en Ver diferencia y volver a implementar y, luego, en Implementar cambios para un servicio existente.

gcloud

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

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

    gcloud 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 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 realizar el ajuste solo según la 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:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-concurrency-target: disabled

    SERVICE por el nombre del servicio

  3. Para realizar el ajuste solo según la 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:
      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

    El comando gcloud run services replace usa de forma predeterminada el archivo service.yaml si está presente.

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

Agrega lo siguiente a un recurso google_cloud_run_v2_service en tu configuración de Terraform:
  • Para realizar el ajuste solo según la CPU, inhabilita el objetivo de simultaneidad estableciendo concurrency_utilization en 0:

    resource "google_cloud_run_v2_service" "default" {
      name     = "SERVICE"
      location = "REGION"
    
      template {
        scaling {
          cpu_utilization         = CPU_TARGET
          concurrency_utilization = 0
        }
        containers {
          image = "IMAGE_URL"
        }
      }
    }
    

    Reemplaza lo siguiente:

    • SERVICE: El nombre de tu servicio.
    • REGION: La Google Cloud región, por ejemplo,europe-west1.
    • CPU_TARGET: Es el objetivo de uso de CPU. Especifica un valor de 0.1 a 0.90. Solo puedes configurar hasta dos dígitos después del punto decimal.
    • IMAGE_URL: Es una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL sigue el formato de LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • Para realizar el ajuste solo según la simultaneidad, inhabilita el objetivo de CPU estableciendo cpu_utilization en 0:

    resource "google_cloud_run_v2_service" "default" {
      name     = "SERVICE"
      location = "REGION"
    
      template {
        scaling {
          cpu_utilization         = 0
          concurrency_utilization = CONCURRENCY_TARGET
        }
        containers {
          image = "IMAGE_URL"
        }
      }
    }
    

    Reemplaza lo siguiente:

    • SERVICE: El nombre de tu servicio.
    • REGION: La Google Cloud región, por ejemplo,europe-west1.
    • 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.
    • IMAGE_URL: Es una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL sigue el formato de LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

Restablecer los valores predeterminados

Cuando restableces los valores de CPU objetivo o de uso objetivo de la simultaneidad a los valores predeterminados, Cloud Run usa el objetivo de uso predeterminado del 60% en lugar de tus objetivos personalizados. Puedes restablecer los controles de ajuste de escala a la configuración predeterminada con la Google Cloud consola, gcloud CLI, YAML o Terraform cuando implementes una revisión nueva.

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 el servicio para abrir su página Detalles del servicio y, luego, haz clic en la pestaña Escalado.

  3. Ubica la sección Ajuste de escala del servicio. Asegúrate de que esté seleccionada la opción Ajuste de escala automático. Expande la sección Personalizar los factores de escalado automático para configurar los siguientes objetivos de utilización:

    • Si se quitaron los objetivos de Uso de CPU y Uso de solicitudes simultáneas, haz clic en Agregar un indicador para volver a agregarlos.

    • Establece los valores de Uso de CPU y Uso de solicitudes simultáneas en 60.

    • Haz clic en Listo en cada configuración de utilización.

  4. Haz clic en Crear para un servicio nuevo. Haz clic en Ver diferencia y volver a implementar y, luego, en Implementar cambios para un servicio existente.

gcloud

Ejecuta el comando gcloud 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 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 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 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 la 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:
      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

    El comando gcloud run services replace usa de forma predeterminada el archivo service.yaml si está presente.

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

Agrega lo siguiente a un recurso google_cloud_run_v2_service en tu configuración de Terraform:

Para restablecer el uso de la CPU y la simultaneidad a sus objetivos predeterminados, quita los atributos cpu_utilization y concurrency_utilization del bloque scaling en tu configuración de Terraform:

resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE"
  location = "REGION"

  template {
    scaling {
      # Remove the scaling target attributes to restore defaults
    }
    containers {
      image = "IMAGE_URL"
    }
  }
}

Reemplaza lo siguiente:

  • SERVICE: El nombre de tu servicio.
  • REGION: La Google Cloud región, por ejemplo,europe-west1.
  • IMAGE_URL: Es una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL sigue el formato de LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

Cómo ver la configuración de escalamiento

Puedes ver la configuración de ajuste de escala con la consola de Google Cloud o gcloud CLI.

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 Escalado para ver la configuración de escalado.

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 ajuste de escala 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 ajuste de escala 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 de tu factor de ajuste.

    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 quieres que un controlador diferente tenga prioridad o si deseas ajustar la escala de forma más o menos agresiva, ajusta el objetivo de utilización para ese controlador específico.

    Si el ajuste de simultaneidad adaptable (ACT) es el factor de escalamiento, indica que el uso de CPU de 1 segundo supera el 90% para las instancias individuales y que Cloud Run limita de forma dinámica la simultaneidad de las solicitudes para proteger tu servicio. Para mitigar el impacto del ACT en tu ajuste de escala, considera aumentar la asignación de CPU o ajustar la configuración de simultaneidad. Para obtener más información, consulta Acerca del ajuste de escala automático de instancias.

  • 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 separada antes de implementarlos en todo tu servicio.

Acerca de los objetivos de poca utilización

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

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

  • Alta disponibilidad del servicio: Tu servicio se escala verticalmente 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:

  • Potencial 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 antes de ajustar la escala.

¿Qué sigue?