Compute Engine 인스턴스 종료 시간 단축


이 문서에서는 중지 또는 삭제 시 게스트 OS 종료를 건너뛰도록 인스턴스를 구성하여 Compute Engine 인스턴스의 종료 시간을 줄이는 방법을 설명합니다.

중지 또는 삭제 시 게스트 OS 종료를 건너뛰도록 인스턴스를 구성하면 인스턴스 상태가 STOPPING로 변경될 때 Compute Engine에서 즉시 게스트 OS를 종료합니다. 이 작업을 사용하면 인스턴스 중지 또는 삭제 속도를 높여 할당량 또는 리소스를 더 빠르게 해제할 수 있습니다. 완전한 게스트 OS 종료의 기본 간격을 비롯하여 중지 또는 삭제 중에 인스턴스가 거치는 단계에 대해 자세히 알아보려면 중지 작업을 참고하세요.

시작하기 전에

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

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

    gcloud

    1. Google Cloud CLI를 설치합니다. 설치 후 다음 명령어를 실행하여 Google Cloud CLI를 초기화합니다.

      gcloud init

      외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

    2. Set a default region and zone.

    REST

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

      Google Cloud CLI를 설치합니다. 설치 후 다음 명령어를 실행하여 Google Cloud CLI를 초기화합니다.

      gcloud init

      외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

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

필요한 역할

게스트 OS 종료를 건너뛰도록 인스턴스를 구성하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 Compute 인스턴스 관리자 (v1) (roles/compute.instanceAdmin.v1) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 게스트 OS 종료를 건너뛰도록 인스턴스를 구성하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

게스트 OS 종료를 건너뛰도록 인스턴스를 구성하려면 다음 권한이 필요합니다.

  • 인스턴스를 만들려면 다음 안내를 따르세요.
    • 프로젝트에 대한 compute.instances.create 권한
    • 커스텀 이미지를 사용하여 VM 만들기: 이미지에 대한 compute.images.useReadOnly 권한
    • 스냅샷을 사용하여 VM 만들기: 스냅샷에 대한 compute.snapshots.useReadOnly 권한
    • 인스턴스 템플릿을 사용하여 VM 만들기: 인스턴스 템플릿에 대한 compute.instanceTemplates.useReadOnly 권한
    • VM에 기존 네트워크 할당: 프로젝트에 대한 compute.networks.use 권한
    • VM의 고정 IP 주소 지정: 프로젝트에 대한 compute.addresses.use 권한
    • 기존 네트워크 사용 시 VM에 외부 IP 주소 할당: 프로젝트에 대한 compute.networks.useExternalIp 권한
    • VM의 서브넷 지정: 프로젝트 또는 선택한 서브넷에 대한 compute.subnetworks.use 권한
    • VPC 네트워크를 사용할 때 VM에 외부 IP 주소 할당: 프로젝트 또는 선택한 서브넷에 대한 compute.subnetworks.useExternalIp 권한
    • VM에 VM 인스턴스 메타데이터 설정: 프로젝트에 대한 compute.instances.setMetadata 권한
    • VM에 태그 설정: VM에 대한 compute.instances.setTags 권한
    • VM에 라벨 설정: VM에 대한 compute.instances.setLabels 권한
    • VM에 사용할 서비스 계정 설정: VM에 대한 compute.instances.setServiceAccount 권한
    • VM의 새 디스크 만들기: 프로젝트에 대한 compute.disks.create 권한
    • 기존 디스크를 읽기 전용 또는 읽기-쓰기 모드로 연결: 디스크에 대한 compute.disks.use 권한
    • 기존 디스크를 읽기 전용 모드로 연결: 디스크에 대한 compute.disks.useReadOnly 권한
  • 인스턴스 템플릿 만들기: 프로젝트에 대한 compute.instanceTemplates.create 권한
  • 인스턴스를 업데이트하려면 인스턴스에서 compute.instances.update를 실행합니다.

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

게스트 OS 종료를 건너뛰도록 인스턴스 구성

인스턴스를 중지하거나 삭제할 때 게스트 OS 종료를 건너뛰도록 컴퓨팅 인스턴스를 구성하려면 다음 방법 중 하나를 사용하세요.

기존 인스턴스에서 게스트 OS 종료 구성

인스턴스가 중지된 경우 (TERMINATED)에만 게스트 OS 종료를 건너뛰도록 컴퓨팅 인스턴스를 구성할 수 있습니다.

게스트 OS 종료를 건너뛰도록 인스턴스를 구성하려면 다음 옵션 중 하나를 선택합니다.

gcloud

  1. 아직 인스턴스를 중지하지 않았다면 인스턴스를 중지합니다.

  2. 게스트 OS 종료를 건너뛰도록 인스턴스를 구성하려면 --skip-guest-os-shutdown 플래그와 함께 gcloud beta compute instances set-scheduling 명령어를 사용합니다.

    gcloud beta compute instances set-scheduling INSTANCE_NAME \
        --skip-guest-os-shutdown \
        --zone=ZONE
    

    다음을 바꿉니다.

    • INSTANCE_NAME: 인스턴스 이름

    • ZONE: 인스턴스가 있는 영역

REST

  1. 아직 인스턴스를 중지하지 않았다면 인스턴스를 중지합니다.

  2. 게스트 OS 종료를 건너뛰도록 인스턴스를 구성하려면 POST 요청을 베타 instances.setScheduling 메서드에 보냅니다. 요청 본문에 skipGuestOsShutdown 필드를 포함하고 true으로 설정합니다.

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/setScheduling
    
    {
      "skipGuestOsShutdown": true
    }
    

인스턴스를 업데이트하는 방법에 대한 자세한 내용은 인스턴스 속성 업데이트를 참고하세요.

인스턴스를 생성하는 동안 게스트 OS 종료 구성

게스트 OS 종료를 건너뛰도록 구성된 컴퓨팅 인스턴스를 만들려면 다음 옵션 중 하나를 선택합니다.

gcloud

게스트 OS 종료를 건너뛰도록 구성된 인스턴스를 만들려면 --skip-guest-os-shutdown 플래그와 함께 gcloud compute instances create 명령어를 사용합니다.

gcloud compute instances create INSTANCE_NAME \
    --machine-type=MACHINE_TYPE \
    --skip-guest-os-shutdown \
    --zone=ZONE

다음을 바꿉니다.

  • INSTANCE_NAME: 인스턴스 이름

  • MACHINE_TYPE: 인스턴스에 사용할 머신 유형

  • ZONE: 인스턴스를 만들 영역입니다.

REST

게스트 OS 종료를 건너뛰도록 구성된 인스턴스를 만들려면 instances.insert 메서드POST 요청을 보냅니다. 요청 본문에 true로 설정된 skipGuestOsShutdown 필드를 포함합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "INSTANCE_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "scheduling": {
    "skipGuestOsShutdown": true
  }
}

다음을 바꿉니다.

  • PROJECT_ID: 인스턴스를 만들려는 프로젝트의 ID입니다.

  • ZONE: 인스턴스를 만들 영역입니다.

  • INSTANCE_NAME: 인스턴스 이름입니다.

  • MACHINE_TYPE: 인스턴스에 사용할 머신 유형

  • IMAGE_PROJECT: 이미지가 포함된 이미지 프로젝트입니다(예: debian-cloud). 지원되는 이미지 프로젝트에 대한 자세한 내용은 공개 이미지를 참조하세요.

  • IMAGE: 다음 중 하나를 지정합니다.

    • OS 이미지의 특정 버전입니다(예: debian-12-bookworm-v20240617).

    • 이미지 계열이며 형식은 family/IMAGE_FAMILY여야 합니다. 이 값은 지원 중단되지 않은 최신 OS 이미지를 지정합니다. 예를 들어 family/debian-12를 지정하면 Compute Engine에서 Debian 12 이미지 계열의 최신 버전을 사용합니다. 이미지 계열 사용 방법에 대한 자세한 내용은 이미지 계열 권장사항을 참고하세요.

인스턴스를 만드는 방법에 관한 자세한 내용은 Compute Engine 인스턴스 만들기 및 시작을 참고하세요.

인스턴스를 일괄 생성하는 동안 게스트 OS 종료 구성

게스트 OS 종료를 건너뛰도록 구성된 컴퓨팅 인스턴스를 일괄로 만들려면 다음 옵션 중 하나를 선택합니다.

gcloud

게스트 OS 종료를 건너뛰도록 구성된 인스턴스를 일괄로 만들려면 --skip-guest-os-shutdown 플래그와 함께 gcloud compute instances bulk create 명령어를 사용합니다.

예를 들어 단일 영역에서 이름 패턴을 사용하는 인스턴스를 일괄로 만들려면 다음 명령어를 실행합니다.

gcloud compute instances bulk create \
    --count=COUNT \
    --machine-type=MACHINE_TYPE \
    --name-pattern="NAME_PATTERN" \
    --skip-guest-os-shutdown \
    --zone=ZONE

다음을 바꿉니다.

  • COUNT: 만들 인스턴스 수입니다.

  • MACHINE_TYPE: 인스턴스에 사용할 머신 유형입니다.

  • NAME_PATTERN: 인스턴스의 이름 패턴입니다. 인스턴스 이름에서 일련의 숫자를 바꾸려면 해시(#) 문자 시퀀스를 사용합니다. 예를 들어 instance-#을 이름 패턴으로 사용하면 Compute Engine에서 instance-1, instance-2로 시작하는 이름의 인스턴스를 생성하고 COUNT에 지정된 인스턴스 수까지 이 증분 패턴을 계속합니다.

  • ZONE: 인스턴스를 만들 영역입니다.

REST

게스트 OS 종료를 건너뛰도록 구성된 인스턴스를 일괄로 만들려면 instances.bulkInsert 메서드POST 요청을 보냅니다. 요청 본문에 true로 설정된 skipGuestOsShutdown 필드를 포함합니다.

예를 들어 단일 영역에서 이름 패턴을 사용하는 인스턴스를 일괄로 만들려면 다음과 같이 POST 요청을 수행합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert

{
  "count": COUNT,
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "scheduling": {
      "skipGuestOsShutdown": true
    }
  }
}

다음을 바꿉니다.

  • PROJECT_ID: 인스턴스를 일괄로 만들려는 프로젝트의 ID입니다.

  • ZONE: 인스턴스를 만들 영역입니다.

  • COUNT: 만들 인스턴스 수입니다.

  • NAME_PATTERN: 인스턴스 이름 패턴. 인스턴스 이름에서 일련의 숫자를 바꾸려면 해시(#) 문자 시퀀스를 사용합니다. 예를 들어 instance-#을 이름 패턴으로 사용하면 Compute Engine에서 instance-1, instance-2로 시작하는 이름의 인스턴스를 생성하고 COUNT에 지정된 인스턴스 수까지 이 증분 패턴을 계속합니다.

  • MACHINE_TYPE: 인스턴스에 사용할 머신 유형입니다.

  • IMAGE_PROJECT: 이미지가 포함된 이미지 프로젝트입니다(예: debian-cloud). 지원되는 이미지 프로젝트에 대한 자세한 내용은 공개 이미지를 참조하세요.

  • IMAGE: 다음 중 하나를 지정합니다.

    • OS 이미지의 특정 버전입니다(예: debian-12-bookworm-v20240617).

    • 이미지 계열이며 형식은 family/IMAGE_FAMILY여야 합니다. 이 값은 지원 중단되지 않은 최신 OS 이미지를 지정합니다. 예를 들어 family/debian-12를 지정하면 Compute Engine에서 Debian 12 이미지 계열의 최신 버전을 사용합니다. 이미지 계열 사용 방법에 대한 자세한 내용은 이미지 계열 권장사항을 참고하세요.

인스턴스를 일괄로 만드는 방법에 대한 자세한 내용은 인스턴스를 일괄로 만들기를 참고하세요.

인스턴스 템플릿을 만드는 동안 게스트 OS 종료 구성

컴퓨팅 인스턴스를 중지하거나 삭제할 때 게스트 OS 종료를 건너뛰도록 구성된 인스턴스 템플릿을 만든 후에는 인스턴스 템플릿을 사용하여 다음을 수행할 수 있습니다.

게스트 OS 종료를 건너뛰도록 구성된 인스턴스 템플릿을 만들려면 다음 옵션 중 하나를 선택합니다.

gcloud

게스트 OS 종료를 건너뛰도록 구성된 인스턴스 템플릿을 만들려면 --skip-guest-os-shutdown 플래그와 함께 gcloud compute instance-templates create 명령어를 사용합니다.

예를 들어 게스트 OS 종료를 건너뛰도록 지정하는 리전 인스턴스 템플릿을 만들려면 다음 명령어를 실행합니다. 전역 인스턴스 템플릿을 만들려면 --instance-template-region 플래그 없이 같은 명령어를 사용합니다.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --instance-template-region=REGION \
    --machine-type=MACHINE_TYPE \
    --skip-guest-os-shutdown

다음을 바꿉니다.

  • INSTANCE_TEMPLATE_NAME: 인스턴스 템플릿의 이름입니다.

  • REGION: 인스턴스 템플릿을 만들 리전입니다.

  • MACHINE_TYPE: 인스턴스 템플릿에 지정할 머신 유형입니다.

REST

게스트 OS 종료를 건너뛰도록 구성된 인스턴스 템플릿을 만들려면 POST 요청을 다음 메서드 중 하나에 보냅니다.

요청 본문에 true으로 설정된 skipGuestOsShutdown 필드를 포함합니다.

예를 들어 게스트 OS 종료를 건너뛰도록 지정하는 리전 인스턴스 템플릿을 만들려면 다음과 같이 POST 요청을 수행합니다.

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

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "scheduling": {
      "skipGuestOsShutdown": true
    }
  }
}

다음을 바꿉니다.

  • PROJECT_ID: 인스턴스 템플릿을 만들려는 프로젝트의 ID입니다.

  • REGION: 인스턴스 템플릿을 만들 리전입니다.

  • INSTANCE_TEMPLATE_NAME: 인스턴스 템플릿의 이름입니다.

  • IMAGE_PROJECT: 이미지가 포함된 이미지 프로젝트(예: debian-cloud). 지원되는 이미지 프로젝트에 대한 자세한 내용은 공개 이미지를 참조하세요.

  • IMAGE: 다음 중 하나를 지정합니다.

    • OS 이미지의 특정 버전입니다(예: debian-12-bookworm-v20240617).

    • 이미지 계열이며 형식은 family/IMAGE_FAMILY여야 합니다. 중단되지 않은 최신 OS 이미지를 지정합니다. 예를 들어 family/debian-12를 지정하면 Debian 12 이미지 계열의 최신 버전이 사용됩니다. 이미지 계열 사용에 대한 자세한 내용은 이미지 계열 권장사항을 참조하세요.

  • MACHINE_TYPE: 인스턴스 템플릿에 지정할 머신 유형입니다.

인스턴스 템플릿 만들기에 대한 자세한 내용은 인스턴스 템플릿 만들기를 참조하세요.

게스트 OS 종료 설정 보기

컴퓨팅 인스턴스를 중지하거나 삭제할 때 Compute Engine에서 게스트 OS 종료를 건너뛰는지 확인할 수 있습니다.

인스턴스에서 게스트 OS 종료 시간을 보려면 다음 옵션 중 하나를 선택합니다.

gcloud

인스턴스의 세부정보와 게스트 OS 종료를 건너뛰는지 여부를 확인하려면 gcloud compute instances describe 명령어를 사용합니다.

gcloud compute instances describe INSTANCE_NAME \
    --zone=ZONE

다음을 바꿉니다.

  • INSTANCE_NAME: 인스턴스 이름

  • ZONE: 인스턴스가 있는 영역

게스트 OS 종료를 건너뛰도록 인스턴스를 구성한 경우 출력에는 다음 예와 같이 true로 설정된 skipGuestOsShutdown 필드가 포함됩니다.

...
scheduling:
  automaticRestart: true
  skipGuestOsShutdown: true
  onHostMaintenance: MIGRATE
  preemptible: false
  provisioningModel: STANDARD
...

그렇지 않고 skipGuestOsShutdown 필드가 누락되었거나 false로 설정된 경우 게스트 OS는 기본 종료 시간을 사용합니다.

REST

인스턴스의 세부정보와 게스트 OS 종료를 건너뛰는지 여부를 확인하려면 instances.get 메서드GET 요청을 수행합니다.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME

다음을 바꿉니다.

  • PROJECT_ID: 인스턴스가 있는 프로젝트의 ID입니다.

  • ZONE: 인스턴스가 있는 영역

  • INSTANCE_NAME: 인스턴스 이름입니다.

게스트 OS 종료를 건너뛰도록 인스턴스를 구성한 경우 출력에는 다음 예와 같이 true로 설정된 skipGuestOsShutdown 필드가 포함됩니다.

{
  ...
  "scheduling": {
    "automaticRestart": true,
    "skipGuestOsShutdown": true,
    "onHostMaintenance": "MIGRATE",
    "preemptible": false,
    "provisioningModel": "STANDARD"
  },
  ...
}

그렇지 않고 skipGuestOsShutdown 필드가 누락되었거나 false로 설정된 경우 게스트 OS는 기본 종료 시간을 사용합니다.

다음 단계