Esta página descreve como ativar instâncias inativas para um serviço configurando o número mínimo de instâncias através do comportamento de dimensionamento automático do Cloud Run predefinido. Para dimensionar manualmente o seu serviço, consulte o artigo sobre a dimensionamento manual.
Se precisar de mais controlo sobre o comportamento de escalabilidade automática do seu serviço, pode definir um número mínimo de instâncias para evitar tempos de início lentos dos contentores e reduzir a latência do serviço. Para os serviços do Cloud Run, o Cloud Run, por predefinição, dimensiona o número de instâncias com base no número de pedidos recebidos.
No entanto, se o seu serviço requerer uma latência reduzida, especialmente quando é escalado a partir de zero instâncias ativas, pode alterar este comportamento predefinido especificando um número mínimo de instâncias de contentores a manter ativas e prontas para publicar pedidos. Consulte as Sugestões gerais de desenvolvimento para mais detalhes sobre esta otimização.
O Cloud Run remove instâncias que não estão a processar pedidos (inativas).
Com o número mínimo de instâncias definido, o Cloud Run mantém, pelo menos, o número de instâncias mínimas em execução, mesmo que não estejam a processar pedidos. As instâncias ativas acima do número min-instances
podem ficar inativas se não estiverem a receber pedidos.
Por exemplo, se min-instances
for 10
e o número de instâncias ativas for 0
, o número de instâncias inativas é 10
. Quando o número de instâncias ativas aumenta para 6
, o número de instâncias inativas diminui para 4
.
Tenha em atenção que, se um serviço não tiver publicado tráfego recentemente, a métrica de instâncias ativas pode indicar que não existem instâncias ativas, mesmo que tenha especificado uma ou mais para instâncias mínimas.
Pode reiniciar as instâncias mínimas em qualquer altura.
Faturação
As instâncias mantidas em execução através da funcionalidade de instâncias mínimas incorrem em custos de faturação.
O diagrama seguinte mostra como funciona a faturação durante um ciclo de vida da instância quando configura instâncias mínimas para um serviço ou uma revisão:
Consoante as definições de faturação configuradas, a faturação do serviço é feita da seguinte forma:
- Para a faturação baseada em pedidos, a faturação é feita a uma taxa mais baixa quando as instâncias estão inativas e à espera de processar pedidos. Se o número mínimo de instâncias estiver definido como
0
, não lhe é faturado nada quando as instâncias estão inativas. - Para a faturação baseada em instâncias, é-lhe cobrada a taxa predefinida durante todo o ciclo de vida da instância. O tempo desde o início até ao encerramento inclui o período em que uma instância está a processar pedidos ou está inativa. Por outras palavras, mesmo que min
instances esteja definido como
0
, continua a ser faturado à taxa predefinida. Esta opção funciona bem se precisar de CPU fora dos pedidos. Se min instances estiver definido como0
, é-lhe faturada a taxa predefinida.
Uma vez que estes custos são previsíveis, a Google recomenda a compra de um desconto por utilização garantida.
Aplique instâncias mínimas ao nível do serviço em vez do nível da revisão
Pode configurar instâncias mínimas ao nível do serviço ou ao nível da revisão. A Google recomenda que aplique instâncias mínimas ao nível do serviço e evite combinar instâncias mínimas ao nível do serviço e da revisão. Saiba mais acerca do comportamento quando configura definições de escalabilidade ao nível do serviço e da revisão.
Se aplicar instâncias mínimas ao nível da revisão, as definições entram em vigor após a implementação da revisão. Se aplicar esta funcionalidade ao nível do serviço, a definição entra em vigor sem necessidade de implementar uma nova revisão.
Revisões e instâncias mínimas
Quando as instâncias mínimas são definidas ao nível do serviço, os pedidos recebidos são distribuídos a todas as revisões que estão a publicar tráfego proporcionalmente à divisão de tráfego.
Quando as instâncias mínimas são definidas ao nível da revisão, as instâncias mínimas são iniciadas sempre que a revisão é referenciada numa divisão de tráfego ou tem uma etiqueta de tráfego atribuída. Isto significa que a instância é faturada quando processa pedidos e também quando está à espera de pedidos recebidos.
Revisões etiquetadas e instâncias mínimas ao nível do serviço
Se for iniciada uma revisão com uma etiqueta atribuída, a instância é contabilizada para o número mínimo de instâncias ao nível do serviço, se fizer parte de uma divisão de tráfego.
Encaminhamento de pedidos com instâncias mínimas
Quando define instâncias mínimas, o Cloud Run distribui os pedidos recebidos de forma uniforme por todas estas instâncias aprovisionadas. Compreender este comportamento é importante para gerir os custos, especialmente com a faturação baseada em pedidos ou se pretender manter instâncias hot spare inativas. Para minimizar os custos, defina o número mínimo de instâncias para o número de instâncias necessárias para publicar o seu tráfego típico.
Funções necessárias
Para receber as autorizações de que precisa para configurar e implementar serviços do Cloud Run, peça ao seu administrador para lhe conceder as seguintes funções de IAM:
-
Programador do Cloud Run (
roles/run.developer
) no serviço Cloud Run -
Utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na identidade do serviço
Se estiver a implementar um serviço ou uma função a partir do código fonte, também tem de ter funções adicionais concedidas no seu projeto e na conta de serviço do Cloud Build.
Para ver uma lista de funções e autorizações de IAM associadas ao Cloud Run, consulte os artigos Funções de IAM do Cloud Run e Autorizações de IAM do Cloud Run. Se o seu serviço do Cloud Run interage com Google Cloud APIs, como as bibliotecas cliente da Google Cloud, consulte o guia de configuração da identidade do serviço. Para mais informações sobre a atribuição de funções, consulte as autorizações de implementação e faça a gestão do acesso.
Configure instâncias mínimas ao nível do serviço
Por predefinição, as instâncias de contentores têm as instâncias mínimas ao nível do serviço desativadas,
com uma definição de 0
. Pode alterar esta predefinição através da
Google Cloud consola, da CLI Google Cloud ou de um ficheiro YAML:
Consola
Na Google Cloud consola, aceda ao Cloud Run:
Se estiver a configurar um novo serviço, selecione Serviços no menu e clique em Implementar contentor para apresentar o formulário Criar serviço. Localize o formulário Dimensionamento do serviço.
Se estiver a configurar um serviço existente, clique no serviço para apresentar o respetivo painel de detalhes e, de seguida, clique em
Editar definições de escalabilidade do nível de serviço na parte superior direita do painel de detalhes.No campo com a etiqueta Número mínimo de instâncias, especifique o número de instâncias de contentores a manter ativas, prontas para receber pedidos.
Clique em Criar para um novo serviço ou em Implementar para um serviço existente.
gcloud
Atualize o número mínimo de instâncias para um determinado serviço através do seguinte comando:
gcloud run services update SERVICE --min MIN-VALUE
Substitua o seguinte:
- SERVICE: o nome do seu serviço.
- MIN-VALUE: o número de instâncias de contentores a manter
ativas, prontas para receber pedidos. Especifique
default
para limpar qualquer definição de instância mínima.
Em alternativa, pode definir o número mínimo de instâncias durante a implementação através do comando:
gcloud run deploy --image IMAGE_URL --min MIN-VALUE
Substitua o seguinte:
- IMAGE_URL: uma referência à imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - MIN-VALUE: o número de instâncias do contentor a manter ativas, prontas para receber pedidos. Especifique
default
para limpar qualquer definição de instância mínima.
YAML
Qualquer alteração de configuração leva à criação de uma nova revisão. As revisões subsequentes também vão receber automaticamente esta definição de configuração, a menos que faça atualizações explícitas para a alterar.
Se estiver a criar um novo serviço, ignore este passo. Se estiver a atualizar um serviço existente, transfira a respetiva configuração YAML:
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 o seguinte:
- SERVICE: o nome do seu serviço do Cloud Run
- MIN-INSTANCE: o número de instâncias a manter ativas, prontas para receber pedidos.
Crie ou atualize o serviço com o seguinte comando:
gcloud run services replace service.yaml
Bibliotecas cliente
Para atualizar as instâncias mínimas ao nível do serviço para o seu serviço a partir do código:
API REST
Para atualizar as instâncias mínimas ao nível do serviço para um determinado serviço, envie um PATCH
pedido HTTP para o ponto final da API Cloud Run Admin
service
.
Por exemplo, usar 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 o seguinte:
- ACCESS_TOKEN: um token de acesso válido para uma conta que
tenha as autorizações de IAM para atualizar um serviço.
Por exemplo, se tiver sessão iniciada em
gcloud
, pode obter um token de acesso através degcloud auth print-access-token
. A partir de uma instância de contentor do Cloud Run, pode obter um token de acesso através do servidor de metadados da instância de contentor. - MIN-VALUE: o número de instâncias de contentores a manter ativas, prontas para receber pedidos.
- SERVICE: o nome do serviço.
- REGION: a Google Cloud região do serviço.
- PROJECT-ID: o Google Cloud ID do projeto.
Veja as instâncias mínimas ao nível do serviço
Para ver as definições atuais de instâncias mínimas ao nível do serviço para o seu serviço do Cloud Run:
Consola
Na Google Cloud consola, aceda ao Cloud Run:
Clique no serviço que lhe interessa para abrir o painel Detalhes do serviço.
A definição atual é apresentada na parte superior direita do painel de detalhes do serviço, junto a Ajuste de escala.
gcloud
Use o seguinte comando:
gcloud run services describe SERVICE
Localize o valor de Scaling: Auto (Min: MIN_VALUE, Max: MAX_VALUE) na configuração devolvida.
Configure instâncias mínimas ao nível da revisão
Qualquer alteração de configuração leva à criação de uma nova revisão. As revisões subsequentes também vão receber automaticamente esta definição de configuração, a menos que faça atualizações explícitas para a alterar.
Por predefinição, as instâncias de contentores têm a opção min-instances
desativada, com uma definição de 0
. Pode alterar esta predefinição através da Google Cloud consola, da CLI Google Cloud ou de um ficheiro YAML quando cria um novo serviço ou implementa uma nova revisão:
Consola
Na Google Cloud consola, aceda ao Cloud Run:
Selecione Serviços no menu e clique em Implementar contentor para configurar um novo serviço. Se estiver a configurar um serviço existente, clique no serviço e, de seguida, em Editar e implementar nova revisão.
Se estiver a configurar um novo serviço, preencha a página de definições iniciais do serviço e, de seguida, clique em Contentores, volumes, rede, segurança para expandir a página de configuração do serviço.
Clique no separador Contentor.
- No campo com a etiqueta Número mínimo de instâncias, especifique o número de instâncias de contentores a manter ativas e prontas para receber pedidos.
Clique em Criar ou Implementar.
gcloud
Pode atualizar min-instance
de um determinado serviço através do seguinte comando:
gcloud run services update SERVICE --min-instances MIN-VALUE
Substitua o seguinte:
- SERVICE: o nome do seu serviço.
- MIN-VALUE: o número de instâncias de contentores a manter
ativas, prontas para receber pedidos. Especifique
default
para limpar qualquer definição de instância mínima.
Também pode definir min-instance
durante a
implementação através do comando:
gcloud run deploy --image IMAGE_URL --min-instances MIN-VALUE
Substitua o seguinte:
- IMAGE_URL: uma referência à imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - MIN-VALUE: o número de instâncias de contentores a manter
ativas, prontas para receber pedidos. Especifique
default
para limpar qualquer definição de instância mínima.
YAML
Se estiver a criar um novo serviço, ignore este passo. Se estiver a atualizar um serviço existente, transfira a respetiva configuração YAML:
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 o seguinte:
- SERVICE: o nome do seu serviço do Cloud Run
- MIN-INSTANCE: o número de instâncias a manter ativas, prontas para receber pedidos.
- REVISION com um novo nome de revisão ou elimine-o (se existir). Se fornecer um novo nome de revisão, este tem de cumprir os seguintes critérios:
- Começa com
SERVICE-
- Contém apenas letras minúsculas, números e
-
- Não termina com um
-
- Não exceder 63 carateres
- Começa com
Crie ou atualize o serviço com o seguinte comando:
gcloud run services replace service.yaml
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
Adicione o seguinte a um recursogoogle_cloud_run_v2_service
na sua 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 seu próprio número mínimo de instâncias.
Veja o número mínimo de instâncias ao nível da revisão
Para ver as definições de instâncias mínimas ao nível da revisão atuais do seu serviço do Cloud Run:
Consola
Na Google Cloud consola, aceda ao Cloud Run:
Clique no serviço que lhe interessa para abrir o painel Detalhes do serviço.
Clique no separador Revisões.
No painel de detalhes à direita, a definição Revisão mín. de instâncias é apresentada no separador Contentor.
gcloud
Use o seguinte comando:
gcloud run services describe SERVICE
Localize o valor de Min instances: na configuração devolvida.
Exemplos
As secções seguintes mostram o comportamento do serviço quando configura instâncias mínimas.
Use instâncias mínimas ou máximas ao nível do serviço e da revisão
A tabela seguinte mostra o comportamento se combinar instâncias mínimas ao nível do serviço e instâncias mínimas ou máximas ao nível da revisão:
Definição de configuração | Comportamento |
---|---|
As instâncias mínimas ao nível do serviço e as instâncias mínimas ao nível da revisão estão definidas. | O valor efetivo para a revisão é o maior entre as instâncias mínimas ao nível da revisão e as instâncias mínimas ao nível do serviço. |
As instâncias mínimas ao nível do serviço e as instâncias máximas ao nível da revisão estão definidas. | O valor efetivo da revisão é o menor entre as instâncias máximas ao nível da revisão e as instâncias mínimas ao nível do serviço. Isto é válido mesmo que o número máximo de instâncias ao nível da revisão impeça o serviço de atingir o número de instâncias configurado para o número mínimo de instâncias ao nível do serviço. |
Use instâncias mínimas ao nível do serviço com divisão de tráfego
Se usar a divisão de tráfego, as instâncias mínimas ao nível do serviço são divididas pelas revisões com base na proporção da divisão de tráfego. Por exemplo, se o número mínimo de instâncias ao nível do serviço for 10, uma divisão de tráfego de 50/50 atribui 5 instâncias mínimas ao nível do serviço a cada revisão.
A tabela seguinte mostra exemplos de cenários de configuração:
Exemplo de utilização | Configuração de exemplo | Comportamento resultante |
---|---|---|
Sem definições ao nível da revisão | Instâncias mínimas ao nível do serviço: 10
|
A revisão A recebe 6 instâncias das instâncias mínimas ao nível do serviço proporcionais à divisão de tráfego. A revisão B recebe 4 instâncias das instâncias mínimas ao nível do serviço proporcionais à divisão de tráfego. |
Receber mais do que o mínimo de instâncias ao nível do serviço devido ao mínimo de instâncias ao nível da revisão | Instâncias mínimas ao nível do serviço: 10
|
A revisão A recebe 6 instâncias das instâncias mínimas ao nível da revisão. A revisão B recebe 5 instâncias das instâncias mínimas ao nível do serviço proporcionais à divisão de tráfego. Este valor excede as instâncias mínimas ao nível do serviço e destina-se a isso. |
Receber menos instâncias do que o mínimo ao nível do serviço devido ao número máximo de instâncias ao nível da revisão. | Instâncias mínimas ao nível do serviço: 10
|
A revisão A recebe 3 instâncias das instâncias mínimas ao nível do serviço geradas pela divisão de tráfego, mas está limitada às instâncias máximas ao nível da revisão. A revisão B recebe 5 instâncias das instâncias mínimas ao nível do serviço proporcionais à divisão de tráfego. Isto resulta em 8 instâncias ao nível do serviço, uma vez que 2 são perdidas devido ao número máximo de instâncias ao nível da revisão da revisão A. |
O número mínimo de instâncias ao nível do serviço é superior ao número de revisões na divisão de tráfego e existe uma quantidade fracionária de instâncias proporcional à divisão de tráfego | Instâncias mínimas ao nível do serviço: 3
|
A revisão A recebe 1 instância mínima e a revisão B recebe 2 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 superior ao necessário para o seu tráfego típico, muitas instâncias podem ficar ligeiramente ativas, cada uma a processar alguns pedidos. Por exemplo, se o seu serviço geralmente precisar de 200 instâncias para o pico de carga, mas o número mínimo de instâncias estiver configurado para 600, os pedidos recebidos serão distribuídos por todas as 600 instâncias. Isto faz com que muitas destas 600 instâncias se tornem algo ativas, cada uma a processar uma pequena parte do tráfego, em vez de ~200 instâncias estarem altamente ativas e as 400 restantes permanecerem completamente inativas.
Para minimizar os custos (através de uma utilização mais elevada em menos instâncias), defina as instâncias mínimas para um valor que se alinhe estreitamente com o número real de instâncias necessárias para fornecer o seu tráfego típico.
Além disso, quando o dimensionamento automático aprovisiona instâncias adicionais acima das instâncias mínimas configuradas, o Cloud Run prefere encaminhar os pedidos recebidos primeiro para as instâncias mínimas configuradas antes de enviar pedidos para as instâncias dimensionadas automaticamente. Com a faturação baseada em pedidos, este encaminhamento preferencial para as instâncias mínimas configuradas reduz o custo preenchendo as instâncias mínimas configuradas antes de usar as instâncias com escalamento automático. Tenha em atenção que este encaminhamento preferencial também pode levar a que as instâncias mínimas configuradas tenham uma utilização superior à das instâncias com escalonamento automático, consoante a quantidade de tráfego.