컨테이너 런타임 계약

이 페이지에는 Cloud Run for Anthos에 있는 컨테이너의 주요 요구사항과 동작이 나열되어 있습니다.

지원 언어 및 이미지

컨테이너 이미지는 선택한 프로그래밍 언어로 작성된 코드를 실행하고 이 페이지에 나열된 제약조건을 준수하는 기본 이미지를 사용할 수 있습니다.

컨테이너 이미지의 실행 파일은 Linux 64비트용으로 컴파일되어야 합니다. Cloud Run for Anthos는 특히 Linux x86_64 ABI 형식을 지원합니다.

올바른 포트에서 요청 리슨

컨테이너는 요청이 전송되는 포트에서 0.0.0.0에 대한 요청을 리슨해야 합니다. 기본적으로 요청은 8080으로 전송되지만 원하는 포트로 요청을 전송하도록 Cloud Run for Anthos를 구성할 수 있습니다.

Cloud Run for Anthos 컨테이너 인스턴스 내에서 PORT 환경 변수 값은 항상 요청이 전송되는 포트를 반영합니다. 기본값은 8080입니다.

전송 계층 암호화(TLS)

컨테이너가 전송 계층 보안을 직접 구현해서는 안 됩니다. TLS는 HTTPS 및 gRPC용 Cloud Run for Anthos에 의해 종료된 후 TLS 없이 컨테이너에 HTTP 또는 gRPC로 프록시됩니다.

응답

컨테이너 인스턴스는 컨테이너 인스턴스 시작 시간을 포함하여 요청을 받은 후 요청 제한 시간 설정에 지정된 시간 내에 응답을 보내야 합니다. 그러지 않으면 요청이 종료되고 504 오류가 반환됩니다.

환경 변수

다음 환경 변수는 실행 중인 컨테이너에 자동으로 추가됩니다.

이름 설명 예시
PORT HTTP 서버가 리슨하는 포트입니다. 8080
K_SERVICE 실행 중인 Cloud Run for Anthos 서비스의 이름입니다. hello-world
K_REVISION 실행 중인 Cloud Run for Anthos 버전의 이름입니다. hello-world.1
K_CONFIGURATION 버전을 만든 Cloud Run for Anthos 구성의 이름입니다. hello-world

파일 시스템 액세스

컨테이너의 파일 시스템은 쓰기가 가능하고 다음과 같은 동작이 적용됩니다.

  • 메모리 내 파일 시스템이므로 컨테이너 인스턴스의 메모리를 사용합니다.
  • 파일 시스템에 쓴 데이터는 컨테이너 인스턴스가 중지되면 유지되지 않습니다.

컨테이너 인스턴스 수명 주기

수신 요청에 따라 서비스가 특정 수의 컨테이너 인스턴스로 자동 확장되며 각 인스턴스는 배포된 컨테이너 이미지를 실행합니다.

버전이 트래픽을 수신하지 않을 경우 구성된 최소 컨테이너 인스턴스 수로 축소됩니다(기본적으로 0개).

시작

컨테이너 인스턴스는 시작 후 4분 이내에 요청을 리슨해야 합니다. 이 시작 시간 동안 컨테이너 인스턴스에는 CPU가 할당됩니다.

계산 범위는 요청 범위로 지정됨

시작 후에는 요청 범위 내에서만 계산을 수행할 수 있어야 합니다. 컨테이너 인스턴스는 요청을 처리하지 않는 경우 할당된 CPU가 없기 때문입니다.

종료

컨테이너 인스턴스는 언제든지 종료할 수 있습니다.

컨테이너 인스턴스를 종료해야 하는 경우, 새로 추가되는 요청은 다른 인스턴스로 라우팅되고 현재 처리 중인 요청을 완료할 수 있는 시간이 제공됩니다. 그런 다음 컨테이너 인스턴스는 종료되기 전 10초 기간의 시작을 나타내는 SIGTERM 신호(SIGKILL 신호 포함)를 수신합니다. 이 기간에는 컨테이너 인스턴스에 CPU가 할당되고 요금이 청구됩니다. 컨테이너 인스턴스가 SIGTERM 신호를 포착하지 않으면 즉시 종료됩니다.

최소 컨테이너 인스턴스 수 구성 설정으로 인해 컨테이너 인스턴스를 유휴 상태로 유지해야 하는 경우가 아니라면 15분 이상 유휴 상태로 유지되지 않습니다.

컨테이너 인스턴스 리소스

컨테이너 인스턴스의 리소스 요청은 GKE 클러스터의 노드에 예약됩니다. 각 노드는 GKE 클러스터에서 사용할 수 있는 총 컴퓨팅 리소스 양을 공유합니다.

따라서 Cloud Run for Anthos 서비스에서 사용할 수 있는 컴퓨팅 리소스 양은 해당 노드에서 사용 가능한 리소스 양으로만 제한됩니다. 요청용 컴퓨팅 리소스 자세히 알아보기

예를 들어 컨테이너에 512MiB의 메모리를 할당하고 이 컨테이너가 8GiB의 메모리가 있는 노드 내의 유일한 pod에서 실행 중인 경우 이 컨테이너는 더 많은 RAM을 사용해 볼 수 있습니다.

CPU

기본적으로 큐 프록시 사이드카는 25 milliCPU를 예약하며 Cloud Run for Anthos 서비스에서 사용할 수 있는 vCPU 양에 제한이 없습니다. 큐 프록시의 리소스 소비는 큐에 추가되는 요청 수와 요청 크기에 따라 다릅니다.

vCPU는 기본 하드웨어를 추상화한 형태로 구현되어 가변 CPU 플랫폼의 단일 하드웨어 하이퍼 스레드에 그에 상응하는 대략적인 CPU 시간을 제공합니다. 컨테이너 인스턴스는 여러 코어에서 동시에 실행될 수 있습니다. vCPU는 컨테이너 인스턴스 시작 및 요청 처리 중에만 할당되고 그러지 않으면 제한됩니다.

다른 vCPU 값을 할당하려면 CPU 할당 문서를 참조하세요.

메모리

기본적으로 큐 프록시 사이드카는 메모리를 예약하지 않으며 Cloud Run for Anthos 서비스에서 사용할 수 있는 메모리 양에 제한이 없습니다. 원하는 경우 Cloud Run for Anthos 서비스의 메모리 한도를 구성할 수 있습니다. GKE가 메모리를 처리하는 방식에 대한 자세한 내용은 할당 가능한 메모리 및 CPU 리소스를 참조하세요.

메모리의 일반적인 용도는 다음과 같습니다.

  • 서비스 실행을 위해 메모리에 로드되는 코드
  • 파일 시스템에 쓰기
  • nginx 서버와 같이 컨테이너에서 실행되는 추가 프로세스
  • PHP OpCache와 같은 인메모리 캐싱 시스템
  • 요청당 메모리 사용량

동시 실행

각 Cloud Run for Anthos 컨테이너 인스턴스는 기본적으로 여러 번동시 실행되도록 설정되며 각 컨테이너 인스턴스에서 동시에 둘 이상의 요청을 수신할 수 있습니다. 동시 실행을 설정하여 이를 변경할 수 있습니다.

컨테이너 인스턴스 샌드박스

Cloud Run for Anthos는 컨테이너 샌드박스를 사용하지 않습니다.

컨테이너 인스턴스 메타데이터 서버

Cloud Run for Anthos 컨테이너 인스턴스는 컨테이너 ID(예: 프로젝트 ID, 리전, 인스턴스 ID, 서비스 계정)를 검색하는 데 사용할 수 있는 메타데이터 서버를 노출합니다.

Metadata-Flavor: Google 헤더로 http://metadata.google.internal/ 엔드포인트에 대한 간단한 HTTP 요청을 사용하여 메타데이터 서버에서 이 데이터에 액세스할 수 있습니다. 이때 클라이언트 라이브러리는 필요하지 않습니다. 자세한 내용은 메타데이터 가져오기를 참조하세요.

다음 표에는 사용 가능한 메타데이터 서버 정보 중 일부가 나와 있습니다.

경로 설명
/computeMetadata/v1/project/project-id 이 Cloud Run for Anthos 서비스의 프로젝트 ID
/computeMetadata/v1/instance/region 이 Cloud Run for Anthos 서비스의 리전
/computeMetadata/v1/instance/id 컨테이너 인스턴스의 고유 식별자입니다(로그에서도 확인 가능).
/computeMetadata/v1/instance/service-accounts/default/token 이 Cloud Run for Anthos 서비스의 런타임 서비스 계정 토큰을 생성합니다