Configurar verificações de integridade do contêiner para instâncias

As verificações de integridade do Cloud Run garantem que as instâncias de contêiner estejam sendo executadas corretamente e possam disponibilizar tráfego. Com as verificações de integridade do Cloud Run, é possível personalizar quando o contêiner está pronto para receber solicitações e quando ele deve ser considerado não íntegro para exigir uma reinicialização.

Casos de uso

É possível configurar os seguintes tipos de sondagens de verificação de integridade:

  • As sondagens de inicialização determinam se o contêiner foi iniciado e está pronto para aceitar o tráfego.
  • 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 da instância 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, como capturar um impasse em que uma instância 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.
    • Quando uma instância passa por falhas repetidas de sondagem, o Cloud Run limita as reinicializações de instâncias para evitar loops de falha incontrolados.
  • Sondagens de prontidão (prévia)

    As sondagens de prontidão determinam quando uma instância no Cloud Run deve atender o tráfego. As verificações de prontidão começam depois que a sondagem de inicialização do contêiner é concluída. Se uma instância falhar na sondagem de prontidão além do valor de limite de falha configurado, o Cloud Run vai parar de enviar novo tráfego para ela. O Cloud Run não encerra a instância e envia o tráfego de volta para ela quando começa a passar na sondagem de prontidão novamente.

Seu contêiner precisa implementar as sondagens de inicialização, atividade e prontidão de forma consistente. Quando a verificação de inicialização é aprovada, o Cloud Run considera o contêiner pronto para atender ao tráfego.

Recomendamos que você encapsule sua lógica para que a sondagem de inicialização considere a prontidão. Como o Cloud Run pode rotear o tráfego para uma nova instância antes da conclusão da primeira sondagem de prontidão, verifique se a aprovação da sondagem de inicialização também garante a prontidão para veicular o tráfego com segurança imediatamente. Quando a sondagem de inicialização é bem-sucedida, tratamos o contêiner como pronto para receber tráfego.

Configurar sondagens de inicialização

É possível configurar sondagens HTTP, TCP e gRPC usando a Google Cloud CLI ou YAML:

gcloud

inicialização do TCP

Execute este comando:

  gcloud beta run instances create INSTANCE \
      --image=IMAGE_URL \
      --startup-probe tcpSocket.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Substitua:

  • INSTANCE: o nome da sua instância do Cloud Run.
  • IMAGE_URL: uma referência à imagem do contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisa ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • CONTAINER_PORT (opcional): a porta do contêiner usada para sua instância.
  • DELAY: 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.
  • TIMEOUT (opcional): o 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: o número de vezes que a sondagem é repetida antes de encerrar o contêiner. O valor padrão é 3.
  • PERIOD: 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.

Inicialização HTTP

Adicione um endpoint HTTP/1 (o padrão do Cloud Run, não HTTP/2) no código da instância para responder à sondagem. O nome do endpoint (por exemplo, /startup, /health ou /are_you_ready) precisa corresponder ao path na configuração da sondagem. Os endpoints de verificação de integridade HTTP são acessíveis externamente e seguem os mesmos princípios de qualquer outro endpoint de instância HTTP exposto externamente.

Execute este comando:

  gcloud beta run instances create INSTANCE \
      --image=IMAGE_URL \
      --startup-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Substitua:

  • INSTANCE: o nome da sua instância do Cloud Run.
  • IMAGE_URL: uma referência à imagem do contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisa ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • PATH: um caminho relativo para o endpoint HTTP, por exemplo, /health.
  • CONTAINER_PORT (opcional): defina como a porta do contêiner usada para sua instância.
  • DELAY (opcional): o 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.
  • THRESHOLD (opcional): o número de vezes que a sondagem é repetida antes de encerrar o contêiner. O valor padrão é 3.
  • TIMEOUT (opcional): o 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.
  • PERIOD (opcional): 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.

Inicialização do gRPC

Verifique se a imagem do contêiner implementa o protocolo de verificação de integridade do gRPC.

Execute este comando:

  gcloud beta run instances create INSTANCE \
      --image=IMAGE_URL \
      --startup-probe grpc.port=CONTAINER_PORT,grpc.instance=GRPC_INSTANCE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Substitua:

  • INSTANCE: o nome da sua instância do Cloud Run.
  • IMAGE_URL: uma referência à imagem do contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisa ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • GRPC_INSTANCE (opcional): se definido, será usado no campo "instance" do grpc.health.v1.HealthCheckRequest quando a RPC grpc.health.v1.Health.Check for chamada.
  • CONTAINER_PORT (opcional): a porta do contêiner usada para sua instância.
  • DELAY (opcional): o 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.
  • THRESHOLD (opcional): o número de vezes que a sondagem é repetida antes de encerrar o contêiner. O valor padrão é 3.
  • TIMEOUT (opcional): o 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.
  • PERIOD (opcional): 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.

YAML

inicialização do TCP

  1. Se você estiver criando uma nova instância, pule esta etapa. Se você estiver atualizando uma instância, baixe a configuração YAML:

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Configure o atributo startupProbe como mostrado:

    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
     name: INSTANCE
     annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - image: IMAGE_URL
        startupProbe:
          tcpSocket:
            port: CONTAINER_PORT
          initialDelaySeconds: DELAY
          timeoutSeconds: TIMEOUT
          failureThreshold: THRESHOLD
          periodSeconds: PERIOD

    Substitua:

    • INSTANCE: o nome da sua instância do Cloud Run.
    • IMAGE_URL: uma referência à imagem do contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisa ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • CONTAINER_PORT (opcional): a porta do contêiner usada para sua instância.
    • DELAY: 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.
    • TIMEOUT (opcional): o 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: o número de vezes que a sondagem é repetida antes de encerrar o contêiner. O valor padrão é 3.
    • PERIOD: 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.
  3. Crie ou atualize a instância usando o seguinte comando:
    gcloud beta run instances replace instance.yaml

Inicialização HTTP

Adicione um endpoint HTTP/1 (o padrão do Cloud Run, não HTTP/2) no código da instância para responder à sondagem. O nome do endpoint (por exemplo, /startup, /health ou /are_you_ready) precisa corresponder ao path na configuração da sondagem. Os endpoints de verificação de integridade HTTP são acessíveis externamente e seguem os mesmos princípios de qualquer outro endpoint de instância HTTP exposto externamente.

  1. Se você estiver criando uma nova instância, pule esta etapa. Se você estiver atualizando uma instância, baixe a configuração YAML:

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Configure o atributo startupProbe como mostrado:

    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    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

    Substitua:

    • INSTANCE: o nome da sua instância do Cloud Run.
    • IMAGE_URL: uma referência à imagem do contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisa ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PATH: um caminho relativo para o endpoint HTTP, por exemplo, /health.
    • CONTAINER_PORT (opcional): defina como a porta do contêiner usada para sua instância.
    • DELAY (opcional): o 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.
    • THRESHOLD (opcional): o número de vezes que a sondagem é repetida antes de encerrar o contêiner. O valor padrão é 3.
    • Opcional: httpHeaders pode ser usado para fornecer vários cabeçalhos personalizados ou repetidos usando os campos HEADER_NAME e HEADER_VALUE, conforme mostrado.
    • TIMEOUT (opcional): o 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.
    • PERIOD (opcional): 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.
    1. Se você estiver criando uma nova instância, pule esta etapa. Se você estiver atualizando uma instância, baixe a configuração YAML:

      gcloud beta run instances describe INSTANCE --format export > instance.yaml

Inicialização do gRPC

Verifique se a imagem do contêiner implementa o protocolo de verificação de integridade do gRPC.

  1. Se você estiver criando uma nova instância, pule esta etapa. Se você estiver atualizando uma instância, baixe a configuração YAML:

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Configure o atributo startupProbe como mostrado:

    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - image: IMAGE_URL
        startupProbe:
          grpc:
            instance: GRPC_INSTANCE
            port: CONTAINER_PORT
          initialDelaySeconds: DELAY
          timeoutSeconds: TIMEOUT
          failureThreshold: THRESHOLD
          periodSeconds: PERIOD

    Substitua:

    • INSTANCE: o nome da sua instância do Cloud Run.
    • IMAGE_URL: uma referência à imagem do contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisa ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • GRPC_INSTANCE (opcional): se definido, será usado no campo "instance" do grpc.health.v1.HealthCheckRequest quando a RPC grpc.health.v1.Health.Check for chamada.
    • CONTAINER_PORT (opcional): a porta do contêiner usada para sua instância.
    • DELAY (opcional): o 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.
    • THRESHOLD (opcional): o número de vezes que a sondagem é repetida antes de encerrar o contêiner. O valor padrão é 3.
    • TIMEOUT (opcional): o 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.
    • PERIOD (opcional): 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.
  3. Se você estiver criando uma nova instância, pule esta etapa. Se você estiver atualizando uma instância, baixe a configuração YAML:

    gcloud beta run instances describe INSTANCE --format export > instance.yaml

A sondagem de inicialização TCP padrão

Se você não configurar explicitamente uma sondagem de inicialização TCP para uma nova instância do Cloud Run, o Cloud Run vai configurar automaticamente uma sondagem de inicialização TCP com os seguintes valores padrão:

startupProbe:
          timeoutSeconds: 240
          periodSeconds: 240
          failureThreshold: 1

Altere esses valores padrão seguindo as instruções na seção de configuração de sondagem nesta página.

Requisitos e comportamento da sondagem de inicialização

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 GET HTTP para o endpoint de verificação de integridade (por exemplo, /health). Qualquer resposta 2XX ou 3XX indica sucesso, e todo o restante indica 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 será desligado.
Inicialização do gRPC Implemente o protocolo de verificação de integridade do gRPC na instância 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.

configurar sondagens de atividade

É possível configurar sondagens HTTP e gRPC usando o SDK Google Cloud ou YAML:

gcloud

Atividade HTTP

Adicione um endpoint HTTP/1 (o padrão do Cloud Run, não HTTP/2) no código da instância para responder à sondagem. O nome do endpoint (por exemplo, /startup, /health ou /are_you_ready) precisa corresponder ao path na configuração da sondagem. Os endpoints de verificação de integridade HTTP são acessíveis externamente e seguem os mesmos princípios de qualquer outro endpoint de instância HTTP exposto externamente.

Execute este comando:

  gcloud beta run instances deploy INSTANCE \
      --image=IMAGE_URL \
      --liveness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Substitua:

  • INSTANCE: o nome da sua instância do Cloud Run.
  • IMAGE_URL: uma referência à imagem do contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisa ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • PATH: um caminho relativo para o endpoint HTTP, por exemplo, /health.
  • CONTAINER_PORT (opcional): defina como a porta do contêiner usada para sua instância.
  • DELAY (opcional): o 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.
  • THRESHOLD (opcional): o número de vezes que a sondagem é repetida antes de encerrar o contêiner. O valor padrão é 3.
  • Opcional. TIMEOUT: o 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 3600.O padrão é 1.
  • Opcional. PERIOD: 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.

Ativação do gRPC

Verifique se a imagem do contêiner implementa o protocolo de verificação de integridade do gRPC.

Execute este comando:

  gcloud beta run instances deploy INSTANCE \
      --image=IMAGE_URL \
      --liveness-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Substitua:

  • INSTANCE: o nome da sua instância do Cloud Run.
  • IMAGE_URL: uma referência à imagem do contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisa ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • GRPC_INSTANCE (opcional): se definido, será usado no campo "instance" do grpc.health.v1.HealthCheckRequest quando a RPC grpc.health.v1.Health.Check for chamada.
  • CONTAINER_PORT (opcional): a porta do contêiner usada para sua instância.
  • DELAY (opcional): o 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.
  • THRESHOLD (opcional): o número de vezes que a sondagem é repetida antes de encerrar o contêiner. O valor padrão é 3.
  • Opcional. TIMEOUT: o 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 3600.O padrão é 1.
  • Opcional. PERIOD: 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.

YAML

Atividade HTTP

Adicione um endpoint HTTP/1 (o padrão do Cloud Run, não HTTP/2) no código da instância para responder à sondagem. O nome do endpoint (por exemplo, /startup, /health ou /are_you_ready) precisa corresponder ao path na configuração da sondagem. Os endpoints de verificação de integridade HTTP são acessíveis externamente e seguem os mesmos princípios de qualquer outro endpoint de instância HTTP exposto externamente.

  1. Se você estiver criando uma nova instância, pule esta etapa. Se você estiver atualizando uma instância, baixe a configuração YAML correspondente:
    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Configure o atributo livenessProbe como mostrado:

    apiVersion: serving.knative.dev/v1
    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    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

    Substitua:

    • INSTANCE: o nome da sua instância do Cloud Run.
    • IMAGE_URL: uma referência à imagem do contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisa ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PATH: um caminho relativo para o endpoint HTTP, por exemplo, /health.
    • CONTAINER_PORT (opcional): defina como a porta do contêiner usada para sua instância.
    • DELAY (opcional): o 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.
    • THRESHOLD (opcional): o número de vezes que a sondagem é repetida antes de encerrar o contêiner. O valor padrão é 3.
    • 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. TIMEOUT: o 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 3600.O padrão é 1.
    • Opcional. PERIOD: 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.
  3. Crie ou atualize a instância usando o seguinte comando:
    gcloud beta run instances replace instance.yaml

Ativação do gRPC

Verifique se a imagem do contêiner implementa o protocolo de verificação de integridade do gRPC.

  1. Se você estiver criando uma nova instância, pule esta etapa. Se você estiver atualizando uma instância, baixe a configuração YAML correspondente:
    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Configure o atributo livenessProbe como mostrado:

    apiVersion: serving.knative.dev/v1
    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - image: IMAGE_URL
        livenessProbe:
          grpc:
            port: CONTAINER_PORT
            service: GRPC_SERVICE
            initialDelaySeconds: DELAY
            timeoutSeconds: TIMEOUT
            failureThreshold: THRESHOLD
            periodSeconds: PERIOD

    Substitua:

    • INSTANCE: o nome da sua instância do Cloud Run.
    • IMAGE_URL: uma referência à imagem do contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisa ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • GRPC_INSTANCE (opcional): se definido, será usado no campo "instance" do grpc.health.v1.HealthCheckRequest quando a RPC grpc.health.v1.Health.Check for chamada.
    • CONTAINER_PORT (opcional): a porta do contêiner usada para sua instância.
    • DELAY (opcional): o 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.
    • THRESHOLD (opcional): o número de vezes que a sondagem é repetida antes de encerrar o contêiner. O valor padrão é 3.
    • Opcional. TIMEOUT: o 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 3600.O padrão é 1.
    • Opcional. PERIOD: 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.

  3. Crie ou atualize a instância usando o seguinte comando:
    gcloud beta run instances replace instance.yaml

Requisitos e comportamento da sondagem de atividade

Tipo de sondagem Requisitos Comportamento
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. Após a configuração da sondagem e a conclusão de qualquer sondagem de inicialização, o Cloud Run faz uma solicitação GET HTTP para o endpoint de verificação de integridade (por exemplo, /health). Qualquer resposta 2XX ou 3XX indica sucesso, e as demais indicam falha.

Se uma sondagem de atividade não for concluída dentro do tempo especificado (failureThreshold * periodSeconds), o contêiner será desligado 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.
Ativação do gRPC Implemente o protocolo de verificação de integridade do gRPC na instância do Cloud Run. Se você configurar uma sondagem de inicialização do gRPC, a sondagem de atividade só vai começar depois que a sondagem de inicialização for concluída.

Depois que a sondagem de atividade for configurada e qualquer sondagem de inicialização for concluída, o Cloud Run fará uma solicitação de verificação de integridade para a instância.

Se uma sondagem de atividade não for concluída dentro do tempo especificado (failureThreshold * periodSeconds), o contêiner será desligado 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 de prontidão

As seguintes limitações se aplicam às sondagens de prontidão:

  • Se você ativar a afinidade da sessão, o Cloud Run continuará enviando solicitações para a mesma instância, mesmo que a verificação de prontidão falhe.

É possível configurar uma sondagem de prontidão usando a Google Cloud CLI ou YAML:

gcloud

Prontidão HTTP

Adicione um endpoint HTTP/1 (o padrão do Cloud Run, não HTTP/2) no código da instância para responder à sondagem. O nome do endpoint (por exemplo, /startup, /health ou /are_you_ready) precisa corresponder ao path na configuração da sondagem. Os endpoints de verificação de integridade HTTP são acessíveis externamente e seguem os mesmos princípios de qualquer outro endpoint de instância HTTP exposto externamente.

Execute este comando:

gcloud beta run instances deploy INSTANCE \
    --image=IMAGE_URL \
    --readiness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Substitua:

  • INSTANCE: o nome da sua instância do Cloud Run.
  • IMAGE_URL: uma referência à imagem do contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisa ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • PATH (opcional): o caminho relativo para o endpoint HTTP, por exemplo, /are_you_ready. O caminho padrão é /.
  • CONTAINER_PORT (opcional): a porta do contêiner usada para sua instância. A porta padrão é a principal porta de entrada.
  • SUCCESS_THRESHOLD (opcional): o número mínimo de sucessos consecutivos para que a sondagem seja considerada bem-sucedida após uma falha. O padrão é 2.
  • FAILURE_THRESHOLD (opcional): o número de vezes que a sondagem é repetida antes de informar uma falha, o que faz com que a instância pare de receber tráfego. o padrão é 3;
  • TIMEOUT (opcional): o número de segundos a serem aguardados até que a sondagem atinja o tempo limite. Este valor não pode exceder o valor especificado para periodSeconds. Especifique um valor de 1 a 300. O padrão é 1.
  • PERIOD (opcional): 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 a 300. O valor padrão é de 10 segundos.

Prontidão do gRPC

Verifique se a imagem do contêiner implementa o protocolo de verificação de integridade do gRPC.

Execute este comando:

gcloud beta run instances deploy INSTANCE \
    --image=IMAGE_URL \
    --readiness-probe grpc.port=CONTAINER_PORT,grpc.instance=GRPC_INSTANCE,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Substitua:

  • INSTANCE: o nome da sua instância do Cloud Run.
  • IMAGE_URL: uma referência à imagem do contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisa ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • CONTAINER_PORT (opcional): a porta do contêiner usada para sua instância. A porta padrão é a principal de entrada.
  • GRPC_INSTANCE (opcional): se definido, será usado no campo "instance" do grpc.health.v1.HealthCheckRequest quando a RPC grpc.health.v1.Health.Check for chamada.
  • SUCCESS_THRESHOLD (opcional): o número mínimo de sucessos consecutivos para que a sondagem seja considerada bem-sucedida após uma falha. O padrão é 2.
  • FAILURE_THRESHOLD (opcional): o número de vezes que a sondagem é repetida antes de informar uma falha, o que faz com que a instância pare de receber tráfego. o padrão é 3;
  • TIMEOUT (opcional): o número de segundos a serem aguardados até que a sondagem atinja o tempo limite. Este valor não pode exceder o valor especificado para periodSeconds. Especifique um valor de 1 a 300. O padrão é 1.
  • PERIOD (opcional): 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 a 300. O valor padrão é de 10 segundos.

YAML

Prontidão HTTP

Adicione um endpoint HTTP/1 (o padrão do Cloud Run, não HTTP/2) no código da instância para responder à sondagem. O nome do endpoint (por exemplo, /startup, /health ou /are_you_ready) precisa corresponder ao path na configuração da sondagem. Os endpoints de verificação de integridade HTTP são acessíveis externamente e seguem os mesmos princípios de qualquer outro endpoint de instância HTTP exposto externamente.

  1. Se você estiver criando uma nova instância, pule esta etapa. Se você estiver atualizando uma instância, baixe a configuração YAML correspondente:
    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Configure o atributo readinessProbe como mostrado:

    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            readinessProbe:
              httpGet:
                path: PATH
                port: CONTAINER_PORT
              successThreshold: SUCCESS_THRESHOLD
              failureThreshold: FAILURE_THRESHOLD
              timeoutSeconds: TIMEOUT
              periodSeconds: PERIOD

    Substitua:

    • INSTANCE: o nome da sua instância do Cloud Run.
    • IMAGE_URL: uma referência à imagem do contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisa ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PATH (opcional): o caminho relativo para o endpoint HTTP, por exemplo, /are_you_ready. O caminho padrão é /.
    • CONTAINER_PORT (opcional): a porta do contêiner usada para sua instância. A porta padrão é a principal porta de entrada.
    • SUCCESS_THRESHOLD (opcional): o número mínimo de sucessos consecutivos para que a sondagem seja considerada bem-sucedida após uma falha. O padrão é 2.
    • FAILURE_THRESHOLD (opcional): o número de vezes que a sondagem é repetida antes de informar uma falha, o que faz com que a instância pare de receber tráfego. o padrão é 3;
    • TIMEOUT (opcional): o número de segundos a serem aguardados até que a sondagem atinja o tempo limite. Este valor não pode exceder o valor especificado para periodSeconds. Especifique um valor de 1 a 300. O padrão é 1.
    • PERIOD (opcional): 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 a 300. O valor padrão é de 10 segundos.

  3. Crie ou atualize a instância usando o seguinte comando:
    gcloud beta run instances replace instance.yaml

Prontidão do gRPC

Verifique se a imagem do contêiner implementa o protocolo de verificação de integridade do gRPC.

  1. Se você estiver criando uma nova instância, pule esta etapa. Se você estiver atualizando uma instância, baixe a configuração YAML correspondente:
    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Configure o atributo readinessProbe como mostrado:

    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            readinessProbe:
              grpc:
                port: CONTAINER_PORT
                instance: GRPC_INSTANCE
              successThreshold: SUCCESS_THRESHOLD
              failureThreshold: FAILURE_THRESHOLD
              timeoutSeconds: TIMEOUT
              periodSeconds: PERIOD

    Substitua:

    • INSTANCE: o nome da sua instância do Cloud Run.
    • IMAGE_URL: uma referência à imagem do contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisa ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • CONTAINER_PORT (opcional): a porta do contêiner usada para sua instância. A porta padrão é a principal de entrada.
    • GRPC_INSTANCE (opcional): se definido, será usado no campo "instance" do grpc.health.v1.HealthCheckRequest quando a RPC grpc.health.v1.Health.Check for chamada.
    • SUCCESS_THRESHOLD (opcional): o número mínimo de sucessos consecutivos para que a sondagem seja considerada bem-sucedida após uma falha. O padrão é 2.
    • FAILURE_THRESHOLD (opcional): o número de vezes que a sondagem é repetida antes de informar uma falha, o que faz com que a instância pare de receber tráfego. o padrão é 3;
    • TIMEOUT (opcional): o número de segundos a serem aguardados até que a sondagem atinja o tempo limite. Este valor não pode exceder o valor especificado para periodSeconds. Especifique um valor de 1 a 300. O padrão é 1.
    • PERIOD (opcional): 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 a 300. O valor padrão é de 10 segundos.

  3. Crie ou atualize a instância usando o seguinte comando:
    gcloud beta run instances replace instance.yaml

Alocação de CPU

  • A CPU é sempre alocada quando as sondagens são executadas.
  • 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.

A seguir