최소 인스턴스 사용

최소 인스턴스 설정을 구성하여 서비스에 유휴 인스턴스를 사용 설정하는 방법을 알아봅니다.

기본적으로 Knative serving은 수신 요청 수를 기준으로 인스턴스 수에 맞게 확장됩니다. 하지만 서비스의 지연 시간을 단축하고 콜드 스타트 횟수를 제한해야 할 경우에는 실행 상태로 유지하고 요청 처리를 위해 준비할 최소 컨테이너 인스턴스 수를 지정하여 이러한 기본 동작을 변경할 수 있습니다.

이 방식으로 실행이 유지되는 인스턴스는 청구 비용을 발생시킵니다.

버전 및 최소 인스턴스

최소 인스턴스는 버전이 처리 가능한 경우에만 시작됩니다. 다음 중 하나에 해당하면 버전을 처리할 수 있습니다.

  • 트래픽의 일정 비율을 수신합니다.
  • 버전 태그가 할당되었습니다.

최소 인스턴스 설정 및 업데이트

구성을 변경하면 새 버전이 생성됩니다. 이를 변경하는 명시적 업데이트가 없으면 이후 버전에도 이 구성 설정이 자동으로 적용됩니다.

기본적으로 컨테이너 인스턴스는 0 설정으로 min-instances를 해제합니다. 새 서비스를 배포하거나 기존 서비스를 업데이트하고 버전을 배포할 때 Google Cloud Console 또는 Google Cloud CLI를 사용하여 이 기본값을 변경할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Knative serving으로 이동합니다.

    Knative serving으로 이동

  2. 배포할 새 서비스를 구성하려면 서비스 만들기를 클릭합니다. 기존 서비스를 구성하려면 해당 서비스를 클릭한 다음 새 버전 수정 및 배포를 클릭합니다.

  3. 고급 설정에서 컨테이너를 클릭합니다.

  4. 최소 인스턴스 수로 라벨이 지정된 필드에서 요청을 수신할 수 있도록 웜 상태로 유지하기 위해 원하는 컨테이너 인스턴스 수를 지정합니다.

  5. 다음을 클릭하여 다음 섹션으로 진행합니다.

  6. 이 서비스가 트리거되는 방식 구성 섹션에서 서비스를 호출하는 데 사용할 연결을 선택합니다.

  7. 만들기를 클릭하여 Knative serving에 이미지를 배포하고 배포가 완료될 때까지 기다립니다.

명령줄

  • 기존 서비스의 경우 --min-instances 매개변수로 gcloud run services update 명령어를 실행하여 최소 컨테이너 인스턴스 수를 설정합니다.

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

    다음과 같이 바꿉니다.

    • SERVICE를 서비스 이름으로 바꿉니다.
    • MIN-VALUE를 요청을 수신할 수 있도록 웜 상태로 유지하기 위해 원하는 컨테이너 인스턴스 수로 바꿉니다. 최소 인스턴스 설정을 삭제하려면 default를 지정합니다.
  • 새 서비스의 경우 --min-instances 매개변수로 gcloud run deploy 명령어를 실행하여 최소 컨테이너 인스턴스 수를 설정합니다.

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

    다음과 같이 바꿉니다.

    • SERVICE를 서비스 이름으로 바꿉니다.
    • IMAGE_URL을 컨테이너 이미지에 대한 참조(예: gcr.io/cloudrun/hello)로 바꿉니다.
    • MIN-VALUE를 요청을 수신할 수 있도록 웜 상태로 유지하기 위해 원하는 컨테이너 인스턴스 수로 바꿉니다. 최소 인스턴스 설정을 삭제하려면 default를 지정합니다.

YAML

--format=export 플래그를 사용하여 gcloud run services describe 명령어로 YAML 파일에 기존 서비스 구성을 다운로드할 수 있습니다. 그런 다음 gcloud run services replace 명령어로 YAML 파일을 수정하고 변경사항을 배포할 수 있습니다. 지정된 속성만 수정해야 합니다.

  1. 서비스 구성을 로컬 작업공간의 service.yaml 파일에 다운로드합니다.

    gcloud run services describe SERVICE --format export > service.yaml

    SERVICE를 Knative serving 서비스의 이름으로 바꿉니다.

  2. 로컬 파일에서 autoscaling.knative.dev/minScale: 속성을 업데이트합니다.

    spec:
     template:
       metadata:
         annotations:
           autoscaling.knative.dev/minScale: 'MIN-INSTANCE' 

    다음과 같이 바꿉니다.

    • MIN-VALUE를 요청을 수신할 수 있도록 웜 상태로 유지하기 위해 원하는 컨테이너 인스턴스 수로 바꿉니다. 최소 인스턴스 설정을 삭제하려면 default를 지정합니다.
  3. 다음 명령어를 사용하여 서비스를 새 구성으로 바꿉니다.

    gcloud run services replace service.yaml