Definir o número máximo de instâncias para serviços

Nesta página, descrevemos como definir o número máximo de instâncias que podem ser usadas para o serviço do Cloud Run usando o comportamento padrão de escalonamento automático do Cloud Run. Para escalonar o serviço manualmente, consulte Escalonamento manual.

Especificar o máximo de instâncias no Cloud Run permite limitar o escalonamento do serviço em resposta a solicitações recebidas, embora essa configuração máxima possa ser excedida por um breve período devido a circunstâncias como picos de tráfego.

Use essa configuração como uma maneira de controlar custos ou de limitar o número de conexões com um serviço de apoio, como um banco de dados.

Para informações sobre os limites máximos de instâncias que podem ser aplicáveis ao seu serviço, consulte Limites máximos de instâncias.

Para mais informações sobre como o Cloud Run faz o escalonamento automático das instâncias de contêiner, consulte Escalonamento automático de instâncias.

Como aplicar instâncias máximas no nível de serviço em comparação com o nível de revisão

É possível configurar o máximo de instâncias no nível de serviço ou de revisão. O Google recomenda que você use o número máximo de instâncias no nível de serviço para limitar o número de instâncias de um serviço, a menos que você tenha uma necessidade específica de limitar as instâncias no nível de revisão. Por padrão, o Cloud Run define 100 instâncias para cada revisão. Para permitir que o serviço seja escalonado para mais instâncias, modifique esse valor.

Ao aplicar o número máximo de instâncias, as configurações entram em vigor da seguinte maneira:

  • Nível de serviço: imediato
  • Nível de revisão: após a implantação da revisão

Revisões marcadas e instâncias máximas no nível de serviço

As revisões marcadas são iniciadas, mas só contam para as instâncias máximas no nível de serviço se fizerem parte de uma divisão de tráfego.

Funções exigidas

Para receber as permissões necessárias para configurar e implantar os serviços do Cloud Run, peça ao administrador para conceder a você os seguintes papéis do IAM:

Se você estiver implantando um serviço ou uma função do código-fonte, também precisará ter outros papéis concedidos no projeto e na conta de serviço do Cloud Build.

Para uma lista de papéis e permissões do IAM associados ao Cloud Run, consulte Papéis do IAM do Cloud Run e Permissões do IAM do Cloud Run. Se o serviço do Cloud Run interage com as APIs doGoogle Cloud , como as bibliotecas de cliente do Cloud, consulte o guia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consulte permissões de implantação e gerenciar acesso.

Considerações sobre o custo

A configuração de instâncias máximas permite estabelecer um limite de segurança de custo para gerenciar custos. Definir um número máximo maior prioriza a disponibilidade, mas introduz possíveis riscos de faturamento devido a picos de tráfego inesperados ou configurações incorretas. Como uma proteção de custo, defina essa configuração no nível do serviço ao implantar o serviço inicialmente. Sugerimos começar com um valor máximo de instâncias de 3 para proteger seu orçamento contra picos inesperados.

Consulte os preços do Cloud Run ou estime os custos com a calculadora de preços para mais informações. Para mais ferramentas de controle de custos, consulte cotas de alocação de recursos ou orçamentos e alertas de faturamento.

Configurar o máximo de instâncias no nível do serviço

É possível alterar a configuração de número máximo de instâncias usando o console do Google Cloud , a Google Cloud CLI, o YAML ou o Terraform ao criar um novo serviço ou implantar uma nova revisão.

Console

  1. No console do Google Cloud , acesse o Cloud Run:

    Acessar o Cloud Run

  2. Selecione Serviços no menu de navegação do Cloud Run:

    1. Se você estiver configurando um novo serviço, clique em Implantar contêiner e preencha a página de configurações de serviço inicial.

    2. Se você estiver configurando um serviço atual, clique nele e na guia Escalonamento.

  3. Em Escalonamento de serviço, encontre o campo Número máximo de instâncias e especifique o número máximo necessário de instâncias de contêiner, usando qualquer valor inteiro de 1 ao limite máximo possível para seu serviço. Para remover o limite no nível do serviço, exclua o valor definido. Isso reverte a configuração para o padrão.

  4. Clique em Criar para um novo serviço. Clique em Ver diff e reimplantar e em Implantar mudanças para um serviço atual.

gcloud

É possível atualizar o número máximo de instâncias de um determinado serviço usando o seguinte comando:

gcloud run services update SERVICE --max MAX-VALUE

Substitua:

  • SERVICE: o nome do serviço.
  • MAX-VALUE: o número máximo de instâncias de contêiner necessário, usando qualquer valor inteiro de 1 ao limite máximo possível para seu serviço. Para remover o limite no nível do serviço, exclua o valor definido. Isso reverte a configuração para o padrão.

Também é possível definir o número máximo de instâncias durante a implantação usando o seguinte comando:

gcloud run deploy --image IMAGE_URL --max MAX-VALUE

Substitua:

  • IMAGE_URL: uma referência à imagem do contêiner, por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL segue o formato de LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  • MAX-VALUE: o número máximo de instâncias de contêiner necessário, usando qualquer valor inteiro de 1 ao limite máximo.

YAML

Qualquer mudança na configuração leva à criação de uma nova revisão. As próximas revisões também recebem automaticamente essa configuração, a menos que você faça atualizações explícitas para alterá-la.

  1. Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Atualize o atributo run.googleapis.com/maxScale::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/maxScale: 'MAX-INSTANCE'

    Substitua:

    • SERVICE: o nome do serviço do Cloud Run.
    • MAX-INSTANCE: o número máximo de instâncias de contêiner necessário, usando qualquer valor inteiro de 1 ao limite máximo possível para seu serviço. Para remover o limite no nível do serviço, exclua o valor definido. Isso reverte a configuração para o padrão.
  3. Crie ou atualize o serviço usando o seguinte comando:

    gcloud run services replace service.yaml

    O comando gcloud run services replace usa o arquivo service.yaml por padrão, se ele estiver presente.

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Adicione o seguinte a um recurso google_cloud_run_v2_service na configuração do Terraform:
resource "google_cloud_run_v2_service" "default" {
name     = "SERVICE"
location = "REGION"

scaling {
  max_instance_count = MAX_INSTANCE
}

template {
  containers {
    image = "IMAGE_URL"
  }
}
}

Substitua:

  • SERVICE: o nome do seu serviço do Cloud Run.
  • REGION: a região do Google Cloud , por exemplo, europe-west1.
  • MAX_INSTANCE: o número máximo de instâncias de contêiner necessário, usando qualquer valor inteiro de 1 ao limite máximo.
  • IMAGE_URL: uma referência à imagem do contêiner, por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL segue o formato de LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

Mostrar instâncias máximas no nível de serviço

Para ver as configurações atuais de máximo de instâncias no nível de serviço do serviço do Cloud Run:

Console

  1. No console do Google Cloud , acesse a página Serviços do Cloud Run:

    Acessar o Cloud Run

  2. Clique no serviço para abrir o painel Detalhes do serviço.

  3. Clique na guia Escalonamento para ver a configuração atual.

gcloud

  1. Use o comando a seguir:

    gcloud run services describe SERVICE
  2. Localize o valor de Escalonamento: automático (mín.: MIN_VALUE, máx.: MAX_VALUE) na configuração retornada.

Configurar o máximo de instâncias no nível da revisão

Qualquer mudança na configuração leva à criação de uma nova revisão. As próximas revisões também recebem automaticamente essa configuração, a menos que você faça atualizações explícitas para alterá-la.

Por padrão, as revisões do Cloud Run são configuradas para escalonar verticalmente no máximo para 100 instâncias.

O escalonamento no nível da revisão só está disponível para serviços que já tinham o recurso configurado.

Console

  1. No console do Google Cloud , acesse o Cloud Run:

    Acessar o Cloud Run

  2. Selecione Serviços no menu de navegação do Cloud Run:

    1. Se você estiver configurando um novo serviço, clique em Implantar contêiner e preencha a página de configurações de serviço inicial. Em seguida, clique em Contêineres, rede, segurança para expandir a página de configurações de serviço.

    2. Se você estiver configurando um serviço atual, clique nele e na guia Escalonamento.

  3. Na seção Escalonamento de revisão, especifique o número máximo de instâncias de contêiner no campo Número máximo de instâncias.

  4. Clique em Criar para um novo serviço. Clique em Ver diff e reimplantar e em Implantar mudanças para um serviço atual.

gcloud

É possível atualizar o número máximo de instâncias de um determinado serviço usando o seguinte comando:

gcloud run services update SERVICE --max-instances MAX-VALUE

Substitua:

  • SERVICE: o nome do serviço.
  • MAX-VALUE: o número máximo de instâncias de contêiner que você quer, usando qualquer valor inteiro de 1 ao limite máximo.

YAML

  1. Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Atualize o atributo autoscaling.knative.dev/maxScale::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/maxScale: 'MAX-INSTANCE'
          name: REVISION

    Substitua:

    • SERVICE: o nome do serviço do Cloud Run.
    • MAX-INSTANCE: o número máximo de instâncias de contêiner necessário, usando qualquer valor inteiro de 1 ao limite máximo.
    • REVISION: um novo nome de revisão ou exclua-o (se houver). Se você fornecer um novo nome de revisão, ele precisará atender aos seguintes critérios:
      • Começa com SERVICE-
      • Contém apenas letras minúsculas, números e -
      • Não termina com um -
      • Não excede 63 caracteres
  3. Crie ou atualize o serviço usando o seguinte comando:

    gcloud run services replace service.yaml

    O comando gcloud run services replace usa o arquivo service.yaml por padrão, se ele estiver presente.

Ver as configurações de instâncias máximas no nível da revisão

O escalonamento no nível da revisão só está disponível para serviços que já tinham o recurso configurado.

Para ver as configurações atuais de máximo de instâncias no nível da revisão para o serviço do Cloud Run:

Console

  1. No console do Google Cloud , acesse a página Serviços do Cloud Run:

    Acessar o Cloud Run

  2. Clique no serviço para abrir o painel Detalhes do serviço.

  3. Clique na guia Escalonamento.

  4. Em Escalonamento de revisão, confira o Número máximo de instâncias.

gcloud

  1. Use o comando a seguir:

    gcloud run services describe SERVICE
  2. Localize o valor de Máximo de instâncias: na configuração retornada.

Usar instâncias mínimas ou máximas no nível de serviço e de revisão

A tabela a seguir mostra o comportamento se você combinar instâncias máximas no nível de serviço com instâncias mínimas ou máximas no nível da revisão:

Configuração no nível do serviço Configuração no nível da revisão Comportamento
Máximo de instâncias no nível de serviço definido Máximo de instâncias no nível da revisão definido O limite máximo efetivo de instâncias é o menor valor entre as instâncias máximas no nível da revisão e as instâncias máximas no nível de serviço.
Máximo de instâncias no nível de serviço definido Instâncias mínimas no nível da revisão definidas Se o número máximo de instâncias no nível de serviço for definido como um valor menor que o mínimo de instâncias no nível da revisão, a revisão vai iniciar instâncias até o máximo de instâncias no nível de serviço e não vai atingir o mínimo de instâncias no nível da revisão configurado.

Usar instâncias máximas no nível de serviço com divisão de tráfego

Se você usar a divisão de tráfego, as instâncias máximas de nível de serviço serão distribuídas entre as revisões com base na proporção dessa divisão. Por exemplo, se o máximo de instâncias no nível de serviço for igual a 100, uma divisão de tráfego de 50/50 alocará 50 instâncias máximas no nível de serviço para cada revisão. A tabela a seguir mostra um exemplo de cenário de configuração:

Exemplo de configuração Comportamento resultante
Máximo de instâncias no nível de serviço definido (cenário em que não há configurações no nível da revisão): 100
  • Divisão de tráfego para a Revisão A: 10%
  • Divisão de tráfego para a Revisão B: 10%
  • Divisão de tráfego para a Revisão C : 80%
Uma parte do máximo de instâncias no nível de serviço é alocada para cada revisão. O máximo de instâncias efetivas para cada revisão é fixo com base na divisão de tráfego. O máximo de instâncias para a Revisão A é 10, para a Revisão B é 10 e para a Revisão C é 80.