É possível configurar sondagens de inicialização HTTP, TCP e gRPC, além de sondagens de atividade HTTP e gRPC para serviços novos e atuais do Cloud Run. A configuração varia de acordo com o tipo de sondagem.
Observe que uma sondagem de inicialização TCP é configurada automaticamente para um novo serviço do Cloud Run. Consulte A sondagem de inicialização TCP padrão para mais detalhes.
Casos de uso
É possível configurar dois tipos de sondagens de verificação de integridade:
As sondagens de atividade determinam se é necessário reiniciar um contêiner.
- A reinicialização de um contêiner nesse caso pode aumentar a disponibilidade do serviço em caso de bugs.
- As sondagens de atividade têm como objetivo reiniciar instâncias individuais que não podem ser recuperadas de nenhuma outra forma. Eles são usados principalmente para falhas irrecuperáveis de instâncias, por exemplo, para capturar um impasse em que um serviço está em execução, mas não consegue progredir. É possível exigir uma sondagem de atividade para cada contêiner usando políticas de organização personalizadas.
As sondagens de inicialização determinam se o contêiner foi iniciado e está pronto para aceitar o tráfego.
- Quando você configura uma sondagem de inicialização, as verificações de atividade são desativadas até que ela verifique se o contêiner foi iniciado para evitar interferência na inicialização do serviço.
- As sondagens de inicialização são especialmente úteis se você usa verificações de atividade em contêineres iniciais lentos, porque impedem que eles sejam encerrados prematuramente antes de os contêineres estarem funcionando.
Lembre-se que, quando um serviço passa por repetidas falhas na sondagem de inicialização ou atividade, o Cloud Run limita as reinicializações de instâncias para evitar loops de falha incontrolados.
A sondagem de inicialização TCP padrão
Uma sondagem de inicialização TCP é configurada automaticamente para um novo serviço do Cloud Run com valores padrão. A sondagem padrão é equivalente ao seguinte:
startupProbe: tcpSocket: port: CONTAINER_PORT timeoutSeconds: 240 periodSeconds: 240 failureThreshold: 1
Substitua CONTAINER_PORT pela porta do contêiner definida para o serviço.
Altere esses valores padrão seguindo as instruções na seção de configuração de sondagem nesta página.
Faturamento e alocação de CPU
- A CPU é alocada para cada sondagem.
- Todas as sondagens são cobradas pelo consumo de uso da memória e CPU, mas não há cobrança baseada em solicitação.
Requisitos e comportamento da sondagem
Tipo de sondagem | Requisitos | Comportamento |
---|---|---|
inicialização do TCP | Nenhum | Por padrão, o Cloud Run faz uma conexão TCP para abrir o soquete TCP na porta especificada. Se o Cloud Run não conseguir estabelecer uma conexão, isso indica uma falha. Se uma sondagem de inicialização não for bem-sucedida dentro do tempo especificado ( failureThreshold * periodSeconds ), que não pode exceder 240 segundos, o contêiner é desligado. Consulte também Padrões de TCP. |
Inicialização HTTP | Crie um endpoint de verificação de integridade HTTP Use HTTP/1 |
Após a configuração da sondagem, o Cloud Run faz uma solicitação HTTP GET para o endpoint de verificação de integridade do serviço (por exemplo, /ready ). Qualquer resposta entre 200 e 400 é um sucesso, tudo o mais indica falha.Se uma sondagem de inicialização não for bem-sucedida dentro do período especificado ( failureThreshold * periodSeconds ), que não pode exceder 240 segundos, o contêiner será encerrado.Se a sondagem de inicialização HTTP for bem-sucedida dentro do tempo especificado e você tiver configurado uma sondagem de atividade HTTP, ela será iniciada. |
Atividade HTTP | Crie um endpoint de verificação de integridade HTTP Use HTTP/1 |
A sondagem de atividade só é iniciada após a conclusão da sondagem de inicialização. Depois da configuração da sondagem e de qualquer sondagem de inicialização ser bem-sucedida, o Cloud Run faz uma solicitação HTTP GET para o endpoint de verificação de integridade do serviço (por exemplo, /health ). Qualquer resposta entre 200 e 400 é um sucesso, e todo o restante indica falha.Se uma sondagem de atividade não for bem-sucedida dentro do período especificado ( failureThreshold * periodSeconds ), o contêiner será encerrado usando um sinal SIGKILL . Todas as solicitações restantes que ainda estavam sendo exibidas pelo contêiner são encerradas com o código de status HTTP 503 . Depois que o contêiner é encerrado, o escalonamento automático do Cloud Run inicia uma nova instância de contêiner. |
Inicialização do gRPC | Implemente o protocolo de verificação de integridade do gRPC no serviço do Cloud Run. | Se uma sondagem de inicialização não for bem-sucedida dentro do tempo especificado
(failureThreshold * periodSeconds ), que não pode exceder
240 segundos, o contêiner será encerrado. |
Ativação do gRPC | Implemente o protocolo de verificação de integridade do gRPC no serviço do Cloud Run. | Se você configurar uma sondagem de inicialização gRPC, ela será iniciada somente após a conclusão da sondagem. Depois que a sondagem de atividade for configurada e todas as sondagens de inicialização forem bem-sucedidas, o Cloud Run fará uma solicitação de verificação de integridade para serviço. Se uma sondagem de atividade não for bem-sucedida dentro do período especificado ( failureThreshold * periodSeconds ), o contêiner será encerrado usando um sinal SIGKILL . Depois que o contêiner é encerrado, o escalonamento automático do Cloud Run inicia uma nova instância de contêiner. |
Configurar sondagens
Qualquer mudança na configuração leva à criação de uma nova revisão. As próximas revisões também recebem essa configuração de modo automático, a menos que você faça atualizações explícitas para alterar esse comportamento.
É possível configurar sondagens HTTP, TCP e gRPC usando o console do Google Cloud, YAML ou Terraform:
Console
Importante: se você estiver configurando o serviço do Cloud Run para sondagens HTTP, também precisará adicionar um endpoint de verificação de integridade HTTP ao código de serviço para responder à sondagem. Se você estiver configurando uma sondagem gRPC, também precisará implementar o protocolo de verificação de integridade do gRPC (em inglês) no serviço do Cloud Run.
No console do Google Cloud, acesse a página do Cloud Run.
Para um novo serviço, expanda Contêiner(es), volumes, rede, segurança para exibir as opções da verificação de integridade. Para um serviço atual, clique no serviço que você quer configurar e em Editar e implantar para exibir as opções de verificação de integridade.
Na função Contêiner(es) acesse Verificações de integridade e clique em Adicionar verificação de integridade para abrir Adicionar verificação de integridade de configuração do Terraform.
No menu Selecionar tipo de verificação de integridade, escolha o tipo de verificação que você quer adicionar, por exemplo, inicialização ou atividade.
No menu Selecionar tipo de sondagem, escolha o tipo de sondagem que você quer usar, por exemplo, HTTP ou gRPC. O formulário de configuração da sondagem será exibido.
A configuração da sondagem varia de acordo com o tipo. Defina as configurações da sondagem:
- Se você estiver usando sondagens HTTP:
- Verifique se o serviço usa HTTP/1 (o padrão do Cloud Run), e não HTTP/2.
- Use o campo Caminho para especificar o caminho relativo ao endpoint, por exemplo,
/
. - Marque a caixa de seleção Cabeçalhos HTTP para especificar cabeçalhos personalizados opcionais. Em seguida, especifique o nome do cabeçalho no campo Nome e o valor do cabeçalho no campo Valor. Clique em Adicionar cabeçalho HTTP para especificar mais cabeçalhos.
- Em Porta, especifique a porta do contêiner usada para seu serviço.
- Em Atraso inicial, especifique o número de segundos para aguardar após a inicialização do contêiner antes de realizar a primeira sondagem. Especifique um valor de 0 a 240 segundos. O valor padrão é de 0 segundos.
- Em Período, especifique o período (em segundos) em que a sondagem será realizada. Por exemplo,
2
para executar a sondagem a cada dois segundos. Especifique um valor de 1 segundo a 240 segundos. O valor padrão é de 10 segundos. - Em Limite de falha, especifique o número de tentativas para realizar a sondagem antes de encerrar o contêiner. O valor padrão é 3.
- Em Tempo limite, especifique o número de segundos para aguardar até que a sondagem atinja o tempo limite. Este valor não pode exceder o valor especificado para
periodSeconds
. Especifique um valor entre 1 e 240. O padrão é 1.
- Se você estiver usando sondagens HTTP:
Clique em Adicionar para incluir o novo limite.
YAML
Importante: se você estiver configurando o serviço do Cloud Run para sondagens HTTP, também precisará adicionar um endpoint no código de serviço para responder à sondagem. Se você estiver configurando uma sondagem gRPC, também precisará implementar o protocolo de verificação de integridade do gRPC (em inglês) no serviço do Cloud Run.
inicialização do TCP
-
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
Configure o atributo
startupProbe
como mostrado:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL startupProbe: tcpSocket: port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Substituir
- SERVICE pelo nome do serviço do Cloud Run;
- IMAGE_URL por 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 tem o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- (OPCIONAL) CONTAINER_PORT precisa ser definido como a porta do contêiner usada para o serviço.
- DELAY pelo número de segundos de espera após o início do contêiner antes de executar a primeira sondagem. Especifique um valor de 0 a 240 segundos. O valor padrão é de 0 segundos.
- (OPCIONAL) TIMEOUT pelo número de segundos de espera até que a sondagem
expire. Este valor não pode exceder o valor especificado para
periodSeconds
. Especifique um valor entre 1 e 240. O padrão é 1. - THRESHOLD pelo número de vezes que a sondagem é repetida antes de encerrar o contêiner. O valor padrão é 3.
- PERIOD com período (em segundos) em que a sondagem deve ser feita.
Por exemplo,
2
para executar a sondagem a cada dois segundos. Especifique um valor de 1 segundo a 240 segundos. O valor padrão é de 10 segundos.
-
Crie ou atualize o serviço usando o seguinte comando:
gcloud run services replace service.yaml
Inicialização HTTP
-
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
Verifique se o serviço usa HTTP/1 (o padrão do Cloud Run), e não HTTP/2.
Configure o atributo
startupProbe
como mostrado:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL startupProbe: httpGet: path: PATH port: CONTAINER_PORT httpHeaders: - name: HEADER_NAME value: HEADER_VALUE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
substituir
- SERVICE pelo nome do serviço do Cloud Run;
- IMAGE_URL por 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 tem o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- PATH pelo caminho relativo para o endpoint HTTP, por exemplo,
/ready
. - (OPCIONAL) CONTAINER_PORT precisa ser definido como a porta do contêiner usada para o serviço.
- (OPCIONAL)
httpHeaders
pode ser usado para fornecer vários cabeçalhos personalizados ou repetidos usando os campos HEADER_NAME e HEADER_VALUE, conforme mostrado. - (OPCIONAL) DELAY pelo número de segundos de espera após o início do contêiner antes de executar a primeira sondagem. Especifique um valor de 0 a 240 segundos. O valor padrão é de 0 segundos.
- (OPCIONAL) TIMEOUT pelo número de segundos de espera até que a sondagem
expire. Este valor não pode exceder o valor especificado para
periodSeconds
. Especifique um valor entre 1 e 240. O padrão é 1. - (OPCIONAL) THRESHOLD pelo número de vezes que a sondagem é repetida antes de encerrar o contêiner. O valor padrão é 3.
- (OPCIONAL) PERIOD com o período (em segundos) em que a sondagem deve ser feita.
Por exemplo,
2
para executar a sondagem a cada dois segundos. Especifique um valor de 1 segundo a 240 segundos. O valor padrão é de 10 segundos.
-
Crie ou atualize o serviço usando o seguinte comando:
gcloud run services replace service.yaml
Atividade HTTP
-
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
Verifique se o serviço usa HTTP/1 (o padrão do Cloud Run), e não HTTP/2.
Configure o atributo
livenessProbe
como mostrado:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL livenessProbe: httpGet: path: PATH port: CONTAINER_PORT httpHeaders: - name: HEADER_NAME value: HEADER_VALUE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Substituir
- SERVICE pelo nome do serviço do Cloud Run;
- IMAGE_URL por 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 tem o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- PATH pelo caminho relativo para o endpoint HTTP, por exemplo,
/ready
. - (OPCIONAL) CONTAINER_PORT precisa ser definido como a porta do contêiner usada para o serviço.
- (OPCIONAL)
httpHeaders
pode ser usado para fornecer vários cabeçalhos personalizados ou repetidos usando os campos HEADER_NAME e HEADER_VALUE, conforme mostrado. - (OPCIONAL) DELAY pelo número de segundos de espera após o início do contêiner antes de executar a primeira sondagem. Especifique um valor de 0 a 240 segundos. O valor padrão é de 0 segundos.
- (OPCIONAL) TIMEOUT pelo número de segundos de espera até que a sondagem
expire. Este valor não pode exceder o valor especificado para
periodSeconds
. Especifique um valor entre 1 e 3.600. O padrão é 1. - (OPCIONAL) THRESHOLD pelo número de vezes que a sondagem é repetida antes de encerrar o contêiner. O valor padrão é 3.
- (OPCIONAL) PERIOD com o período (em segundos) em que a sondagem deve ser feita.
Por exemplo,
2
para executar a sondagem a cada dois segundos. Especifique um valor de 1 segundo a 3600 segundos. O valor padrão é de 10 segundos.
-
Crie ou atualize o serviço usando o seguinte comando:
gcloud run services replace service.yaml
Inicialização do gRPC
-
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
Configure o atributo
startupProbe
como mostrado:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL startupProbe: grpc: service: GRPC_SERVICE port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Substituir
- SERVICE pelo nome do serviço do Cloud Run;
- IMAGE_URL por 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 tem o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- (OPCIONAL) GRPC_SERVICE. Se definido, ele será usado no
campo de serviço do
grpc.health.v1.HealthCheckRequest
quando o rpcgrpc.health.v1.Health.Check
for chamado. - (OPCIONAL) CONTAINER_PORT precisa ser definido como a porta do contêiner usada para o serviço.
- (OPCIONAL) DELAY pelo número de segundos de espera após o início do contêiner antes de executar a primeira sondagem. Especifique um valor de 0 a 240 segundos. O valor padrão é de 0 segundos.
- (OPCIONAL) TEMPO LIMITE pelo número de segundos de espera até que a sondagem expire. Esse valor não pode exceder o valor especificado para periodSeconds. Especifique um valor entre 1 e 240. O padrão é 1.
- (OPCIONAL) THRESHOLD pelo número de vezes que a sondagem é repetida antes de encerrar o contêiner. O valor padrão é 3.
- (OPCIONAL) PERIOD com o período (em segundos) em que a sondagem deve ser feita.
Por exemplo,
2
para executar a sondagem a cada dois segundos. Especifique um valor de 1 segundo a 240 segundos. O valor padrão é de 10 segundos.
-
Crie ou atualize o serviço usando o seguinte comando:
gcloud run services replace service.yaml
Ativação do gRPC
-
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
Configure o atributo
livenessProbe
como mostrado:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL livenessProbe: grpc: port: CONTAINER_PORT service: GRPC_SERVICE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Substituir
- SERVICE pelo nome do serviço do Cloud Run;
- IMAGE_URL por 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 tem o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- (OPCIONAL) CONTAINER_PORT precisa ser definido como a porta do contêiner usada para o serviço.
- (OPCIONAL) GRPC_SERVICE. Se definido, ele será usado no
campo de serviço do
grpc.health.v1.HealthCheckRequest
quando o rpcgrpc.health.v1.Health.Check
for chamado. - (OPCIONAL) DELAY pelo número de segundos de espera após o início do contêiner antes de executar a primeira sondagem. Especifique um valor de 0 a 240 segundos. O valor padrão é de 0 segundos.
- (OPCIONAL) TIMEOUT pelo número de segundos de espera até que a sondagem
expire. Este valor não pode exceder o valor especificado para
periodSeconds
. Especifique um valor entre 1 e 3.600. O padrão é 1. - (OPCIONAL) THRESHOLD pelo número de vezes que a sondagem é repetida antes de encerrar o contêiner. O valor padrão é 3.
- (OPCIONAL) PERIOD com o período (em segundos) em que a sondagem deve ser feita. Por exemplo,
2
para executar a sondagem a cada dois segundos. Especifique um valor de 1 segundo a 3600 segundos. O valor padrão é de 10 segundos.
-
Crie ou atualize o serviço usando o seguinte comando:
gcloud run services replace service.yaml
Terraform
Importante: se você estiver configurando o serviço do Cloud Run para sondagens HTTP, também precisará adicionar um endpoint no código de serviço para responder à sondagem. Se você estiver configurando uma sondagem gRPC, também precisará implementar o protocolo de verificação de integridade do gRPC (em inglês) no serviço do Cloud Run.
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
inicialização do TCP
Configure o serviço do Cloud Run com o atributo startup_probe
, conforme mostrado:
Inicialização HTTP
Verifique se o serviço usa HTTP/1 (o padrão do Cloud Run), e não HTTP/2.
Configure o serviço do Cloud Run com o atributo startup_probe
, conforme mostrado:
Atividade HTTP
Verifique se o serviço usa HTTP/1 (o padrão do Cloud Run), e não HTTP/2.
Configure o serviço do Cloud Run com o atributo liveness_probe
, conforme mostrado:
Inicialização do gRPC
Configure o serviço do Cloud Run com o atributo startup_probe
, conforme mostrado:
Ativação do gRPC
Configure o serviço do Cloud Run com o atributo liveness_probe
, conforme mostrado:
Criar endpoints de verificação de integridade HTTP
Se você configurar o serviço do Cloud Run para uma sondagem de atividade ou inicialização HTTP,
vai precisar adicionar um endpoint ao código de serviço para responder à
sondagem. O endpoint pode ter o nome que você quiser, por exemplo,
/startup
ou /ready
, mas precisa corresponder aos valores especificados para
path
na configuração da sondagem. Por exemplo, se você especificar /ready
para uma
sondagem de inicialização HTTP, especifique path
na configuração da sondagem, como mostrado:
startupProbe: httpGet: path: /ready
Os endpoints de verificação de integridade HTTP são acessíveis externamente e seguem os mesmos princípios de qualquer outro endpoint de serviço HTTP exposto externamente.