Nesta página, descrevemos como ativar instâncias ociosas para um serviço configurando o número mínimo de instâncias usando o comportamento padrão de escalonamento automático do Cloud Run. Para escalonar manualmente seu serviço, consulte escalonamento manual.
Se você precisar de mais controle sobre o comportamento de escalonamento automático do serviço, defina um número mínimo de instâncias para evitar tempos de inicialização lentos do contêiner e reduzir a latência do serviço. Para serviços do Cloud Run, o Cloud Run, por padrão, escalona o número de instâncias com base no número de solicitações recebidas.
No entanto, se o serviço requer latência reduzida, especialmente ao escalonar de zero instâncias ativas, é possível mudar esse comportamento padrão especificando um número mínimo de instâncias de contêiner a serem mantidas em modo de espera e prontas para atender a solicitações. Consulte as dicas gerais de desenvolvimento para mais detalhes sobre essa otimização.
O Cloud Run remove instâncias que não estão processando solicitações (inativas).
Com o número
mínimo de instâncias definido, o Cloud Run mantém pelo menos o número mínimo de instâncias em execução, mesmo que elas não estejam processando solicitações. As instâncias ativas acima do número min-instances
podem ficar inativas se não estiverem recebendo solicitações.
Por exemplo, se min-instances
for 10
e o número de instâncias ativas for 0
, o número de instâncias inativas será 10
. Quando o número de instâncias ativas aumenta para 6
, o número de instâncias inativas diminui para 4
.
Se um serviço não tiver processado tráfego recentemente, a métrica de instâncias ativas poderá indicar que nenhuma instância está ativa, mesmo que você tenha especificado uma ou mais para instâncias mínimas.
É possível reiniciar as instâncias mínimas a qualquer momento.
Faturamento
As instâncias que permanecem em execução com o recurso de instâncias mínimas geram custos de faturamento.
O diagrama a seguir mostra como o faturamento funciona durante um ciclo de vida da instância ao configurar instâncias mínimas para um serviço ou uma revisão:
Dependendo das configurações de faturamento configuradas, o serviço é faturado da seguinte maneira:
- No faturamento com base em solicitações, você recebe uma cobrança menor quando as instâncias
estão inativas e aguardando o processamento de solicitações. Se o número mínimo de instâncias for definido como
0
, você não vai receber cobranças quando as instâncias estiverem ociosas. - Na cobrança com base em instâncias, você recebe uma fatura com a taxa padrão durante todo o ciclo de vida da instância. O tempo de início e desligamento inclui quando uma instância está processando solicitações ou inativa. Em outras palavras, mesmo que min
instances esteja definido como
0
, você ainda vai receber a cobrança da taxa padrão. Essa opção funciona bem se você precisar de CPU fora das solicitações. Se min instances estiver definido como0
, você vai receber a cobrança da taxa padrão.
Como essas cobranças são previsíveis, o Google recomenda a compra de um desconto por compromisso de uso.
Aplicar instâncias mínimas no nível de serviço em comparação com o nível de revisão
É possível configurar instâncias mínimas no nível de serviço ou de revisão. O Google recomenda que você aplique instâncias mínimas no nível de serviço e evite combinar instâncias mínimas no nível de serviço e de revisão. Saiba mais sobre o comportamento quando você configura o escalonamento no nível do serviço e da revisão.
Se você aplicar instâncias mínimas no nível da revisão, as configurações entrarão em vigor após a implantação da revisão. Se você aplicar esse recurso no nível de serviço, a configuração entrará em vigor sem precisar implantar uma nova revisão.
Revisões e instâncias mínimas
Quando as instâncias mínimas são definidas no nível de serviço, as solicitações recebidas são distribuídas para todas as revisões que veiculam tráfego proporcionalmente à divisão de tráfego.
Quando o mínimo de instâncias é definido no nível da revisão, elas são iniciadas sempre que a revisão é referenciada em uma divisão de tráfego ou tem uma tag de tráfego atribuída. Isso significa que a instância é cobrada ao processar solicitações e também quando está aguardando solicitações recebidas.
Revisões marcadas e instâncias mínimas no nível de serviço
Se uma revisão com uma tag atribuída for iniciada, a instância será contabilizada para as instâncias mínimas no nível de serviço se fizer parte de uma divisão de tráfego.
Roteamento de solicitações com instâncias mínimas
Quando você define um número mínimo de instâncias, o Cloud Run distribui as solicitações recebidas de maneira uniforme entre todas as instâncias provisionadas. Entender esse comportamento é importante para gerenciar custos, especialmente com faturamento baseado em solicitações ou se você pretende manter instâncias hot spare ociosas. Para minimizar os custos, defina o número mínimo de instâncias como o número de instâncias necessárias para atender ao tráfego típico.
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:
-
Desenvolvedor do Cloud Run (
roles/run.developer
) no serviço Cloud Run -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na identidade do serviço
Se você estiver implantando um serviço ou uma função do código-fonte, também precisará ter outros papéis concedidos a você 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 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.
Configurar instâncias mínimas no nível de serviço
Por padrão, as instâncias de contêiner têm instâncias mínimas no nível de serviço desativadas, com uma configuração
de 0
. É possível mudar esse padrão usando o console
Google Cloud , a Google Cloud CLI ou um arquivo YAML:
Console
No Google Cloud console, acesse o Cloud Run:
Se você estiver configurando um novo serviço, selecione Serviços no menu e clique em Implantar contêiner para mostrar o formulário Criar serviço. Localize o formulário Escalonamento de serviço.
Se você estiver configurando um serviço atual, clique nele para exibir o painel de detalhes e, em seguida, clique em
Editar configurações de escalonamento no nível do serviço no canto superior direito do painel de detalhes.No campo Número mínimo de instâncias, especifique o valor de instâncias de contêiner a serem mantidas quentes e prontas para receber solicitações.
Clique em Criar para um novo serviço ou em Implantar para um serviço atual.
gcloud
Atualize o número mínimo de instâncias de um determinado serviço usando o seguinte comando:
gcloud run services update SERVICE --min MIN-VALUE
Substitua:
- SERVICE: o nome do serviço.
- MIN-VALUE: o número de instâncias
de contêiner a serem mantidas quentes e prontas para receber solicitações. Especifique
default
para limpar qualquer configuração mínima de instância.
Como alternativa, é possível definir o número mínimo de instâncias durante a implantação usando o comando:
gcloud run deploy --image IMAGE_URL --min MIN-VALUE
Substitua:
- IMAGE_URL: uma referência à imagem de 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 formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - MIN-VALUE: o número de instâncias
de contêiner a serem mantidas quentes e prontas para receber solicitações. Especifique
default
para limpar qualquer configuração mínima de instância.
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.
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
Atualize o atributo
run.googleapis.com/minScale
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE annotations: run.googleapis.com/minScale: 'MIN_INSTANCE'
Substitua:
- SERVICE: o nome do seu serviço do Cloud Run
- MIN-INSTANCE: o número de instâncias a serem mantidas quentes e prontas para receber solicitações.
Crie ou atualize o serviço usando o seguinte comando:
gcloud run services replace service.yaml
Bibliotecas de cliente
Para atualizar instâncias mínimas de nível de serviço para seu serviço a partir do código:
API REST
Para atualizar as instâncias mínimas no nível do serviço de um determinado serviço, envie uma solicitação HTTP PATCH
para o endpoint service
da API Cloud Run Admin.
Por exemplo, usando curl
:
curl -H "Content-Type: application/json" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -X PATCH \ -d '{ "scaling": { "minInstanceCount": MIN-VALUE }}' \ https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services/SERVICE?update_mask=scaling.minInstanceCount
Substitua:
- ACCESS_TOKEN: um token de acesso válido para uma conta com as permissões do IAM para atualizar um serviço.
Por exemplo, se você fez login em
gcloud
, é possível recuperar um token de acesso usandogcloud auth print-access-token
. Em uma instância de contêiner do Cloud Run, é possível recuperar um token de acesso por meio do servidor de metadados da instância de contêiner. - MIN-VALUE: o número de instâncias de contêiner a serem mantidas quentes e prontas para receber solicitações.
- SERVICE: o nome do serviço.
- REGION: a Google Cloud região do serviço.
- PROJECT-ID: o ID do projeto do Google Cloud .
Mostrar instâncias mínimas no nível de serviço
Para ver as configurações mínimas de instâncias mínimas no nível de serviço atuais do serviço do Cloud Run:
Console
No Google Cloud console, acesse o Cloud Run:
Clique no serviço de seu interesse para abrir o painel Detalhes do serviço.
A configuração atual é mostrada no canto superior direito do painel de detalhes do serviço, ao lado de Escalonamento.
gcloud
Use o comando a seguir:
gcloud run services describe SERVICE
Localize o valor de Escalonamento: automático (mín.: MIN_VALUE, máx.: MAX_VALUE) na configuração retornada.
Configurar instâncias mínimas 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 receberão automaticamente essa configuração, a menos que você faça atualizações explícitas para alterá-la.
Por padrão, as instâncias de contêiner têm min-instances
desativado, com uma configuração
de 0
. É possível mudar esse padrão usando o console Google Cloud , a
Google Cloud CLI ou um arquivo YAML ao criar um novo serviço ou
implantar uma nova revisão:
Console
No Google Cloud console, acesse o Cloud Run:
Selecione Serviços no menu e clique em Implantar contêiner para configurar um novo serviço. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar nova revisão.
Ao configurar um novo serviço, preencha a página inicial de configurações de serviço e clique em Contêineres, volumes, Rede e segurança para expandir essa página.
Clique na guia Contêiner.
- No campo Número mínimo de instâncias, especifique o valor de instâncias de contêiner a serem mantidas quentes e prontas para receber solicitações.
Clique em Criar ou Implantar.
gcloud
É possível atualizar o valor de min-instance
de um determinado serviço usando o seguinte comando:
gcloud run services update SERVICE --min-instances MIN-VALUE
Substitua:
- SERVICE: o nome do serviço.
- MIN-VALUE: o número de instâncias
de contêiner a serem mantidas quentes e prontas para receber solicitações. Especifique
default
para limpar qualquer configuração mínima de instância.
Também é possível definir min-instance
durante
a implantação usando este comando:
gcloud run deploy --image IMAGE_URL --min-instances MIN-VALUE
Substitua:
- IMAGE_URL: uma referência à imagem de 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 formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - MIN-VALUE: o número de instâncias
de contêiner a serem mantidas quentes e prontas para receber solicitações. Especifique
default
para limpar qualquer configuração mínima de instância.
YAML
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
Atualize o atributo
autoscaling.knative.dev/minScale:
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: autoscaling.knative.dev/minScale: 'MIN-INSTANCE' name: REVISION
Substitua:
- SERVICE: o nome do seu serviço do Cloud Run
- MIN-INSTANCE: o número de instâncias a serem mantidas quentes e prontas para receber solicitações.
- REVISION por um novo nome de revisão ou excluí-lo (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
- Começa com
Crie ou atualize o serviço usando o seguinte comando:
gcloud run services replace service.yaml
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Adicione o seguinte a um recursogoogle_cloud_run_v2_service
na configuração do Terraform:O recurso google_cloud_run_v2_service
anterior especifica um número mínimo de instâncias de 1
em template.scaling
.
Substitua 1
pelo número mínimo de instâncias.
Ver instâncias mínimas no nível da revisão
Para ver as configurações mínimas atuais de instâncias mínimas no nível da revisão para o serviço do Cloud Run:
Console
No Google Cloud console, acesse o Cloud Run:
Clique no serviço de seu interesse para abrir o painel Detalhes do serviço.
Clique na guia Revisões.
No painel de detalhes à direita, a configuração Instâncias mínimas da revisão está listada na guia Contêiner.
gcloud
Use o comando a seguir:
gcloud run services describe SERVICE
Localize o valor de Instâncias mínimas na configuração retornada.
Exemplos
As seções a seguir mostram o comportamento do serviço ao configurar instâncias mínimas.
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ínimas no nível de serviço e instâncias mínimas ou máximas no nível da revisão:
Configuração | Comportamento |
---|---|
As instâncias mínimas de nível de serviço e de revisão estão definidas. | O valor efetivo da revisão é o maior valor entre as instâncias mínimas no nível da revisão e as instâncias mínimas no nível de serviço. |
As instâncias mínimas no nível de serviço e o máximo de instâncias no nível da revisão estão definidos. | O valor efetivo da revisão é o menor número de instâncias máximas no nível de revisão e instâncias mínimas de nível de serviço. Isso é válido mesmo que o número máximo de instâncias no nível da revisão impeça que o serviço atinja o número de instâncias configuradas para esse nível mínimo. |
Usar instâncias mínimas de nível de serviço com divisão de tráfego
Se você usar a divisão de tráfego, as instâncias mínimas de nível de serviço serão divididas entre as revisões com base na proporção dessa divisão. Por exemplo, se o mínimo de instâncias no nível de serviço for igual a 10, uma divisão de tráfego de 50/50 alocará cinco instâncias mínimas no nível de serviço para cada revisão.
A tabela a seguir mostra exemplos de cenários de configuração:
Amostra de caso de uso | Exemplo de configuração | Comportamento resultante |
---|---|---|
Nenhuma configuração no nível da revisão | Mínimo de instâncias de nível de serviço: 10
|
A revisão A recebe seis instâncias de instâncias mínimas no nível de serviço proporcionais à divisão de tráfego. A revisão B recebe quatro instâncias de instâncias mínimas no nível de serviço proporcionais à divisão de tráfego. |
Receber mais do que o mínimo de instâncias no nível de serviço devido ao mínimo de instâncias no nível da revisão | Mínimo de instâncias de nível de serviço: 10
|
A revisão A recebe seis instâncias de instâncias mínimas no nível da revisão. A revisão B recebe cinco instâncias de instâncias mínimas no nível de serviço proporcionais à divisão de tráfego. Isso excede as instâncias mínimas no nível de serviço e é intencional. |
Receber menos que o mínimo de instâncias no nível de serviço devido ao máximo de instâncias no nível de revisão. | Mínimo de instâncias de nível de serviço: 10
|
A revisão A recebe três instâncias das instâncias mínimas no nível de serviço geradas pela divisão de tráfego, mas está limitada às instâncias máximas no nível da revisão. A revisão B recebe cinco instâncias das instâncias mínimas no nível de serviço proporcionais à divisão do tráfego. Isso resulta em oito instâncias de nível de serviço, já que duas são perdidas devido ao máximo de instâncias da revisão A no nível da revisão. |
O número mínimo de instâncias no nível de serviço é maior que o número de revisões na divisão de tráfego e há uma quantidade fracionária de instâncias proporcional à divisão de tráfego | Instâncias mínimas de nível de serviço: 3
|
A revisão A recebe uma instância mínima, e a revisão B recebe duas instâncias mínimas. O número de instâncias do serviço é 3. |
Determine o número mínimo de instâncias necessárias
Se o número mínimo de instâncias for definido como maior do que o necessário para seu tráfego típico, muitas instâncias poderão ficar ligeiramente ativas, processando algumas solicitações cada uma. Por exemplo, se o serviço geralmente exigir 200 instâncias para o pico de carga, mas o número mínimo de instâncias estiver configurado como 600, as solicitações recebidas serão distribuídas por todas as 600 instâncias. Isso faz com que muitas dessas 600 instâncias fiquem um pouco ativas, cada uma processando uma pequena parte do tráfego, em vez de cerca de 200 instâncias ficarem altamente ativas e as 400 restantes ficarem completamente inativas.
Para minimizar os custos (com maior utilização em menos instâncias), defina o número mínimo de instâncias como um valor que se alinhe ao número real de instâncias necessárias para atender ao tráfego típico.
Além disso, quando o escalonamento automático provisiona instâncias adicionais acima do mínimo configurado, o Cloud Run prefere rotear as solicitações recebidas primeiro para as instâncias mínimas configuradas antes de enviar solicitações para as instâncias com escalonamento automático. Com o faturamento baseado em solicitações, esse encaminhamento preferencial para as instâncias mínimas configuradas reduz o custo ao preencher as instâncias mínimas configuradas antes de usar as instâncias com escalonamento automático. Essa rotulagem preferencial também pode fazer com que as instâncias mínimas configuradas tenham uma utilização maior do que as instâncias com escalonamento automático, dependendo da quantidade de tráfego.