유휴 VM 권장사항 보기 및 적용


이 페이지에서는 유휴 VM 권장사항을 사용해서 유휴 VM 인스턴스를 식별 및 중지하여 리소스 낭비를 줄이고 프로젝트에 대한 컴퓨팅 청구를 줄이는 방법에 대해 설명합니다.

시작하기 전에

  • 제한사항을 검토하여 VM이 유휴 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 사용 인증을 참조하세요.

가격 책정

유휴 VM 권장사항은 무료로 제공됩니다. 리소스 사용량 감소를 위한 권장사항을 사용하면 비용을 절약할 수 있습니다.

유휴 VM 인스턴스 권장사항 보기

유휴 VM에 대한 권장사항을 보려면 gcloud CLI나 REST를 사용합니다.

gcloud

gcloud recommender recommendations list 명령어--recommender=google.compute.instance.IdleResourceRecommender와 함께 사용합니다.

gcloud recommender recommendations list \
  --project=PROJECT_ID \
  --location=ZONE \
  --recommender=google.compute.instance.IdleResourceRecommender \
  --format=yaml

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 ID
  • ZONE: 권장사항을 나열할 인스턴스가 포함된 영역

예를 들면 다음과 같습니다.

gcloud recommender recommendations list \
  --project=my-project \
  --location=us-central1-c \
  --recommender=google.compute.instance.IdleResourceRecommender \
  --format=yaml

해당 위치에 유휴 VM이 없으면 응답은 비어 있습니다. 그렇지 않으면 응답에는 각 권장사항에 대한 다음 필드가 포함됩니다.


---
content:
...
operationGroups:
- operations:
  - action: test
    path: /status
    resource: //compute.googleapis.com/projects/my-project/zones/us-central1-c/instances/vm-name
    resourceType: compute.googleapis.com/Instance
    value: RUNNING
  - action: replace
    path: /status
    resource: //compute.googleapis.com/projects/my-project/zones/us-central1-c/instances/vm-name
    resourceType: compute.googleapis.com/Instance
    value: TERMINATED
description: Save cost by stopping Idle VM 'vm-name'.
etag: '"83da314c23f634e1"'
lastRefreshTime: '2020-02-24T07:56:40Z'
name: projects/141732092341/locations/us-central1-c/recommenders/google.compute.instance.IdleResourceRecommender/recommendations/0e061a3a-f921-4216-b1b4-62e16942cd1a
primaryImpact:
category: COST
costProjection:
  cost:
    currencyCode: USD
    nanos: -91533961
    units: '-262'
  duration: 2592000s
recommenderSubtype: STOP_VM
stateInfo:
state: ACTIVE

gcloud 예시에서 gcloud를 사용하여 권장사항 작업 수행에 대해 자세히 알아보세요.

REST

recommendations.list 메서드를 호출하고 다음 권장 유형을 사용합니다.

  • google.compute.instance.IdleResourceRecommender

API 호출은 다음과 같습니다.

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/recommenders/google.compute.instance.IdleResourceRecommender/recommendations

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 ID입니다.
  • ZONE: 권장사항을 나열할 인스턴스가 포함된 영역

다음 예시에서는 curl 및 관련 샘플 응답을 사용하여 요청을 보내는 방법을 보여줍니다.

PROJECT_ID=my-project
ZONE=us-central1-c
RECOMMENDER_ID=google.compute.instance.IdleResourceRecommender

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "x-goog-user-project: $PROJECT_ID" \
  https://recommender.googleapis.com/v1/projects/$PROJECT_ID/locations/$ZONE/recommenders/$RECOMMENDER_ID/recommendations

유휴 VM 권장사항에 대한 JSON 응답의 예시

{
"description" : "Save cost by stopping Idle VM `vm-name`",
"name": "projects/1574864402/locations/us-central1-c/recommenders/"
        "google.compute.instance.IdleResourceRecommender/"
        "recommendations/0fd31b24-cc05-4132-8431-ed54a22dd4f1",
"lastRefreshTime": {
  "seconds": 1543912652
},
"primaryImpact": {
  "category": COST,
  "costProjection": {
    "cost": {"currencyCode": "USD", "units": -50},
    "duration": { "seconds": 2592000 }
  }
},
"stateInfo": ACTIVE,
"content":
  "groups" : [
    {
      "operations" : [
      {
        "action": "test",
        "resourceType": "compute.googleapis.com/Instance",
        "resource": "//compute.googleapis.com/projects/my-project/"
                    "zones/us-central1-c/instances/vm-name",
        "path": "/status",
        "value": "RUNNING"
      },
      {
        "action": "replace",
        "resourceType": "compute.googleapis.com/Instance",
        "resource": "//compute.googleapis.com/projects/my-project/"
                    "zones/us-central1-c/instances/vm-name",
        "path": "/status",
        "value": "TERMINATED"
      }
      ]
    }
  ]
},
"etag" : "cb0e6ac2cfc0b591"
}

각 필드에 대한 자세한 내용은 Recommender API 참고 리소스를 참조하세요.

권장사항 응답 해석

gcloud CLI 또는 REST를 통해 수신하는 각 권장사항에는 순차적으로 수행하여 권장사항을 적용할 수 있는 작업으로 구성된 작업 그룹이 포함됩니다. 유휴 VM 권장사항 작업 그룹에는 다음과 같은 두 가지 작업이 포함됩니다.

  1. VM의 현재 status 확인을 위한 테스트 작업. 예를 들면 다음과 같습니다.

     {
       "action": "test",
       "resourceType": "compute.googleapis.com/Instance",
       "resource" : "//compute.googleapis.com/projects/my-project/zones/us-central1-c/instances/vm-name",
       "path": "/status",
       "value": "RUNNING"
     }
    
  2. VM의 status 변경을 위한 바꾸기 작업. 예를 들면 다음과 같습니다.

     {
       "action": "replace",
       "resourceType": "compute.googleapis.com/Instance",
       "resource" : "//compute.googleapis.com/projects/my-project/zones/us-central1-c/instances/vm-name",
       "path": "/status",
       "value": "TERMINATED"
     }
    

첫 번째 작업은 test입니다. 즉, resource가 여전히 RUNNING 상태인지 테스트해야 합니다. VM 상태를 확인하면 됩니다.

두 번째 작업은 replace입니다. 리소스의 status를 새 값인 TERMINATED으로 바꿔야 합니다. 아래 설명에 따라 VM을 중지하면 됩니다.

유휴 VM 권장사항 적용

유휴 VM 권장사항을 수신한 후 인스턴스가 더 이상 필요하지 않은 경우에는 Google Cloud 콘솔, gcloud CLI 또는 REST를 사용하여 인스턴스를 중지하고 선택적으로 삭제합니다.

인스턴스와 해당 디스크를 중지하되 삭제하지 않으면 디스크 비용이 계속 청구됩니다.

콘솔

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

    VM 인스턴스 페이지로 이동

  2. 중지할 인스턴스를 선택합니다.
  3. 중지를 클릭합니다.

gcloud

instances stop 명령어를 사용하고 중지할 VM_NAME를 지정합니다.

gcloud compute instances stop VM_NAME --zone=ZONE

다음을 바꿉니다.

  • VM_NAME: 중지할 VM 인스턴스의 이름
  • ZONE: 중지할 인스턴스가 포함된 영역

REST

인스턴스 중지를 위한 POST 요청을 작성합니다.

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

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 ID
  • ZONE: 중지할 인스턴스가 포함된 영역
  • VM_NAME: 중지할 VM 인스턴스의 이름

VM 인스턴스와 해당 디스크를 삭제할 수 있다고 확신하는 경우 인스턴스를 삭제할 수 있습니다.

다음 단계