Defina o número mínimo de instâncias para serviços

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:

Chame a API Cloud Run Admin a partir da consola Google Cloud .
Figura 1. Uma instância de exemplo que recebe e processa três pedidos.

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 como 0, é-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:

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

  1. Na Google Cloud consola, aceda ao Cloud Run:

    Aceda ao Cloud Run

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

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

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

  5. 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 formato LOCATION-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.

  1. 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
  2. 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.
  3. 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 de gcloud 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

  1. Na Google Cloud consola, aceda ao Cloud Run:

    Aceda ao Cloud Run

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

  3. A definição atual é apresentada na parte superior direita do painel de detalhes do serviço, junto a Ajuste de escala.

gcloud

  1. Use o seguinte comando:

    gcloud run services describe SERVICE
  2. 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

  1. Na Google Cloud consola, aceda ao Cloud Run:

    Aceda ao Cloud Run

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

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

  4. Clique no separador Contentor.

    imagem

    • 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.
  5. 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 formato LOCATION-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

  1. 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
  2. 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
  3. 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 recurso google_cloud_run_v2_service na sua configuração do Terraform:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-min-instances"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    scaling {
      # Min instances
      min_instance_count = 1
    }
  }
}

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

  1. Na Google Cloud consola, aceda ao Cloud Run:

    Aceda ao Cloud Run

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

  3. Clique no separador Revisões.

  4. No painel de detalhes à direita, a definição Revisão mín. de instâncias é apresentada no separador Contentor.

gcloud

  1. Use o seguinte comando:

    gcloud run services describe SERVICE
  2. 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
  • Revisão A: instâncias mínimas: 0
  • Instância mínima da revisão B: 0
  • Divisão de tráfego: 60/40
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
  • Revisão A: instâncias mínimas: 6
  • Instância mínima da revisão B: 0
  • Divisão de tráfego: 50/50
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
  • Revisão A: instâncias mínimas: 0
  • Revisão A: máximo de instâncias: 3
  • Instância mínima da revisão B: 0
  • Divisão de tráfego: 50/50
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.