MIG에서 VM 실행 시간 제한


이 문서에서는 VM에 시간 제한을 지정하여 관리형 인스턴스 그룹(MIG)에서 가상 머신(VM)을 자동으로 종료하는 방법을 설명합니다. 또한 MIG에서 VM에 대한 시간 제한의 작동 방식을 설명합니다.

MIG에서 VM에 시간 제한을 지정하여 임시 워크로드를 최적화할 수 있습니다. VM이 시간 한도에 도달하면 MIG는 VM을 자동으로 종료(삭제)합니다. 시간 제한으로 MIG의 VM 실행 시간을 제한하면 비용을 최소화하고 할당량을 확보하는 데 도움이 됩니다.

독립형 VM에 시간 제한을 지정하는 방법은 VM 실행 시간 제한을 참조하세요. MIG가 워크로드를 기반으로 VM을 자동으로 추가하거나 삭제하도록 하려면 인스턴스 그룹 자동 확장을 참조하세요.

시작하기 전에

  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공하는 사용자 인증 정보를 사용합니다.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      자세한 내용은 Google Cloud 인증 문서의 REST 사용 인증을 참조하세요.

MIG에서 VM 실행 시간 제한

MIG에 사용되는 인스턴스 템플릿에서 시간 제한을 지정하여 MIG에 있는 VM의 실행 시간을 제한할 수 있습니다. MIG가 템플릿을 기준으로 VM을 만들면 각 VM에 시간 제한이 적용됩니다.

두 가지 유형의 시간 제한 중 하나를 지정할 수 있습니다.

  • 실행 기간으로서의 시간 제한
  • 종료 시간으로서의 시간 제한

MIG의 VM에 대한 시간 제한을 지정하려면 다음 단계를 수행합니다.

  1. VM의 실행 기간 또는 VM의 종료 시간이 있는 인스턴스 템플릿을 만듭니다.

  2. 인스턴스 템플릿을 사용하여 MIG를 만들거나 기존 MIG를 업데이트합니다.

제한사항

  • 독립형 VM의 실행 시간 제한사항을 준수해야 합니다.

  • MIG에서 VM에 대한 시간 제한을 지정하기 위해 인스턴스 템플릿을 만들 때 다음 제한사항이 적용됩니다.

    • 종료 작업을 STOP으로 설정할 수 없습니다. MIG는 DELETE만 지원합니다.
    • 스팟 VM을 사용할 수 없습니다.
  • VM 실행 시간을 제한하는 인스턴스 템플릿을 사용하는 MIG에는 크기 조절 요청을 만들 수 없습니다.

  • EVEN 목표 분산 형태 및 사전 인스턴스 재분산이 사용 설정된 리전 MIG에서는 VM 실행 시간을 제한할 수 없습니다.

VM 실행 기간이 있는 인스턴스 템플릿 만들기

MIG의 VM이 특정 기간 동안 실행된 후 자동으로 종료하려면 인스턴스 템플릿에서 최대 실행 기간(maxRunDuration)을 설정합니다.

콘솔

  1. Google Cloud 콘솔에서 인스턴스 템플릿 페이지로 이동합니다.

    인스턴스 템플릿으로 이동

  2. 인스턴스 템플릿 만들기를 클릭합니다.

  3. 다음과 같이 위치를 선택합니다.

    • 리전 간에 인스턴스 템플릿을 사용하려면 전역을 선택합니다.
    • 리전 간 종속 항목을 줄이려면 리전을 선택합니다.
  4. 리전을 선택했으면 인스턴스 템플릿을 만들 리전을 선택합니다.

  5. 가용성 정책 섹션에서 VM 프로비저닝 모델 고급 설정을 펼칩니다.

  6. VM 시간 제한 설정 체크박스를 선택합니다.

  7. 시간 제한 유형 필드에서 시간 기준(기본값)을 선택하여 시간 제한을 기간으로 지정합니다. 다음 필드에 시간 단위로 기간을 입력합니다.

  8. VM 종료 시 목록에서 삭제를 선택합니다.

  9. 다른 필드의 경우 기본값을 수락하거나 필요에 따라 수정합니다.

  10. 만들기를 클릭합니다.

gcloud

instance-templates create 명령어를 사용합니다. 특정 기간이 지난 후 VM을 자동으로 삭제하려면 다음과 같이 --max-run-duration 플래그를 포함하고 --instance-termination-action 플래그를 DELETE로 설정합니다.

  gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
      --max-run-duration=DURATION \
      --instance-termination-action=DELETE

다음을 바꿉니다.

  • INSTANCE_TEMPLATE_NAME: 인스턴스 템플릿의 이름입니다.
  • DURATION: VM을 실행할 기간입니다. MIG가 지정된 기간이 지나면 VM을 자동으로 삭제합니다.

    일, 시간, 분, 초를 각각 d, h, m, s로 지정하여 기간 형식을 지정합니다. 예를 들어 30분 기간에는 30m을 지정하거나 1일, 2시간, 3분, 4초 기간에는 1d2h3m4s를 지정합니다. 최소 기간은 30초(30s)이고 최대 기간은 120일(120d)입니다.

Terraform

Terraform을 사용하여 인스턴스 템플릿을 만들려면 google_compute_instance_template 리소스를 사용합니다. 특정 기간이 지난 후 VM을 자동으로 삭제하는 인스턴스 템플릿을 만들려면 max_run_duration 인수를 포함하고 instance_termination_action 인수DELETE로 설정해야 합니다.

자세한 내용은 google_compute_instance_template 리소스에 대한 Terraform 문서를 참조하세요.

REST

instanceTemplates.insert 메서드를 사용합니다. 특정 기간이 지난 후 VM을 자동으로 삭제하려면 다음과 같이 maxRunDuration 필드를 포함하고 instanceTerminationAction 필드를 DELETE로 설정합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default",
        "accessConfigs": [
          {
            "name": "external-IP",
            "type": "ONE_TO_ONE_NAT"
          }
        ]
      }
    ],
    "disks": [
      {
        "type": "PERSISTENT",
        "boot": true,
        "mode": "READ_WRITE",
        "initializeParams":
        {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ]
    "scheduling": {
      "maxRunDuration":
      {
        "seconds": DURATION
      },
      "instanceTerminationAction": "DELETE"
    }
  }
}

다음을 바꿉니다.

  • PROJECT_ID: 인스턴스 템플릿을 만들려는 프로젝트의 ID입니다.
  • INSTANCE_TEMPLATE_NAME: 인스턴스 템플릿의 이름입니다.
  • MACHINE_TYPE: 그룹의 VM에 대해 사전 정의된 머신 유형 또는 커스텀 머신 유형입니다.
  • IMAGE_PROJECT: 이미지가 포함된 이미지 프로젝트입니다(예: debian-cloud).
  • IMAGE 또는 IMAGE_FAMILY: 다음 중 하나를 지정합니다.

    • IMAGE: OS 이미지의 특정 버전입니다(예: debian-10-buster-v20200309).

    • IMAGE_FAMILY: 이미지 계열입니다. 중단되지 않은 최신 OS 이미지를 지정합니다. 예를 들어 family/debian-10을 지정하면 Debian 10 이미지 계열의 최신 버전이 사용됩니다.

  • DURATION: VM을 실행할 기간입니다. MIG가 지정된 기간이 지나면 VM을 자동으로 삭제합니다.

    일, 시간, 분, 초를 각각 d, h, m, s로 지정하여 기간 형식을 지정합니다. 예를 들어 30분 기간에는 30m을 지정하거나 1일, 2시간, 3분, 4초 기간에는 1d2h3m4s를 지정합니다. 최소 기간은 30초(30s)이고 최대 기간은 120일(120d)입니다.

VM 종료 시간이 있는 인스턴스 템플릿 만들기

특정 시간에 MIG에서 VM을 자동으로 종료하려면 인스턴스 템플릿에서 종료 시간(terminationTime)을 설정합니다. MIG가 VM을 종료할 날짜와 시간을 설정할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 인스턴스 템플릿 페이지로 이동합니다.

    인스턴스 템플릿으로 이동

  2. 인스턴스 템플릿 만들기를 클릭합니다.

  3. 다음과 같이 위치를 선택합니다.

    • 리전 간에 인스턴스 템플릿을 사용하려면 전역을 선택합니다.
    • 리전 간 종속 항목을 줄이려면 리전을 선택합니다.
  4. 리전을 선택했으면 인스턴스 템플릿을 만들 리전을 선택합니다.

  5. 가용성 정책 섹션에서 VM 프로비저닝 모델 고급 설정을 펼칩니다.

  6. 시간 제한 유형 필드에서 날짜 기준을 선택하여 시간 제한을 시간 및 날짜로 지정합니다. 다음 필드에서 날짜 및 시간 선택을 클릭하고 자동 종료 날짜, 시간, 시간대를 선택합니다.

  7. VM 종료 시 목록에서 삭제를 선택합니다.

  8. 다른 필드의 경우 기본값을 수락하거나 필요에 따라 수정합니다.

  9. 만들기를 클릭합니다.

gcloud

instance-templates create 명령어를 사용합니다. 특정 시간에 VM을 자동으로 삭제하려면 다음과 같이 --termination-time 플래그를 포함하고 --instance-termination-action 플래그를 DELETE로 설정합니다.

  gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
      --termination-time=TIME \
      --instance-termination-action=DELETE

다음을 바꿉니다.

  • INSTANCE_TEMPLATE_NAME: 인스턴스 템플릿의 이름입니다.
  • TIME: 이 VM을 자동으로 종료할 시간입니다. 지정한 시간은 최소 30초 이후, 최대 120일 이후여야 합니다. 시간 형식을 RFC 3339 타임스탬프로 지정합니다.

    YYYY-MM-DDTHH:MM:SSOFFSET
    

    다음을 바꿉니다.

    • YYYY-MM-DD: 4자리 연도, 2자리 월, 2자리 일이 하이픈으로 구분된 형식의 날짜입니다.
    • HH:MM:SS: 24시간제의 2자리 시간, 2자리 분, 2자리 초가 콜론으로 구분된 형식의 시간입니다.
    • OFFSET: 협정 세계시(UTC)의 오프셋 형식으로 지정된 시간대입니다. 예를 들어 UTC보다 8시간 빠른 태평양 표준시(PST)를 사용하려면 -08:00을 지정합니다. 또는 오프셋(UTC+0)을 사용하지 않으려면 Z를 지정합니다.

REST

instanceTemplates.insert 메서드를 사용합니다. 특정 시간에 VM을 자동으로 삭제하려면 다음과 같이 terminationTime 필드를 포함하고 instanceTerminationAction 필드를 DELETE로 설정합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default",
        "accessConfigs": [
          {
            "name": "external-IP",
            "type": "ONE_TO_ONE_NAT"
          }
        ]
      }
    ],
    "disks": [
      {
        "type": "PERSISTENT",
        "boot": true,
        "mode": "READ_WRITE",
        "initializeParams":
        {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ]
    "scheduling": {
      "terminationTime": TIME,
      "instanceTerminationAction": "DELETE"
    }
  }
}

다음을 바꿉니다.

  • PROJECT_ID: 인스턴스 템플릿을 만들려는 프로젝트의 ID입니다.
  • INSTANCE_TEMPLATE_NAME: 인스턴스 템플릿의 이름입니다.
  • MACHINE_TYPE: 그룹의 VM에 대해 사전 정의된 머신 유형 또는 커스텀 머신 유형입니다.
  • IMAGE_PROJECT: 이미지가 포함된 이미지 프로젝트입니다(예: debian-cloud).
  • IMAGE 또는 IMAGE_FAMILY: 다음 중 하나를 지정합니다.

    • IMAGE: OS 이미지의 특정 버전입니다(예: debian-10-buster-v20200309).

    • IMAGE_FAMILY: 이미지 계열입니다. 중단되지 않은 최신 OS 이미지를 지정합니다. 예를 들어 family/debian-10을 지정하면 Debian 10 이미지 계열의 최신 버전이 사용됩니다.

  • TIME: 이 VM을 자동으로 종료할 시간입니다. 지정한 시간은 최소 30초 이후, 최대 120일 이후여야 합니다. 시간 형식을 RFC 3339 타임스탬프로 지정합니다.

    YYYY-MM-DDTHH:MM:SSOFFSET
    

    다음을 바꿉니다.

    • YYYY-MM-DD: 4자리 연도, 2자리 월, 2자리 일이 하이픈으로 구분된 형식의 날짜입니다.
    • HH:MM:SS: 24시간제의 2자리 시간, 2자리 분, 2자리 초가 콜론으로 구분된 형식의 시간입니다.
    • OFFSET: 협정 세계시(UTC)의 오프셋 형식으로 지정된 시간대입니다. 예를 들어 UTC보다 8시간 빠른 태평양 표준시(PST)를 사용하려면 -08:00을 지정합니다. 또는 오프셋(UTC+0)을 사용하지 않으려면 Z를 지정합니다.

MIG에서 VM에 대한 시간 제한 작동 방식

MIG에서 VM에 시간 제한을 지정하면 MIG가 VM을 종료하는 시간이 VM의 종료 타임스탬프(terminationTimestamp) 필드에 자동으로 설정됩니다.

지정한 시간 제한 유형에 따라 VM의 종료 타임스탬프가 다음과 같이 설정됩니다.

  • 실행 기간으로서의 시간 제한(maxRunDuration):

    VM의 terminationTimestamp = VM의 최근 생성 또는 시작 시간 + maxRunDuration

    기간을 지정하면 종료 타임스탬프가 VM의 최근 생성 또는 시작 시간을 기준으로 설정됩니다. VM이 다시 생성되거나, 다시 시작되거나, 재개되거나, 대체되면 종료 타임스탬프가 다시 계산됩니다. 종료 타임스탬프는 각 VM이 마지막으로 생성되거나 시작된 시간을 기준으로 MIG의 VM 간에 다를 수 있습니다. 예를 들어 VM이 복구된 경우 복구 중에 VM이 다시 생성된 시간에 기간을 추가하여 VM의 종료 타임스탬프가 다시 계산됩니다.

  • 종료 시간으로서의 시간 제한(terminationTime):

    VM의 terminationTimestamp = terminationTime

    시간을 지정하면 종료 타임스탬프가 해당 시간으로 설정됩니다(시간이 미래인 경우). 종료 시간이 경과하면 VM을 만들거나 다시 시작하거나 대체하려고 시도하는 모든 MIG 작업이 오류와 함께 실패합니다. 이러한 오류를 해결하려면 종료 시간이 미래인 새 인스턴스 템플릿을 만들고 이 템플릿을 MIG에 적용해야 합니다. 새 템플릿에서 기존 템플릿 속성을 사용하려면 기존 템플릿을 기반으로 인스턴스 템플릿을 만듭니다.

VM 새로고침 중에는 종료 타임스탬프가 변경되지 않습니다. 예를 들어 업데이트에 대한 중단 수준REFRESH로 설정하면 MIG가 VM을 업데이트할 때마다 종료 타임스탬프가 유지됩니다.

MIG에서 VM을 일시정지 또는 중지하면 시간 제한 유형과 관계없이 종료 타임스탬프가 자동으로 삭제됩니다. VM을 재개하거나 시작할 때 이 섹션의 앞부분에서 설명한 대로 종료 타임스탬프는 시간 제한 유형에 따라 다시 설정됩니다.

시간 제한이 설정된 경우 자동 확장 작동 방식

자동 확장을 사용하면 MIG가 부하 증가 또는 감소에 따라 자동으로 VM을 추가하거나 삭제할 수 있습니다. MIG가 종료 타임스탬프에 도달한 VM을 삭제하면 MIG는 자동 확장 처리에서 권장 크기를 유지할 새 VM을 만듭니다. 새 VM은 지정된 시간 제한 동안 실행됩니다. 자동 확장 처리 권장사항에서 VM 수를 줄이면 MIG는 시간 제한에 도달하기 전에도 VM을 삭제합니다.

확장 일정을 구성한 경우 VM은 일정이 끝날 때까지 또는 VM이 종료 타임스탬프에 도달할 때까지(둘 중 빠른 시점 적용) 실행됩니다.

다음 단계