VM 인스턴스 시작 및 중지 일정 관리


인스턴스 일정을 사용하면 가상 머신(VM) 인스턴스 시작 및 중지를 자동으로 수행할 수 있습니다. 인스턴스 일정을 사용하려면 시작 및 중지 동작을 상세히 설명하는 리소스 정책을 만든 후 이 정책을 VM 인스턴스 하나 이상에 연결합니다.

VM 인스턴스 배포를 자동화하기 위해 인스턴스 일정을 사용하면 비용을 최적화하고 VM 인스턴스를 보다 효율적으로 관리하는 데 도움을 줄 수 있습니다. 반복되는 워크로드 및 일회성 워크로드 모두 인스턴스 일정을 사용할 수 있습니다. 예를 들어 인스턴스 일정을 사용하여 업무 시간 중에만 VM 인스턴스를 실행하거나 일회성 이벤트를 위해 용량을 제공할 수 있습니다.

VM을 자동으로 예약하는 다른 옵션을 알아보려면 다음 페이지를 참조하세요.

  • 일정을 기준으로 확장: 관리형 인스턴스 그룹(MIG)에서 워크로드를 실행하는 경우 확장 일정을 사용하여 반복 또는 일회성 이벤트에 필요한 가상 머신(VM) 인스턴스 수를 예약할 수 있습니다.

  • VM 실행 시간 제한: 리소스 정책을 만들지 않으려면 특정 시간이나 기간에 도달할 때 VM이 자동으로 중지되거나 삭제되도록 직접 구성할 수 있습니다.

시작하기 전에

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

    이 페이지의 샘플 사용 방법에 대한 탭을 선택하세요.

    콘솔

    Google Cloud 콘솔을 사용하여 Google Cloud 서비스 및 API에 액세스할 때는 인증을 설정할 필요가 없습니다.

    gcloud

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

      gcloud init
    2. 기본 리전 및 영역을 설정합니다.

    REST

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

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

      gcloud init

필요한 역할

인스턴스 일정을 사용하려면 필요한 Identity and Access Management(IAM) 역할을 다음 주 구성원에 부여해야 합니다.

  • 프로젝트의 Compute Engine 서비스 에이전트. 이는 인스턴스 일정을 VM에서 실행하는 데 필요합니다.

    인스턴스 일정을 만든 후 이 권한을 취소하면 예고 없이 인스턴스 일정의 작동이 중지될 수 있습니다. 감사 로그를 정기적으로 확인하여 인스턴스 일정이 성공적으로 실행되었는지 확인해야 합니다.

  • 인스턴스 일정을 만들거나 관리하거나 사용하는 사용자 계정 또는 서비스 계정.

Compute Engine 서비스 에이전트 필수 역할

Compute Engine 서비스 에이전트에 인스턴스 일정을 실행하는 데 필요한 권한이 있는지 확인하려면 관리자에게 Compute Engine 서비스 에이전트에 프로젝트에 대한 Compute 인스턴스 관리자(v1)(roles/compute.instanceAdmin.v1) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 인스턴스 일정을 실행하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

인스턴스 일정을 실행하려면 다음 권한이 필요합니다.

  • compute.instances.start
  • compute.instances.stop

관리자는 Compute Engine 서비스 에이전트에 커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이러한 권한을 부여할 수도 있습니다.

사용자 또는 서비스 계정 필수 역할

개발자나 개발자 서비스 계정에 인스턴스 일정을 만들고 관리하는 데 필요한 권한이 있는지 확인하려면 관리자에게 개발자나 개발자 서비스 계정에 프로젝트 또는 조직에 대한 Compute 인스턴스 관리자(v1)(roles/compute.instanceAdmin.v1) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 인스턴스 일정을 만들고 관리하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

인스턴스 일정을 만들고 관리하려면 다음 권한이 필요합니다.

  • 인스턴스 일정 만들기: compute.resourcePolicies.create
  • 인스턴스 일정 나열: compute.resourcePolicies.list
  • 인스턴스 일정 설명: compute.resourcePolicies.get
  • 인스턴스 일정 삭제: compute.resourcePolicies.delete
  • 새 VM에 인스턴스 일정 연결:
    • compute.instances.create
    • compute.resourcePolicies.use
    • compute.instances.addResourcePolicies
  • 기존 VM에 인스턴스 일정 연결:
    • compute.resourcePolicies.use
    • compute.instances.addResourcePolicies
  • VM에서 인스턴스 일정을 삭제:
    • compute.resourcePolicies.use
    • compute.instances.removeResourcePolicies

관리자는 커스텀 역할이나 다른 사전 정의된 역할을 사용하여 사용자 또는 서비스 계정에 이러한 권한을 부여할 수도 있습니다.

제한사항

  • 인스턴스 일정과 동일한 리전에 있는 VM 인스턴스에만 인스턴스 일정을 연결할 수 있습니다.
  • 인스턴스 일정을 사용하여 로컬 SSD 디스크가 있는 인스턴스를 중지할 수 없습니다.
  • 각 VM 인스턴스는 하나의 인스턴스 일정만 따를 수 있지만 각 인스턴스 일정을 최대 1,000개의 VM 인스턴스에 연결할 수 있습니다.
  • 인스턴스 일정은 용량 보장을 제공하지 않으므로, 예약된 VM 인스턴스에 필요한 리소스를 예약된 시간에 사용할 수 없다면 예약 시 VM 인스턴스가 시작되지 않을 수 있습니다. 용량 보장을 제공하기 위해 시작하기 전 VM 인스턴스를 예약할 수 있지만, 예약은 자동으로 일정을 잡을 수 없습니다.
  • 인스턴스 일정은 지정된 시간에만 VM 인스턴스를 시작하고 중지하지만, 언제든지 VM 인스턴스를 수동으로 시작하고 중지할 수 있습니다. 예를 들어 매일 오전 8시에 시작하여 오후 5시에 중지하는 일정이 있다고 가정합니다. 해당 일정을 오후 4시에 중지된 VM 인스턴스에 연결할 경우 그 전에 VM 인스턴스를 수동으로 시작하지 않는 한 VM 인스턴스는 다음 날 오전 8시까지 시작하지 않습니다.
  • 예약된 VM 인스턴스는 시작 또는 중지 작업 시작까지 최대 15분이 걸릴 수 있습니다. VM 인스턴스를 특정 시간에 시작하거나 중지해야 하는 경우 15분 이른 시간으로 작업을 예약하고 각 작업을 최소 15분 간격으로 예약합니다.
  • 시작 작업과 중지 작업 사이의 간격이 15분 미만이면 스케줄러가 실패할 수 있습니다. 이는 중지 작업이 시작 작업 전에 발생하여 시작 작업이 수행되지 않을 수 있기 때문입니다.
  • 각 인스턴스 일정에서는 시간당 최대 한 개의 시작 작업과 최대 한 개의 중지 작업을 지정할 수 있습니다.
  • 인스턴스 일정은 편집할 수 없습니다. 하나 이상의 VM 인스턴스에 대해 기존 인스턴스 일정을 변경하려면 기존 인스턴스 일정을 삭제한 후 새 인스턴스 일정을 만들고 연결해야 합니다.

인스턴스 일정 관리

Google Cloud Console, Google Cloud CLI, Compute Engine API를 사용하여 인스턴스 일정을 생성, 나열, 기술, 삭제합니다.

인스턴스 일정 만들기

VM 인스턴스를 자동으로 시작하거나 중지할 시간을 기술하는 인스턴스 일정을 만듭니다. 생성된 인스턴스 일정은 VM 인스턴스에서 연결하거나 삭제하여 사용할 수 있는 리소스 정책입니다.

콘솔

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

    VM 인스턴스로 이동

  2. 페이지 상단에 있는 인스턴스 일정 탭을 클릭합니다.

  3. 일정 만들기를 클릭합니다. 일정 만들기 창이 열립니다.

  4. 이름을 입력합니다.

  5. 선택사항: 설명을 입력합니다.

  6. 리전 드롭다운 메뉴에서 이 인스턴스 일정 위치를 선택합니다.

  7. 인스턴스 일정이 시작되고 연결된 VM 인스턴스를 중지할 시기를 정의합니다. VM 인스턴스를 특정 시간에 시작하거나 중지해야 하는 경우 필요한 시간보다 15분 이른 시간으로 작업을 예약합니다. 각 시작 및 중지 작업이 최소 15분 이상 떨어져 있는지 확인합니다.

    기본 시작 시간, 중지 시간, 실행 빈도 필드를 사용하거나 보다 복잡한 일정을 구성하려면 크론 표현식을 사용합니다.

    • 기본 필드:

      1. 시작 시간, 중지 시간 또는 둘 다 입력합니다.
        • 시작 시간 필드에 VM 인스턴스를 시작할 시간을 입력하거나 을 클릭하여 선택합니다.
        • 중지 시간 필드에 VM 인스턴스를 중지할 시간을 입력하거나 을 클릭하여 선택합니다.
      2. 창 하단에 있는 실행 빈도 드롭다운 메뉴에서 시작 시간중지 시간이 반복되는 빈도를 선택합니다.
    • 크론 표현식:

      1. 크론 표현식을 사용 설정하려면 창 상단에 있는 크론 표현식 사용 전환 버튼을 클릭합니다.
      2. 크론 표현식 시작, 크론 표현식 중지 또는 둘 다 입력합니다.
        • 크론 표현식 시작 필드에 VM 인스턴스를 시작할 시기를 설명하는 크론 표현식을 입력합니다.
        • 중지 크론 표현식 필드에 VM 인스턴스를 중지할 시기를 설명하는 크론 표현식을 입력합니다.
  8. 시간대 드롭다운 메뉴에서 시작 시간중지 시간의 시간대를 선택합니다.

  9. 선택사항: 시작 날짜 필드에 이 인스턴스 일정을 시작할 날짜와 시간을 입력하거나 를 클릭하여 선택합니다. 생략하면 일정이 즉시 적용됩니다.

  10. 선택사항: 종료일 필드에 이 인스턴스 일정을 종료할 날짜와 시간을 입력하거나 를 클릭하여 선택합니다. 생략하면 일정이 무제한 적용됩니다.

  11. 제출을 클릭합니다.

gcloud

gcloud CLI를 사용하여 인스턴스 일정을 만들려면 gcloud compute resource-policies create instance-schedule 명령어를 사용합니다.

gcloud compute resource-policies create instance-schedule SCHEDULE_NAME \
    [--description='SCHEDULE_DESCRIPTION'] \
    [--region=REGION] \
    [--vm-start-schedule='START-OPERATION_SCHEDULE'] \
    [--vm-stop-schedule='STOP-OPERATION_SCHEDULE'] \
    [--timezone=TIME_ZONE] \
    [--initiation-date=INITIATION_DATE] \
    [--end-date=END_DATE]

다음을 바꿉니다.

  • SCHEDULE_NAME: 새 인스턴스 일정의 이름입니다.
  • SCHEDULE_DESCRIPTION(선택사항): 새 인스턴스 일정에 대한 설명입니다.
  • REGION(선택사항): 이 인스턴스 일정에 연결할 VM 인스턴스가 있는 리전입니다.
  • 다음 중 하나 이상을 지정합니다.
    • START-OPERATION_SCHEDULE: 연결된 VM 인스턴스가 시작되는 시점을 설명하는 일정으로 크론 표현식으로 지정됩니다. VM 인스턴스를 특정 시간에 시작해야 하는 경우 이 시간보다 15분 이른 시간으로 작업을 예약합니다. 자세한 내용은 시작 작업 일정을 참조하세요.
    • STOP-OPERATION_SCHEDULE: 연결된 VM 인스턴스가 중지되는 시점을 설명하는 일정으로 크론 표현식으로 지정됩니다. VM 인스턴스를 특정 시간에 중지해야 하는 경우 이 시간보다 15분 이른 시간으로 작업을 예약합니다. 자세한 내용은 중지 작업 일정을 참조하세요.
  • TIME_ZONE: 선택사항: 이 인스턴스 일정에 대한 위치 기반 IANA 시간대입니다. 생략하면 기본값 UTC가 사용됩니다. 자세한 내용은 시간대를 참조하세요.
  • INITIATION_DATE: 선택사항: 인스턴스 일정이 적용되는 첫 번째 날짜로, RFC 3339 타임스탬프 형식으로 지정됩니다. 생략하면 일정이 즉시 적용됩니다. 자세한 내용은 시작 날짜를 참조하세요.
  • END_DATE: 선택사항: 인스턴스 일정이 적용되는 마지막 날짜로, RFC 3339 타임스탬프 형식으로 지정됩니다. 생략하면 일정이 무제한 적용됩니다. 자세한 내용은 종료 날짜를 참조하세요.

REST

Compute Engine API를 사용하여 인스턴스 일정을 만들려면 resourcePolicies.insert 메서드를 사용하여 요청을 수행합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies
{
  "name": "SCHEDULE_NAME",
  "description": "SCHEDULE_DESCRIPTION",
  "instanceSchedulePolicy": {
    "vmStartSchedule": {
      "schedule": "START-OPERATION_SCHEDULE"
    },
    "vmStopSchedule": {
      "schedule": "STOP-OPERATION_SCHEDULE"
    },
    "timeZone": "TIME_ZONE",
    "startTime":"INITIATION_DATE",
    "expirationTime":"END_DATE"
  }
}

다음을 바꿉니다.

  • PROJECT: 프로젝트 ID
  • REGION: 이 인스턴스 일정에 연결할 VM 인스턴스가 있는 리전입니다.
  • SCHEDULE_NAME: 새 인스턴스 일정의 이름입니다.
  • SCHEDULE_DESCRIPTION(선택사항): 새 인스턴스 일정에 대한 설명입니다.
  • START-OPERATION_SCHEDULE 또는 STOP-OPERATION_SCHEDULE: 다음 중 하나 이상을 지정합니다.
    • START-OPERATION_SCHEDULE: 연결된 VM 인스턴스가 시작되는 시점을 설명하는 일정으로 크론 표현식으로 지정됩니다. VM 인스턴스를 특정 시간에 시작해야 하는 경우 이 시간보다 15분 이른 시간으로 작업을 예약합니다. 자세한 내용은 시작 작업 일정을 참조하세요.
    • STOP-OPERATION_SCHEDULE: 연결된 VM 인스턴스가 중지되는 시점을 설명하는 일정으로 크론 표현식으로 지정됩니다. VM 인스턴스를 특정 시간에 중지해야 하는 경우 이 시간보다 15분 이른 시간으로 작업을 예약합니다. 자세한 내용은 중지 작업 일정을 참조하세요.
  • TIME_ZONE: 이 인스턴스 일정에 대한 위치 기반 IANA 시간대입니다. 자세한 내용은 시간대를 참조하세요.
  • INITIATION_DATE: 선택사항: 인스턴스 일정이 적용되는 첫 번째 날짜로, RFC 3339 타임스탬프 형식으로 지정됩니다. 생략하면 일정이 즉시 적용됩니다. 자세한 내용은 시작 날짜를 참조하세요.
  • END_DATE: 선택사항: 인스턴스 일정이 적용되는 마지막 날짜로, RFC 3339 타임스탬프 형식으로 지정됩니다. 생략하면 일정이 무제한 적용됩니다. 자세한 내용은 종료 날짜를 참조하세요.

각 인스턴스 일정에는 다음 설정이 포함됩니다.

시작 작업 일정, 중지 작업 일정

인스턴스 일정이 연결된 VM 인스턴스를 시작 및 중지하는 시점을 설명하는 일정입니다. 인스턴스 일정에는 이러한 일정 중 하나가 있을 수도 있고 둘 다 있을 수도 있습니다.

Google Cloud 콘솔을 사용하여 인스턴스 일정을 만들 때 시작 시간, 중지 시간, 빈도를 선택할 수 있습니다. 또는 각 일정의 형식을 크론 표현식으로 지정합니다. gcloud CLI 또는 Compute Engine API를 사용하여 인스턴스 일정을 만들 경우 각 일정의 형식을 크론 표현식으로 지정해야 합니다.

다음 표에서는 크론 표현식의 필드와 각 필드에 지원되는 값을 정의합니다.

시간 요일
0-59 0-23 1-31

29~31일이 해당 월에만 적용됩니다.

1-12 0~6 또는 SUN-SAT(일요일~토요일)

여기서 0=SUN, 1=MON, 6=SAT입니다.

이러한 값 외에도 크론 표현식의 모든 필드에 다음 특수 문자를 사용할 수도 있습니다.
특수문자 의미 예시
* 모두 날짜 필드, 월 필드, 요일 필드가 모두 *로 설정되었으면 일정이 매일 반복됩니다.
- 범위 요일 필드가 MON-FRI(또는 1-5)로 설정되었으면 월요일부터 금요일까지 매주 일정이 반복됩니다.
, list 월 필드가 1-6,8-12로 설정되었으면 7월을 제외한 매월 일정이 반복됩니다.

크론 표현식을 작성할 때 다음 사항을 고려하세요.

  • 공백은 크론 표현식의 필드를 구분하는 데 사용됩니다. 특수문자를 사용하는 필드에는 공백을 추가하지 마세요.
  • 요일과 날짜를 모두 지정한 경우(어떤 필드도 *로 설정되어 있지 않은 경우) 일정은 이러한 값이 교집합이 아닌 합집합을 사용합니다. 예를 들어 0 8 1 * MON 일정은 매주 월요일과 매월 1일 오전 8시에 시작합니다. 이 일정은 월의 첫 번째 날짜가 월요일인 경우에만 오전 8시에 시작하는 것이 아닙니다.
시간대

시작 작업 일정 및 중지 작업 일정에 대한 위치 기반 IANA 시간대입니다. IANA 시간대 데이터베이스사용 가능한 값 목록을 정의합니다. 이 시간대는 시작 작업 및 중지 작업 일정에 대해서만 참조로 사용됩니다. 시작 날짜 및 종료 날짜에는 사용되지 않습니다. 시간대는 gcloud CLI 또는 Compute Engine API를 사용할 경우의 선택사항입니다. 생략하면 기본값 UTC가 사용됩니다.

일부 IANA 시간대는 인스턴스 일정에 영향을 줄 수 있는 일광 절약 시간(DST)을 따릅니다. 건너뛰는 시간의 길이 및 반복되는 시간의 길이뿐만 아니라 DST의 시작 및 종료 시간과 같은 DST 세부정보는 각 시간대에 따라 달라집니다.

시작일, 종료일

인스턴스 일정이 적용되는 기간입니다. 두 값 모두 선택 사항입니다. 이러한 값을 지정하여 일정을 단일 연도로 제한하지 않으면 작업이 매년 반복됩니다.

Google Cloud 콘솔을 사용하여 인스턴스 일정을 만들 때 시작일종료일 필드를 사용하여 날짜, 시간, 시간대를 선택합니다.

gcloud CLI 또는 Compute Engine API를 사용하여 인스턴스 일정을 만들 경우 이러한 값의 형식은 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 시간대)을 사용하지 않으려면 Z를 작성합니다.

인스턴스 일정 나열

프로젝트의 모든 기존 인스턴스 일정을 보려면 인스턴스 일정을 나열합니다.

콘솔

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

    VM 인스턴스로 이동

  2. 페이지 상단에 있는 인스턴스 일정 탭을 클릭합니다. 이 프로젝트의 모든 인스턴스 일정 목록이 표시됩니다.

gcloud

인스턴스 일정을 포함하여 gcloud CLI를 사용해서 모든 리소스 정책 목록을 보려면 gcloud compute resource-policies list 명령어를 사용합니다. 선택적으로 특정 리전으로 결과를 제한하려면 --filter 플래그를 사용합니다.

gcloud compute resource-policies list \
    [--filter="region:(REGION)"]

다음을 바꿉니다.

  • REGION(선택사항): 나열할 인스턴스 일정이 있는 리전입니다.

REST

Compute Engine API를 사용하여 특정 리전에서 인스턴스 일정을 포함한 모든 리소스 정책 목록을 보려면 resourcePolicies.list 메서드를 사용하여 요청합니다.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies

다음을 바꿉니다.

  • PROJECT: 프로젝트 ID
  • REGION: 나열하려는 인스턴스 일정이 있는 리전입니다.

인스턴스 일정 기술

인스턴스에 대한 설명, 시기, 작업과 인스턴스가 연결된 모든 VM 인스턴스 목록을 보려면 인스턴스 일정을 기술합니다.

콘솔

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

    VM 인스턴스로 이동

  2. 페이지 상단에 있는 인스턴스 일정 탭을 클릭합니다. 이 프로젝트의 모든 인스턴스 일정 목록이 표시됩니다.

  3. 설명하려는 인스턴스 일정의 이름을 클릭합니다. 일정의 인스턴스 일정 세부정보 페이지가 열립니다.

gcloud

gcloud CLI를 사용하여 인스턴스 일정을 설명하려면 gcloud compute resource-policies describe 명령어를 사용합니다.

gcloud compute resource-policies describe SCHEDULE_NAME \
    [--region=REGION]

다음을 바꿉니다.

  • SCHEDULE_NAME: 설명하려는 인스턴스 일정의 이름입니다.
  • REGION(선택사항): 인스턴스 일정이 있는 리전입니다.

출력은 다음과 비슷합니다.

...
description: Every Monday to Friday in 2022, start VMs at 8 AM and stop VMs at 5 PM.
...
instanceSchedulePolicy:
 expirationTime: '2022-12-31T23:59:59Z'
 startTime: '2022-01-01T00:00:00Z'
 timeZone: UTC
 vmStartSchedule:
   schedule: 0 8 * * MON-FRI
 vmStopSchedule:
   schedule: 0 17 * * MON-FRI
...
name: example-instance-schedule
region: https://www.googleapis.com/compute/v1/projects/example-project/regions/us-west1
resourceStatus:
 instanceSchedulePolicy:
   nextRunStartTime: '2022-01-03T08:00:00Z'
...
status: READY

REST

Compute Engine API를 사용하여 인스턴스 일정을 기술하려면 resourcePolicies.get 메서드를 사용하여 요청을 수행합니다.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies/SCHEDULE_NAME

다음을 바꿉니다.

  • PROJECT: 프로젝트 ID
  • REGION: 인스턴스 일정이 있는 리전입니다.
  • SCHEDULE_NAME: 설명하려는 인스턴스 일정의 이름입니다.

출력은 다음과 비슷합니다.

{
  ...
  "description": "Every Monday to Friday in 2022, start VMs at 8 AM and stop VMs at 5 PM.",
  "name": "example-instance-schedule",
  "instanceSchedulePolicy": {
    "vmStartSchedule": {
      "schedule": "0 8 * * MON-FRI"
    },
    "vmStopSchedule": {
      "schedule": "0 17 * * MON-FRI"
    },
    "timeZone": "UTC",
    "startTime": "2022-01-01T00:00:00Z",
    "expirationTime": "2022-12-31T23:59:59Z"
  },
  "status": "READY",
  "resourceStatus": {
    "instanceSchedulePolicy": {
      "nextRunStartTime": "2022-01-03T08:00:00Z"
    }
  },
  ...
}

인스턴스 일정 삭제

더 이상 필요하지 않으면 연결된 VM 인스턴스를 삭제하고 리소스 정책을 삭제하여 인스턴스 일정을 삭제합니다.

콘솔

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

    VM 인스턴스로 이동

  2. 페이지 상단에 있는 인스턴스 일정 탭을 클릭합니다. 이 프로젝트의 모든 인스턴스 일정 목록이 표시됩니다.

  3. 삭제할 인스턴스 일정의 체크박스를 선택합니다.

  4. 페이지 상단에 있는 삭제를 클릭합니다. 이 작업을 확인하는 새 대화상자가 열립니다.

  5. 대화상자에서 삭제를 클릭합니다.

gcloud

  1. 이 인스턴스 일정이 VM 인스턴스에 연결되어 있으면 이를 삭제합니다.
    1. 이 일정이 연결된 VM 인스턴스를 확인하려면 인스턴스 일정을 기술합니다.
    2. 이 일정이 연결된 각 VM 인스턴스에 대해 인스턴스 일정을 삭제합니다.
  2. gcloud CLI를 사용하여 인스턴스 일정을 삭제하려면 gcloud compute resource-policies delete 명령어를 사용합니다.

    gcloud compute resource-policies delete SCHEDULE_NAME \
       [--region=REGION]
    

    다음을 바꿉니다.

    • SCHEDULE_NAME: 삭제할 인스턴스 일정의 이름입니다.
    • REGION(선택사항): 인스턴스 일정이 있는 리전입니다.

REST

  1. 이 인스턴스 일정이 VM 인스턴스에 연결되어 있으면 이를 삭제합니다.
    1. 이 일정이 연결된 VM 인스턴스를 확인하려면 인스턴스 일정을 기술합니다.
    2. 이 일정이 연결된 각 VM 인스턴스에 대해 인스턴스 일정을 삭제합니다.
  2. Compute Engine API를 사용하여 인스턴스 일정을 삭제하려면 resourcePolicies.delete 메서드를 사용하여 요청을 수행합니다.

    DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies/SCHEDULE_NAME
    

    다음을 바꿉니다.

    • PROJECT: 프로젝트 ID
    • REGION: 인스턴스 일정이 있는 리전입니다.
    • SCHEDULE_NAME: 삭제할 인스턴스 일정의 이름입니다.

VM 인스턴스에서 인스턴스 일정 사용

인스턴스 일정을 사용하려면 이 일정을 따르려는 하나 이상의 VM 인스턴스에 이를 연결합니다. 인스턴스 일정을 기존 VM 인스턴스에 또는 새 VM 인스턴스를 만들 때 연결할 수 있습니다. VM 인스턴스가 연결된 인스턴스 일정을 따르지 않도록 하려면 해당 VM 인스턴스에서 일정을 삭제합니다.

새 VM 인스턴스를 만들 때 인스턴스 일정 연결

새 VM 인스턴스에 인스턴스 일정을 연결하려면 사용하는 인스턴스 일정과 동일한 리전에서 VM 인스턴스를 만들어야 합니다. VM 인스턴스 만들기에 대해 자세히 알아보세요.

콘솔

Google Cloud 콘솔을 사용하여 인스턴스를 만드는 동안에는 인스턴스 일정을 연결할 수 없습니다. Google Cloud 콘솔을 사용하여 인스턴스 일정을 새 VM 인스턴스에 연결하려면 먼저 VM 인스턴스를 만든 후VM 인스턴스에 연결합니다.

gcloud

gcloud CLI를 사용하여 VM 인스턴스에 인스턴스 일정을 연결하려면 --resource-policies 플래그와 함께 gcloud compute instances create 명령어를 사용합니다. 예를 들어 연결된 인스턴스 일정으로 공개 이미지에서 VM 인스턴스를 만들려면 다음 명령어를 사용합니다.

gcloud compute instances create VM_NAME \
    --resource-policies=SCHEDULE_NAME \
    [--zone=ZONE] \
    [--image IMAGE | --image-family IMAGE_FAMILY] \
    [--image-project IMAGE_PROJECT]

다음을 바꿉니다.

  • VM_NAME: 인스턴스 일정을 연결할 VM 인스턴스의 이름입니다.
  • SCHEDULE_NAME: 연결하려는 인스턴스 일정의 이름입니다.
  • ZONE(선택사항): VM 인스턴스가 있는 영역입니다.
  • 선택사항: 공개 이미지에서 VM 인스턴스를 만듭니다.
    • IMAGE 또는 IMAGE_FAMILY: 다음 중 하나를 지정합니다.
    • IMAGE: 공개 이미지의 필수 버전입니다. 예를 들면 --image debian-10-buster-v20200309입니다.
    • IMAGE_FAMILY: 이미지 계열입니다. 이렇게 하면 지원 중단되지 않은 최신 OS 이미지를 사용하여 VM이 생성됩니다. 예를 들어 --image-family debian-10을 지정하면 Compute Engine이 Debian 10 이미지 계열에서 최신 버전의 OS 이미지를 사용하여 VM을 만듭니다.
    • IMAGE_PROJECT: 이미지가 포함된 프로젝트입니다.

REST

Compute Engine API를 사용하여 VM 인스턴스에 인스턴스 일정을 연결하려면 instances.insert 메서드를 사용하여 요청을 수행하고 resourcePolicies 속성을 포함합니다. 예를 들어 연결된 인스턴스 일정으로 공개 이미지에서 VM 인스턴스를 만들려면 다음 요청을 수행합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "resourcePolicies": [
    "https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies/SCHEDULE_NAME"
  ]
}

다음을 바꿉니다.

  • PROJECT_ID: VM을 만들 프로젝트의 ID입니다.
  • ZONE: VM을 만들 영역입니다.
  • MACHINE_TYPE_ZONE: 새 VM에 사용할 머신 유형이 포함된 영역입니다.
  • MACHINE_TYPE: 새 VM의 머신 유형(사전 정의 또는 커스텀)입니다.
  • VM_NAME: 새 VM의 이름입니다.
  • 선택사항: 공개 이미지에서 VM 인스턴스를 만듭니다.
    • IMAGE_PROJECT: 이미지가 포함된 프로젝트입니다. 예를 들어 family/debian-10을 이미지 계열로 지정하면 debian-cloud를 이미지 프로젝트로 지정합니다.
    • IMAGE 또는 IMAGE_FAMILY: 다음 중 하나를 지정합니다.
    • IMAGE: 공개 이미지의 필수 버전입니다. 예를 들면 "sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"입니다.
    • IMAGE_FAMILY: 이미지 계열입니다. 이렇게 하면 지원 중단되지 않은 최신 OS 이미지를 사용하여 VM이 생성됩니다. 예를 들어 "sourceImage": "projects/debian-cloud/global/images/family/debian-10"을 지정하면 Compute Engine이 Debian 10 이미지 계열에서 최신 버전의 OS 이미지를 사용하여 VM을 만듭니다.
  • REGION: 인스턴스 일정이 있는 리전입니다.
  • SCHEDULE_NAME: 연결하려는 인스턴스 일정의 이름입니다.

인스턴스 일정 리소스 정책 및 연결된 VM 인스턴스에 대해 감사 로그를 확인하여 인스턴스 일정이 성공적으로 실행되는지 확인할 수 있습니다. 각 작업에 대해 일정이 잡힌 시간 후 최대 15분까지 기다려야 할 수 있습니다.

기존 VM 인스턴스에 인스턴스 일정 연결

인스턴스 일정과 동일한 리전에 있는 기존 VM 인스턴스에 인스턴스 일정을 연결할 수 있습니다.

콘솔

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

    VM 인스턴스로 이동

  2. 페이지 상단에 있는 인스턴스 일정 탭을 클릭합니다. 이 프로젝트의 모든 인스턴스 일정 목록이 표시됩니다.

  3. 연결할 인스턴스 일정의 이름을 클릭합니다. 인스턴스 일정 세부정보 페이지가 열립니다.

  4. 일정에 인스턴스 추가를 클릭합니다. 일정에 인스턴스 추가 창이 열립니다.

  5. 이 일정을 연결할 각 VM 인스턴스의 체크박스를 선택합니다.

  6. Add(추가)를 클릭합니다.

gcloud

gcloud CLI를 사용하여 VM 인스턴스에 인스턴스 일정을 연결하려면 gcloud compute instances add-resource-policies 명령어를 사용합니다.

gcloud compute instances add-resource-policies VM_NAME \
    --resource-policies=SCHEDULE_NAME \
    [--zone=ZONE]

다음을 바꿉니다.

  • VM_NAME: 인스턴스 일정을 연결할 VM 인스턴스의 이름입니다.
  • SCHEDULE_NAME: 연결하려는 인스턴스 일정의 이름입니다.
  • ZONE(선택사항): VM 인스턴스가 있는 영역입니다.

REST

Compute Engine API를 사용하여 VM 인스턴스에 인스턴스 일정을 연결하려면 instances.addResourcePolicies 메서드를 사용하여 요청을 수행합니다.

POST https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances/VM_NAME/addResourcePolicies
{
  "resourcePolicies": "https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies/SCHEDULE_NAME"
}

다음을 바꿉니다.

  • PROJECT: 프로젝트 ID
  • ZONE: VM 인스턴스가 있는 영역입니다.
  • VM_NAME: 인스턴스 일정을 연결할 VM 인스턴스의 이름입니다.
  • REGION: 인스턴스 일정이 있는 리전입니다.
  • SCHEDULE_NAME: 연결하려는 인스턴스 일정의 이름입니다.

인스턴스 일정 리소스 정책 및 연결된 VM 인스턴스에 대해 감사 로그를 확인하여 인스턴스 일정이 성공적으로 실행되는지 확인할 수 있습니다. 각 작업에 대해 일정이 잡힌 시간 후 최대 15분까지 기다려야 할 수 있습니다.

VM 인스턴스에서 인스턴스 일정 삭제

VM 인스턴스가 인스턴스 일정을 따르지 않도록 하려면 해당 VM 인스턴스에서 일정을 삭제합니다.

콘솔

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

    VM 인스턴스로 이동

  2. 페이지 상단에 있는 인스턴스 일정 탭을 클릭합니다. 이 프로젝트의 모든 인스턴스 일정 목록이 표시됩니다.

  3. 삭제할 인스턴스 일정의 이름을 클릭합니다. 인스턴스 일정 세부정보 페이지가 열립니다.

  4. 연결된 인스턴스 섹션에서 이 일정에서 제거할 각 VM 인스턴스의 체크박스를 선택합니다.

  5. 일정에서 인스턴스 삭제를 클릭합니다. 이 작업을 확인하는 새 대화상자가 열립니다.

  6. 대화상자에서 삭제를 클릭합니다.

gcloud

gcloud CLI를 사용하여 VM 인스턴스에서 인스턴스 일정을 삭제하려면 gcloud compute instances remove-resource-policies 명령어를 사용합니다.

gcloud compute instances remove-resource-policies VM_NAME \
    --resource-policies=SCHEDULE_NAME \
    [--zone=ZONE]

다음을 바꿉니다.

  • VM_NAME: 인스턴스 일정을 삭제하려는 VM 인스턴스의 이름입니다.
  • SCHEDULE_NAME: 삭제할 인스턴스 일정의 이름입니다.
  • ZONE(선택사항): VM 인스턴스가 있는 영역입니다.

REST

Compute Engine API를 사용하여 VM 인스턴스에서 인스턴스 일정을 삭제하려면 instances.removeResourcePolicies 메서드를 사용하여 요청을 수행합니다.

POST https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances/VM_NAME/removeResourcePolicies
{
  "resourcePolicies": "https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies/SCHEDULE_NAME"
}

다음을 바꿉니다.

  • PROJECT: 프로젝트 ID
  • ZONE: VM 인스턴스가 있는 영역입니다.
  • VM_NAME: 인스턴스 일정을 삭제하려는 VM 인스턴스의 이름입니다.
  • REGION: 인스턴스 일정이 있는 리전입니다.
  • SCHEDULE_NAME: 삭제할 인스턴스 일정의 이름입니다.

다음 단계