인스턴스의 컨테이너 상태 점검 구성

Cloud Run 상태 점검은 컨테이너 인스턴스가 올바르게 실행되고 트래픽을 처리할 수 있는지 확인합니다. Cloud Run 상태 점검을 사용하면 컨테이너가 요청을 수신할 준비가 된 시점과 컨테이너가 비정상으로 간주되어 다시 시작해야 하는 시점을 맞춤설정할 수 있습니다.

사용 사례

다음 유형의 상태 점검 프로브를 구성할 수 있습니다.

  • 시작 프로브는 컨테이너가 시작되었고 트래픽을 수락할 준비가 되었는지 확인합니다.
  • 활성 여부 프로브는 컨테이너를 다시 시작할지 여부를 결정합니다.
    • 이 경우 컨테이너를 다시 시작하면 버그 발생 시 인스턴스 가용성이 증가할 수 있습니다.
    • 활성 프로브는 다른 방법으로는 복구할 수 없는 개별 인스턴스를 다시 시작하기 위한 것입니다. 예를 들어 인스턴스가 실행 중이지만 진행할 수 없는 교착 상태를 포착하는 경우와 같이 복구할 수 없는 인스턴스 장애에 주로 사용해야 합니다. 커스텀 조직 정책을 사용하여 모든 컨테이너에 활성 프로브를 필수화할 수 있습니다.
    • 인스턴스에서 프로브 실패가 반복되면 Cloud Run은 제어되지 않는 비정상 종료 루프가 방지되도록 인스턴스 다시 시작을 제한합니다.
  • 준비 상태 프로브 (미리보기)

    준비 상태 프로브는 Cloud Run 인스턴스의 인스턴스가 트래픽을 처리해야 하는 시점을 결정합니다. 준비성 검사는 컨테이너의 시작 프로브가 성공적으로 통과된 후에 시작됩니다. 인스턴스가 구성한 실패 임계값 값을 초과하여 준비 상태 프로브에 실패하면 Cloud Run은 해당 인스턴스로 새 트래픽 전송을 중지합니다. Cloud Run은 인스턴스를 종료하지 않고 준비 상태 프로브가 다시 통과하기 시작하면 트래픽을 인스턴스로 다시 전송합니다.

컨테이너는 시작, 활성, 준비 프로브를 일관되게 구현해야 합니다. 시작 확인이 통과되면 Cloud Run은 컨테이너가 트래픽을 처리할 준비가 된 것으로 간주합니다.

시작 프로브가 준비 상태를 고려하도록 로직을 캡슐화하는 것이 좋습니다. Cloud Run은 첫 번째 준비 상태 프로브가 완료되기 전에 트래픽을 새 인스턴스로 라우팅할 수 있으므로 시작 프로브를 통과하면 트래픽을 즉시 안전하게 처리할 수 있는 준비 상태도 보장해야 합니다. 시작 프로브가 성공하면 컨테이너가 트래픽을 수신할 준비가 된 것으로 간주됩니다.

시작 프로브 구성

Google Cloud CLI 또는 YAML을 사용하여 HTTP, TCP, gRPC 프로브를 구성할 수 있습니다.

gcloud

TCP 시작

다음 명령어를 실행합니다.

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

다음을 바꿉니다.

  • INSTANCE: Cloud Run 인스턴스의 이름입니다.
  • IMAGE_URL: 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest) Artifact Registry를 사용하는 경우 REPO_NAME 저장소가 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG입니다.
  • CONTAINER_PORT (선택사항): 인스턴스에 사용되는 컨테이너 포트입니다.
  • DELAY: 첫 번째 프로브를 수행하기 전에 컨테이너가 시작된 후 대기하는 시간(초). 0~240초 사이의 값을 지정하세요. 기본값은 0초입니다.
  • TIMEOUT(선택사항): 프로브가 타임아웃될 때까지 기다리는 시간(초). 이 값은 periodSeconds에 지정된 값을 초과할 수 없습니다. 1~240 사이의 값을 지정하세요. 기본값은 1입니다.
  • THRESHOLD: 컨테이너를 종료하기 전에 프로브를 재시도할 횟수입니다. 기본값은 3입니다.
  • PERIOD: 프로브를 실행할 기간 (초)입니다. 예를 들어 2초마다 프로브를 수행하는 경우 2로 바꿉니다. 1~240초 사이의 값을 지정하세요. 기본값은 10초입니다.

HTTP 시작

프로브에 응답하도록 인스턴스 코드에 HTTP/1 엔드포인트 (HTTP/2가 아닌 Cloud Run 기본값)를 추가합니다. 엔드포인트 이름 (예: /startup, /health 또는 /are_you_ready)은 프로브 구성의 path와 일치해야 합니다. HTTP 상태 점검 엔드포인트는 외부에서 액세스할 수 있으며 외부에 노출된 다른 HTTP 인스턴스 엔드포인트와 동일한 원칙을 따릅니다.

다음 명령어를 실행합니다.

  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

다음을 바꿉니다.

  • INSTANCE: Cloud Run 인스턴스의 이름입니다.
  • IMAGE_URL: 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest) Artifact Registry를 사용하는 경우 REPO_NAME 저장소가 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG입니다.
  • PATH: HTTP 엔드포인트의 상대 경로(예: /health)
  • CONTAINER_PORT (선택사항): 인스턴스에 사용되는 컨테이너 포트로 설정합니다.
  • DELAY(선택사항): 첫 번째 프로브를 수행하기 전에 컨테이너가 시작된 후 대기하는 시간(초)입니다. 0~240초 사이의 값을 지정하세요. 기본값은 0초입니다.
  • THRESHOLD (선택사항): 컨테이너를 종료하기 전에 프로브를 재시도할 횟수입니다. 기본값은 3입니다.
  • TIMEOUT(선택사항): 프로브가 타임아웃될 때까지 기다리는 시간(초) 이 값은 periodSeconds에 지정된 값을 초과할 수 없습니다. 1~240 사이의 값을 지정하세요. 기본값은 1입니다.
  • PERIOD (선택사항): 프로브를 수행할 시간 (초)입니다. 예를 들어 2초마다 프로브를 수행하는 경우 2로 바꿉니다. 1~240초 사이의 값을 지정하세요. 기본값은 10초입니다.

gRPC 시작

컨테이너 이미지가 gRPC 상태 점검 프로토콜을 구현하는지 확인합니다.

다음 명령어를 실행합니다.

  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

다음을 바꿉니다.

  • INSTANCE: Cloud Run 인스턴스의 이름입니다.
  • IMAGE_URL: 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest) Artifact Registry를 사용하는 경우 REPO_NAME 저장소가 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG입니다.
  • GRPC_INSTANCE (선택사항): 설정하면 grpc.health.v1.Health.Check rpc가 호출될 때 grpc.health.v1.HealthCheckRequest의 인스턴스 필드에서 사용됩니다.
  • CONTAINER_PORT (선택사항): 인스턴스에 사용되는 컨테이너 포트입니다.
  • DELAY(선택사항): 첫 번째 프로브를 수행하기 전에 컨테이너가 시작된 후 대기하는 시간(초)입니다. 0~240초 사이의 값을 지정하세요. 기본값은 0초입니다.
  • THRESHOLD (선택사항): 컨테이너를 종료하기 전에 프로브를 재시도할 횟수입니다. 기본값은 3입니다.
  • TIMEOUT(선택사항): 프로브가 타임아웃될 때까지 기다리는 시간(초) 이 값은 periodSeconds에 지정된 값을 초과할 수 없습니다. 1~240 사이의 값을 지정하세요. 기본값은 1입니다.
  • PERIOD (선택사항): 프로브를 수행할 시간 (초)입니다. 예를 들어 2초마다 프로브를 수행하는 경우 2로 바꿉니다. 1~240초 사이의 값을 지정하세요. 기본값은 10초입니다.

YAML

TCP 시작

  1. 새 인스턴스를 만드는 경우에는 이 단계를 건너뜁니다. 기존 인스턴스를 업데이트하는 경우 YAML 구성을 다운로드합니다.

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. 다음과 같이 startupProbe 속성을 구성합니다.

    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

    다음을 바꿉니다.

    • INSTANCE: Cloud Run 인스턴스의 이름입니다.
    • IMAGE_URL: 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest) Artifact Registry를 사용하는 경우 REPO_NAME 저장소가 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG입니다.
    • CONTAINER_PORT (선택사항): 인스턴스에 사용되는 컨테이너 포트입니다.
    • DELAY: 첫 번째 프로브를 수행하기 전에 컨테이너가 시작된 후 대기하는 시간(초). 0~240초 사이의 값을 지정하세요. 기본값은 0초입니다.
    • TIMEOUT(선택사항): 프로브가 타임아웃될 때까지 기다리는 시간(초). 이 값은 periodSeconds에 지정된 값을 초과할 수 없습니다. 1~240 사이의 값을 지정하세요. 기본값은 1입니다.
    • THRESHOLD: 컨테이너를 종료하기 전에 프로브를 재시도할 횟수입니다. 기본값은 3입니다.
    • PERIOD: 프로브를 실행할 기간 (초)입니다. 예를 들어 2초마다 프로브를 수행하는 경우 2로 바꿉니다. 1~240초 사이의 값을 지정하세요. 기본값은 10초입니다.
  3. 다음 명령어를 사용하여 인스턴스를 만들거나 업데이트합니다.
    gcloud beta run instances replace instance.yaml

HTTP 시작

프로브에 응답하도록 인스턴스 코드에 HTTP/1 엔드포인트 (HTTP/2가 아닌 Cloud Run 기본값)를 추가합니다. 엔드포인트 이름 (예: /startup, /health 또는 /are_you_ready)은 프로브 구성의 path와 일치해야 합니다. HTTP 상태 점검 엔드포인트는 외부에서 액세스할 수 있으며 외부에 노출된 다른 HTTP 인스턴스 엔드포인트와 동일한 원칙을 따릅니다.

  1. 새 인스턴스를 만드는 경우에는 이 단계를 건너뜁니다. 기존 인스턴스를 업데이트하는 경우 YAML 구성을 다운로드합니다.

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. 다음과 같이 startupProbe 속성을 구성합니다.

    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

    다음을 바꿉니다.

    • INSTANCE: Cloud Run 인스턴스의 이름입니다.
    • IMAGE_URL: 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest) Artifact Registry를 사용하는 경우 REPO_NAME 저장소가 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG입니다.
    • PATH: HTTP 엔드포인트의 상대 경로(예: /health)
    • CONTAINER_PORT (선택사항): 인스턴스에 사용되는 컨테이너 포트로 설정합니다.
    • DELAY(선택사항): 첫 번째 프로브를 수행하기 전에 컨테이너가 시작된 후 대기하는 시간(초)입니다. 0~240초 사이의 값을 지정하세요. 기본값은 0초입니다.
    • THRESHOLD (선택사항): 컨테이너를 종료하기 전에 프로브를 재시도할 횟수입니다. 기본값은 3입니다.
    • 선택사항: httpHeaders는 다음과 같이 HEADER_NAMEHEADER_VALUE 필드를 사용하여 여러 개의 또는 반복되는 커스텀 헤더를 제공할 수 있습니다.
    • TIMEOUT(선택사항): 프로브가 타임아웃될 때까지 기다리는 시간(초) 이 값은 periodSeconds에 지정된 값을 초과할 수 없습니다. 1~240 사이의 값을 지정하세요. 기본값은 1입니다.
    • PERIOD (선택사항): 프로브를 수행할 시간 (초)입니다. 예를 들어 2초마다 프로브를 수행하는 경우 2로 바꿉니다. 1~240초 사이의 값을 지정하세요. 기본값은 10초입니다.
    1. 새 인스턴스를 만드는 경우에는 이 단계를 건너뜁니다. 기존 인스턴스를 업데이트하는 경우 YAML 구성을 다운로드합니다.

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

gRPC 시작

컨테이너 이미지가 gRPC 상태 점검 프로토콜을 구현하는지 확인합니다.

  1. 새 인스턴스를 만드는 경우에는 이 단계를 건너뜁니다. 기존 인스턴스를 업데이트하는 경우 YAML 구성을 다운로드합니다.

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. 다음과 같이 startupProbe 속성을 구성합니다.

    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

    다음을 바꿉니다.

    • INSTANCE: Cloud Run 인스턴스의 이름입니다.
    • IMAGE_URL: 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest) Artifact Registry를 사용하는 경우 REPO_NAME 저장소가 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG입니다.
    • GRPC_INSTANCE (선택사항): 설정하면 grpc.health.v1.Health.Check rpc가 호출될 때 grpc.health.v1.HealthCheckRequest의 인스턴스 필드에서 사용됩니다.
    • CONTAINER_PORT (선택사항): 인스턴스에 사용되는 컨테이너 포트입니다.
    • DELAY(선택사항): 첫 번째 프로브를 수행하기 전에 컨테이너가 시작된 후 대기하는 시간(초)입니다. 0~240초 사이의 값을 지정하세요. 기본값은 0초입니다.
    • THRESHOLD (선택사항): 컨테이너를 종료하기 전에 프로브를 재시도할 횟수입니다. 기본값은 3입니다.
    • TIMEOUT(선택사항): 프로브가 타임아웃될 때까지 기다리는 시간(초) 이 값은 periodSeconds에 지정된 값을 초과할 수 없습니다. 1~240 사이의 값을 지정하세요. 기본값은 1입니다.
    • PERIOD (선택사항): 프로브를 수행할 시간 (초)입니다. 예를 들어 2초마다 프로브를 수행하는 경우 2로 바꿉니다. 1~240초 사이의 값을 지정하세요. 기본값은 10초입니다.
  3. 새 인스턴스를 만드는 경우에는 이 단계를 건너뜁니다. 기존 인스턴스를 업데이트하는 경우 YAML 구성을 다운로드합니다.

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

기본 TCP 시작 프로브

새 Cloud Run 인스턴스에 TCP 시작 프로브를 명시적으로 구성하지 않으면 Cloud Run에서 다음 기본값으로 TCP 시작 프로브를 자동으로 구성합니다.

startupProbe:
          timeoutSeconds: 240
          periodSeconds: 240
          failureThreshold: 1

이 페이지에 있는 프로브 구성 섹션의 안내에 따라 이러한 기본값을 변경할 수 있습니다.

시작 프로브 요구사항 및 동작

프로브 유형 요구사항 동작
TCP 시작 없음 기본적으로 Cloud Run은 TCP 연결로 지정된 포트에서 TCP 소켓을 엽니다. Cloud Run에서 연결을 설정할 수 없으면 실패한 것입니다.

시작 프로브가 240초를 초과할 수 없는 지정된 시간(failureThreshold * periodSeconds) 내에 성공하지 못하면 컨테이너가 종료됩니다. TCP 기본값도 참조하세요.
HTTP 시작 HTTP 상태 점검 엔드포인트 만들기
HTTP/1 사용
프로브가 구성된 후 Cloud Run은 상태 점검 엔드포인트 (예: /health)에 HTTP GET 요청을 수행합니다. 2XX 또는 3XX 응답은 성공을 의미하며 그 밖의 모든 응답은 실패를 나타냅니다.

시작 프로브가 240초를 초과할 수 없는 지정된 시간 (failureThreshold * periodSeconds) 내에 성공하지 못하면 컨테이너가 종료됩니다.
gRPC 시작 Cloud Run 인스턴스에서 gRPC 상태 점검 프로토콜 구현하기 시작 프로브가 지정된 시간(failureThreshold * periodSeconds), 즉 240초 이내에 성공하지 못하면 컨테이너가 종료됩니다.

활성 프로브 구성

Google Cloud SDK 또는 YAML을 사용하여 HTTP 및 gRPC 프로브를 구성할 수 있습니다.

gcloud

HTTP 활성

프로브에 응답하도록 인스턴스 코드에 HTTP/1 엔드포인트 (HTTP/2가 아닌 Cloud Run 기본값)를 추가합니다. 엔드포인트 이름 (예: /startup, /health 또는 /are_you_ready)은 프로브 구성의 path와 일치해야 합니다. HTTP 상태 점검 엔드포인트는 외부에서 액세스할 수 있으며 외부에 노출된 다른 HTTP 인스턴스 엔드포인트와 동일한 원칙을 따릅니다.

다음 명령어를 실행합니다.

  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

다음을 바꿉니다.

  • INSTANCE: Cloud Run 인스턴스의 이름입니다.
  • IMAGE_URL: 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest) Artifact Registry를 사용하는 경우 REPO_NAME 저장소가 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG입니다.
  • PATH: HTTP 엔드포인트의 상대 경로(예: /health)
  • CONTAINER_PORT (선택사항): 인스턴스에 사용되는 컨테이너 포트로 설정합니다.
  • DELAY(선택사항): 첫 번째 프로브를 수행하기 전에 컨테이너가 시작된 후 대기하는 시간(초)입니다. 0~240초 사이의 값을 지정하세요. 기본값은 0초입니다.
  • THRESHOLD (선택사항): 컨테이너를 종료하기 전에 프로브를 재시도할 횟수입니다. 기본값은 3입니다.
  • 선택사항입니다. TIMEOUT: 프로브가 타임아웃될 때까지 기다리는 시간(초)입니다. 이 값은 periodSeconds에 지정된 값을 초과할 수 없습니다. 1~3,600 사이의 값을 지정하세요.기본값은 1입니다.
  • 선택사항입니다. PERIOD: 프로브를 실행할 기간 (초)입니다. 예를 들어 2를 지정하면 2초마다 프로브가 실행됩니다. 1~3,600초 사이의 값을 지정하세요. 기본값은 10초입니다.

gRPC 활성

컨테이너 이미지가 gRPC 상태 점검 프로토콜을 구현하는지 확인합니다.

다음 명령어를 실행합니다.

  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

다음을 바꿉니다.

  • INSTANCE: Cloud Run 인스턴스의 이름입니다.
  • IMAGE_URL: 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest) Artifact Registry를 사용하는 경우 REPO_NAME 저장소가 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG입니다.
  • GRPC_INSTANCE (선택사항): 설정하면 grpc.health.v1.Health.Check rpc가 호출될 때 grpc.health.v1.HealthCheckRequest의 인스턴스 필드에서 사용됩니다.
  • CONTAINER_PORT (선택사항): 인스턴스에 사용되는 컨테이너 포트입니다.
  • DELAY(선택사항): 첫 번째 프로브를 수행하기 전에 컨테이너가 시작된 후 대기하는 시간(초)입니다. 0~240초 사이의 값을 지정하세요. 기본값은 0초입니다.
  • THRESHOLD (선택사항): 컨테이너를 종료하기 전에 프로브를 재시도할 횟수입니다. 기본값은 3입니다.
  • 선택사항입니다. TIMEOUT: 프로브가 타임아웃될 때까지 기다리는 시간(초)입니다. 이 값은 periodSeconds에 지정된 값을 초과할 수 없습니다. 1~3,600 사이의 값을 지정하세요.기본값은 1입니다.
  • 선택사항입니다. PERIOD: 프로브를 실행할 기간 (초)입니다. 예를 들어 2를 지정하면 2초마다 프로브가 실행됩니다. 1~3,600초 사이의 값을 지정하세요. 기본값은 10초입니다.

YAML

HTTP 활성

프로브에 응답하도록 인스턴스 코드에 HTTP/1 엔드포인트 (HTTP/2가 아닌 Cloud Run 기본값)를 추가합니다. 엔드포인트 이름 (예: /startup, /health 또는 /are_you_ready)은 프로브 구성의 path와 일치해야 합니다. HTTP 상태 점검 엔드포인트는 외부에서 액세스할 수 있으며 외부에 노출된 다른 HTTP 인스턴스 엔드포인트와 동일한 원칙을 따릅니다.

  1. 새 인스턴스를 만드는 경우에는 이 단계를 건너뜁니다. 기존 인스턴스를 업데이트하는 경우 YAML 구성을 다운로드합니다.
    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. 다음과 같이 livenessProbe 속성을 구성합니다.

    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

    다음을 바꿉니다.

    • INSTANCE: Cloud Run 인스턴스의 이름입니다.
    • IMAGE_URL: 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest) Artifact Registry를 사용하는 경우 REPO_NAME 저장소가 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG입니다.
    • PATH: HTTP 엔드포인트의 상대 경로(예: /health)
    • CONTAINER_PORT (선택사항): 인스턴스에 사용되는 컨테이너 포트로 설정합니다.
    • DELAY(선택사항): 첫 번째 프로브를 수행하기 전에 컨테이너가 시작된 후 대기하는 시간(초)입니다. 0~240초 사이의 값을 지정하세요. 기본값은 0초입니다.
    • THRESHOLD (선택사항): 컨테이너를 종료하기 전에 프로브를 재시도할 횟수입니다. 기본값은 3입니다.
    • 선택사항: httpHeaders는 다음과 같이 HEADER_NAMEHEADER_VALUE 필드를 사용하여 여러 개의 또는 반복되는 커스텀 헤더를 제공할 수 있습니다.
    • 선택사항입니다. TIMEOUT: 프로브가 타임아웃될 때까지 기다리는 시간(초)입니다. 이 값은 periodSeconds에 지정된 값을 초과할 수 없습니다. 1~3,600 사이의 값을 지정하세요.기본값은 1입니다.
    • 선택사항입니다. PERIOD: 프로브를 실행할 기간 (초)입니다. 예를 들어 2를 지정하면 2초마다 프로브가 실행됩니다. 1~3,600초 사이의 값을 지정하세요. 기본값은 10초입니다.
  3. 다음 명령어를 사용하여 인스턴스를 만들거나 업데이트합니다.
    gcloud beta run instances replace instance.yaml

gRPC 활성

컨테이너 이미지가 gRPC 상태 점검 프로토콜을 구현하는지 확인합니다.

  1. 새 인스턴스를 만드는 경우에는 이 단계를 건너뜁니다. 기존 인스턴스를 업데이트하는 경우 YAML 구성을 다운로드합니다.
    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. 다음과 같이 livenessProbe 속성을 구성합니다.

    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

    다음을 바꿉니다.

    • INSTANCE: Cloud Run 인스턴스의 이름입니다.
    • IMAGE_URL: 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest) Artifact Registry를 사용하는 경우 REPO_NAME 저장소가 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG입니다.
    • GRPC_INSTANCE (선택사항): 설정하면 grpc.health.v1.Health.Check rpc가 호출될 때 grpc.health.v1.HealthCheckRequest의 인스턴스 필드에서 사용됩니다.
    • CONTAINER_PORT (선택사항): 인스턴스에 사용되는 컨테이너 포트입니다.
    • DELAY(선택사항): 첫 번째 프로브를 수행하기 전에 컨테이너가 시작된 후 대기하는 시간(초)입니다. 0~240초 사이의 값을 지정하세요. 기본값은 0초입니다.
    • THRESHOLD (선택사항): 컨테이너를 종료하기 전에 프로브를 재시도할 횟수입니다. 기본값은 3입니다.
    • 선택사항입니다. TIMEOUT: 프로브가 타임아웃될 때까지 기다리는 시간(초)입니다. 이 값은 periodSeconds에 지정된 값을 초과할 수 없습니다. 1~3,600 사이의 값을 지정하세요.기본값은 1입니다.
    • 선택사항입니다. PERIOD: 프로브를 실행할 기간 (초)입니다. 예를 들어 2를 지정하면 2초마다 프로브가 실행됩니다. 1~3,600초 사이의 값을 지정하세요. 기본값은 10초입니다.

  3. 다음 명령어를 사용하여 인스턴스를 만들거나 업데이트합니다.
    gcloud beta run instances replace instance.yaml

활성 프로브 요구사항 및 동작

프로브 유형 요구사항 동작
HTTP 활성 HTTP 상태 점검 엔드포인트 만들기
HTTP/1 사용
활성 프로브는 시작 프로브가 성공한 후에만 시작합니다. 프로브가 구성되고 모든 시작 프로브가 성공하면 Cloud Run이 상태 점검 엔드포인트 (예: /health)에 HTTP GET 요청을 수행합니다. 2XX 또는 3XX 응답은 성공을 의미하며 그 밖의 모든 응답은 실패를 나타냅니다.

활성 프로브가 지정된 시간 (failureThreshold * periodSeconds) 내에 성공하지 못하면 SIGKILL 신호를 사용하여 컨테이너가 종료됩니다. 컨테이너에서 아직 처리 중인 나머지 요청은 HTTP 상태 코드 503으로 종료됩니다. 컨테이너가 종료되면 Cloud Run 자동 확장이 새 컨테이너 인스턴스를 시작합니다.
gRPC 활성 Cloud Run 인스턴스에서 gRPC 상태 점검 프로토콜 구현하기 gRPC 시작 프로브를 구성하면 시작 프로브가 성공한 후에만 활성 프로브가 시작됩니다.

활성 프로브가 구성되고 시작 프로브가 성공하면 Cloud Run이 인스턴스에 상태 점검 요청을 수행합니다.

활성 프로브가 지정된 시간 (failureThreshold * periodSeconds) 내에 성공하지 못하면 SIGKILL 신호를 사용하여 컨테이너가 종료됩니다. 컨테이너가 종료되면 Cloud Run 자동 확장이 새 컨테이너 인스턴스를 시작합니다.

준비 프로브 구성

준비성 프로브에는 다음과 같은 제한사항이 적용됩니다.

  • 세션 어피니티를 사용 설정하면 준비 상태 확인이 실패하더라도 Cloud Run은 동일한 인스턴스로 요청을 계속 전송합니다.

Google Cloud CLI 또는 YAML을 사용하여 준비 상태 프로브를 구성할 수 있습니다.

gcloud

HTTP 준비 상태

프로브에 응답하도록 인스턴스 코드에 HTTP/1 엔드포인트 (HTTP/2가 아닌 Cloud Run 기본값)를 추가합니다. 엔드포인트 이름 (예: /startup, /health 또는 /are_you_ready)은 프로브 구성의 path와 일치해야 합니다. HTTP 상태 점검 엔드포인트는 외부에서 액세스할 수 있으며 외부에 노출된 다른 HTTP 인스턴스 엔드포인트와 동일한 원칙을 따릅니다.

다음 명령어를 실행합니다.

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

다음을 바꿉니다.

  • INSTANCE: Cloud Run 인스턴스의 이름입니다.
  • IMAGE_URL: 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest) Artifact Registry를 사용하는 경우 REPO_NAME 저장소가 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG입니다.
  • PATH(선택사항): HTTP 엔드포인트의 상대 경로(예: /are_you_ready) 기본 경로는 /입니다.
  • CONTAINER_PORT (선택사항): 인스턴스에 사용되는 컨테이너 포트입니다. 기본 포트는 기본 인그레스 포트입니다.
  • SUCCESS_THRESHOLD (선택사항): 실패 후 성공으로 간주되기 위해 필요한 프로브의 최소 연속 성공 횟수입니다. 기본값은 2입니다.
  • FAILURE_THRESHOLD (선택사항): 실패를 보고하기 전에 프로브를 재시도할 횟수입니다. 실패를 보고하면 인스턴스가 트래픽 수신을 중지합니다. 기본값은 3입니다.
  • TIMEOUT(선택사항): 프로브가 타임아웃될 때까지 기다리는 시간(초)입니다. 이 값은 periodSeconds에 지정된 값을 초과할 수 없습니다. 1~300 사이의 값을 지정합니다. 기본값은 1입니다.
  • PERIOD (선택사항): 프로브를 수행할 시간 (초)입니다. 예를 들어 2초마다 프로브를 수행하는 경우 2로 바꿉니다. 1~300 사이의 값을 지정합니다. 기본값은 10초입니다.

gRPC 준비 상태

컨테이너 이미지가 gRPC 상태 점검 프로토콜을 구현하는지 확인합니다.

다음 명령어를 실행합니다.

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

다음을 바꿉니다.

  • INSTANCE: Cloud Run 인스턴스의 이름입니다.
  • IMAGE_URL: 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest) Artifact Registry를 사용하는 경우 REPO_NAME 저장소가 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG입니다.
  • CONTAINER_PORT (선택사항): 인스턴스에 사용되는 컨테이너 포트입니다. 기본 포트는 기본 수신 포트입니다.
  • GRPC_INSTANCE (선택사항): 설정하면 grpc.health.v1.Health.Check rpc가 호출될 때 grpc.health.v1.HealthCheckRequest의 인스턴스 필드에서 사용됩니다.
  • SUCCESS_THRESHOLD (선택사항): 실패 후 성공으로 간주되기 위해 필요한 프로브의 최소 연속 성공 횟수입니다. 기본값은 2입니다.
  • FAILURE_THRESHOLD (선택사항): 실패를 보고하기 전에 프로브를 재시도할 횟수입니다. 실패를 보고하면 인스턴스가 트래픽 수신을 중지합니다. 기본값은 3입니다.
  • TIMEOUT(선택사항): 프로브가 타임아웃될 때까지 기다리는 시간(초)입니다. 이 값은 periodSeconds에 지정된 값을 초과할 수 없습니다. 1~300 사이의 값을 지정합니다. 기본값은 1입니다.
  • PERIOD (선택사항): 프로브를 수행할 시간 (초)입니다. 예를 들어 2초마다 프로브를 수행하는 경우 2로 바꿉니다. 1~300 사이의 값을 지정합니다. 기본값은 10초입니다.

YAML

HTTP 준비 상태

프로브에 응답하도록 인스턴스 코드에 HTTP/1 엔드포인트 (HTTP/2가 아닌 Cloud Run 기본값)를 추가합니다. 엔드포인트 이름 (예: /startup, /health 또는 /are_you_ready)은 프로브 구성의 path와 일치해야 합니다. HTTP 상태 점검 엔드포인트는 외부에서 액세스할 수 있으며 외부에 노출된 다른 HTTP 인스턴스 엔드포인트와 동일한 원칙을 따릅니다.

  1. 새 인스턴스를 만드는 경우에는 이 단계를 건너뜁니다. 기존 인스턴스를 업데이트하는 경우 YAML 구성을 다운로드합니다.
    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. 다음과 같이 readinessProbe 속성을 구성합니다.

    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

    다음을 바꿉니다.

    • INSTANCE: Cloud Run 인스턴스의 이름입니다.
    • IMAGE_URL: 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest) Artifact Registry를 사용하는 경우 REPO_NAME 저장소가 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG입니다.
    • PATH(선택사항): HTTP 엔드포인트의 상대 경로(예: /are_you_ready) 기본 경로는 /입니다.
    • CONTAINER_PORT (선택사항): 인스턴스에 사용되는 컨테이너 포트입니다. 기본 포트는 기본 인그레스 포트입니다.
    • SUCCESS_THRESHOLD (선택사항): 실패 후 성공으로 간주되기 위해 필요한 프로브의 최소 연속 성공 횟수입니다. 기본값은 2입니다.
    • FAILURE_THRESHOLD (선택사항): 실패를 보고하기 전에 프로브를 재시도할 횟수입니다. 실패를 보고하면 인스턴스가 트래픽 수신을 중지합니다. 기본값은 3입니다.
    • TIMEOUT(선택사항): 프로브가 타임아웃될 때까지 기다리는 시간(초)입니다. 이 값은 periodSeconds에 지정된 값을 초과할 수 없습니다. 1~300 사이의 값을 지정합니다. 기본값은 1입니다.
    • PERIOD (선택사항): 프로브를 수행할 시간 (초)입니다. 예를 들어 2초마다 프로브를 수행하는 경우 2로 바꿉니다. 1~300 사이의 값을 지정합니다. 기본값은 10초입니다.

  3. 다음 명령어를 사용하여 인스턴스를 만들거나 업데이트합니다.
    gcloud beta run instances replace instance.yaml

gRPC 준비 상태

컨테이너 이미지가 gRPC 상태 점검 프로토콜을 구현하는지 확인합니다.

  1. 새 인스턴스를 만드는 경우에는 이 단계를 건너뜁니다. 기존 인스턴스를 업데이트하는 경우 YAML 구성을 다운로드합니다.
    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. 다음과 같이 readinessProbe 속성을 구성합니다.

    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

    다음을 바꿉니다.

    • INSTANCE: Cloud Run 인스턴스의 이름입니다.
    • IMAGE_URL: 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest) Artifact Registry를 사용하는 경우 REPO_NAME 저장소가 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG입니다.
    • CONTAINER_PORT (선택사항): 인스턴스에 사용되는 컨테이너 포트입니다. 기본 포트는 기본 수신 포트입니다.
    • GRPC_INSTANCE (선택사항): 설정하면 grpc.health.v1.Health.Check rpc가 호출될 때 grpc.health.v1.HealthCheckRequest의 인스턴스 필드에서 사용됩니다.
    • SUCCESS_THRESHOLD (선택사항): 실패 후 성공으로 간주되기 위해 필요한 프로브의 최소 연속 성공 횟수입니다. 기본값은 2입니다.
    • FAILURE_THRESHOLD (선택사항): 실패를 보고하기 전에 프로브를 재시도할 횟수입니다. 실패를 보고하면 인스턴스가 트래픽 수신을 중지합니다. 기본값은 3입니다.
    • TIMEOUT(선택사항): 프로브가 타임아웃될 때까지 기다리는 시간(초)입니다. 이 값은 periodSeconds에 지정된 값을 초과할 수 없습니다. 1~300 사이의 값을 지정합니다. 기본값은 1입니다.
    • PERIOD (선택사항): 프로브를 수행할 시간 (초)입니다. 예를 들어 2초마다 프로브를 수행하는 경우 2로 바꿉니다. 1~300 사이의 값을 지정합니다. 기본값은 10초입니다.

  3. 다음 명령어를 사용하여 인스턴스를 만들거나 업데이트합니다.
    gcloud beta run instances replace instance.yaml

CPU 할당

  • 프로브가 실행될 때 항상 CPU가 할당됩니다.
  • 모든 프로브에는 CPU 및 메모리 사용량 소비 요금이 청구되지만 요청 기반 요금은 청구되지 않습니다.

다음 단계