Definir instâncias mínimas para serviços (original) (raw)

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 deescalonamento automático do Cloud Run. Para escalonar manualmente seu serviço, consulteescalonamento 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çorequer 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.

Observe que, 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 geramcustos de faturamento.

O diagrama a seguir mostra como o faturamento funciona durante umciclo de vida da instânciaao configurar instâncias mínimas para um serviço ou uma revisão:

Chame a API Cloud Run Admin no console Google Cloud .

Figura 1. Uma instância de exemplo que recebe e processa três solicitações.

Dependendo das configurações de faturamentoconfiguradas, o serviço é faturado da seguinte maneira:

Como essas cobranças são previsíveis, o Google recomenda a compra de umdesconto 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çoou 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áfegoproporcionalmente à 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áfegoou tem uma tag de tráfegoatribuí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ídafor 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 inativas. 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:

Se você estiver implantando um serviçoou 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, consultePapéis do IAM do Cloud Rune Permissões do IAM do Cloud Run. Se o serviço do Cloud Run interage com APIsGoogle Cloud , como as bibliotecas de cliente do Cloud, consulte oguia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consultepermissões de implantaçãoe 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 consoleGoogle Cloud , a Google Cloud CLI ou um arquivo YAML:

Console

  1. No console do Google Cloud , acesse a página Serviços do Cloud Run:
    Acessar o Cloud Run
  2. Se você estiver configurando um novo serviço, clique em Implantar contêiner para mostrar o formulário Criar serviço. Localize o formulário Escalonamento de serviço.
  3. 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.
  4. 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.
  5. 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ânciasde um determinado serviço usando o seguinte comando:

gcloud run services update SERVICE --min MIN-VALUE

Substitua:

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:

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

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

  1. No console do Google Cloud , acesse a página Serviços do Cloud Run:
    Acessar o Cloud Run
  2. Clique no serviço de seu interesse para abrir o painel Detalhes do serviço.
  3. A configuração atual é mostrada no canto superior direito do painel de detalhes do serviço, ao lado de Escalonamento.

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 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 ouimplantar uma nova revisão:

Console

  1. No Google Cloud console, acesse o Cloud Run:
    Acessar o Cloud Run
  2. Selecione Serviços no menu de navegação do Cloud Run e clique emImplantar 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.
  3. Ao configurar um novo serviço, preencha a página inicial de configurações de serviço e clique em Contêineres, redes e segurança para expandir essa página.
  4. Clique na guia Contêiner.
    imagem
    • 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.
  5. Clique em Criar ou Implantar.

gcloud

É possível atualizar o valor de min-instancede um determinado serviço usando o seguinte comando:

gcloud run services update SERVICE --min-instances MIN-VALUE

Substitua:

Também é possível definir min-instance durantea implantação usando este comando:

gcloud run deploy --image IMAGE_URL --min-instances MIN-VALUE

Substitua:

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/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
  3. 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, consulteComandos 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

  1. No console do Google Cloud , acesse a página Serviços do Cloud Run:
    Acessar o Cloud Run
  2. Clique no serviço de seu interesse para abrir o painel Detalhes do serviço.
  3. Clique na guia Revisões.
  4. No painel de detalhes à direita, a configuração Instâncias mínimas da revisãoestá listada na guia Contêiner.

gcloud

  1. Use o comando a seguir:
    gcloud run services describe SERVICE
  2. 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 ou máximas no nível de serviço e instâncias mínimas ou máximas no nível da revisão. Observe que, quando as duas configurações entram em conflito, a configuração máxima de instâncias limita e substitui a configuração mínima.

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.
O número máximo de instâncias do serviço está definido como um valor menor que o número mínimo de instâncias de uma revisão. O valor efetivo das instâncias da revisão é limitado ao máximo do serviço.
O número mínimo de instâncias do serviço está definido com um valor maior que o número máximo de instâncias de uma revisão. O valor efetivo das instâncias da revisão é limitado ao máximo da revisão.

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: 10Instâncias mínimas da revisão A: 0Instância mínima da revisão B: 0Divisão de tráfego: 60/40 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: 10Mínimo de instâncias da revisão A: 6Instância mínima da revisão B: 0Divisão de tráfego: 50/50 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: 10Instâncias mínimas da revisão A: 0Máximo de instâncias da revisão A: 3Instância mínima da revisão B: 0Divisão de tráfego: 50/50 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: 3Instâncias mínimas da revisão A: 0Instância mínima da revisão B: 0A revisão B é a primeira na seção de tráfego da configuração de serviço.Divisão de tráfego: 50/50 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 ociosas.

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 roteamento 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. Observe que esse roteamento 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.