VM 관리형 인스턴스 그룹 크기 추천자

VM 인스턴스 그룹 크기 추천자를 사용하면 Compute Engine 가상 머신 관리형 인스턴스의 리소스 사용률을 최적화할 수 있습니다. 권장사항은 Cloud Monitoring 서비스가 이전 8일 동안 수집한 시스템 측정항목 또는 측정항목을 기반으로 자동 생성됩니다. 이 권장사항을 사용하면 그룹의 머신 유형 크기를 조절하여 VM 리소스를 더욱 효율적으로 사용할 수 있습니다.

크기 권장사항을 적정 크기 권장사항이라고도 합니다.

자세한 내용은 관리형 인스턴스 그룹에 대한 크기 권장사항 적용을 참조하세요.

추천자 ID

VM 인스턴스 그룹의 크기 추천자 ID는 다음과 같습니다.

google.compute.instanceGroupManager.MachineTypeRecommender

gcloud 명령어 또는 REST, RPC API를 사용하여 권장사항을 보고 수정할 때 이 ID를 사용합니다.

위치

추천자 gcloud 명령어와 API를 사용하려면 보거나 수정하는 권장사항의 위치를 지정해야 합니다. VM 인스턴스 그룹 크기 권장사항의 경우 Compute Engine 영역gcloud 및 API 상호작용의 위치로 사용합니다.

권한

필수 권한

인스턴스 그룹 크기 권장사항을 보려면 필요한 권한입니다.

  • recommender.computeInstanceGroupManagerMachineTypeRecommendations.get
  • recommender.computeInstanceGroupManagerMachineTypeRecommendations.list

인스턴스 그룹 크기 권장사항의 상태를 수정하려면 필요한 권한입니다.

  • recommender.computeInstanceGroupManagerMachineTypeRecommendations.update

권한 부여

이러한 권한을 부여하려면 다음과 같이 역할을 할당합니다.

  • 권장사항만 보려면 Compute 추천자 뷰어(roles/recommender.computeViewer) 역할을 부여합니다.
  • 권장사항을 보고 수정하려면 Compute 추천자 관리자(roles/recommender.computeAdmin) 역할을 부여합니다.
  • serviceusage.services.use 권한을 부여하려면 서비스 사용량 소비자 역할(roles/serviceusage.serviceUsageConsumer)을 부여합니다.

또는 다음과 같은 기본 역할도 부여할 수 있습니다.

  • 권장사항만 보려면 뷰어(roles/viewer) 역할을 부여합니다.
  • 권장사항을 보고 수정하려면 소유자(roles/owner) 또는 편집자(roles/editor) 역할을 부여합니다.
    • 이러한 역할에는 serviceusage.services.use 권한도 포함됩니다.

권장사항 하위유형

이 추천자는 다음 하위유형을 지원합니다.

  • CHANGE_MACHINE_TYPE - 현재 사용량을 기준으로 가상 머신 관리형 인스턴스 그룹의 현재 머신 유형을 변경하는 것이 좋습니다.

작업 그룹

VM 인스턴스 그룹 크기 추천자에서 생성한 각 권장사항에는 권장사항을 적용하기 위해 수행해야 하는 순차적 작업 집합을 설명하는 작업 그룹이 있습니다.

관리형 인스턴스 그룹의 VM 인스턴스 크기 권장사항

VM 인스턴스 그룹의 크기 권장사항에는 2개의 OperationGroup 항목이 포함됩니다.

첫 번째는 compute.googleapis.com/InstanceTemplate 리소스에 세 가지 작업을 지정합니다.

  1. test 작업은 현재 머신 유형이 권장 시점과 동일한지 확인합니다. 예:

    {
     "action": "test",
     "resourceType": "compute.googleapis.com/InstanceTemplate",
     "resource": "//compute.googleapis.com/projects/example-project/global/instanceTemplates/it-name",
     "path": "/properties/machineType"
     "value": "n1-standard-4"
    }
    
  2. 새 인스턴스 템플릿 리소스를 만드는 copy 작업입니다. 예를 들면 다음과 같습니다.

    {
       "action": "copy",
       "resourceType": "compute.googleapis.com/InstanceTemplate",
       "sourceResource": "//compute.googleapis.com/projects/example-project/global/instanceTemplates/it-name",
       "resource": "//compute.googleapis.com/projects/p1/global/instanceTemplates/$new-it-name",
       "sourcePath": "/",
       "path": "/"
     }
    

    여기서 $new-it-name은 새 인스턴스 템플릿 이름입니다.

  3. 새 인스턴스 템플릿의 머신 유형을 권장 유형으로 대체하는 replace 작업:

    {
      "action": "replace",
      "resourceType": "compute.googleapis.com/InstanceTemplate",
      "resource": "//compute.googleapis.com/projects/example-project/global/instanceTemplates/$new-it-name",
      "path": "/properties/machineType",
      "value" : "n1-standard-8"
    }
    

    여기서 $new-it-name은 새 인스턴스 템플릿 이름입니다.

두 번째는 compute.googleapis.com/InstanceGroupManager 리소스에 replace 작업을 지정합니다. 이 작업은 현재 인스턴스 템플릿 it-name을 권장 머신 유형을 사용하는 위의 지정된 새 인스턴스 템플릿으로 바꿉니다.

 {
   "action" : "replace",
   "resourceType": "compute.googleapis.com/InstanceGroupManager",
   "resource": "//compute.googleapis.com/projects/example-project/zones/z1/instanceGroupManagers/instance-group",
   "path": "/versions/*/instanceTemplate",
   "pathValueMatchers": {
     "/versions/*/instanceTemplate": {
       "matchesPattern": ".*global/instanceTemplates/it-name"
     }
   }
   "value": "global/instanceTemplates/$new-it-name"
 }

여기서 $new-it-name은 새 인스턴스 템플릿 이름입니다.

다음 예시에서는 관리형 인스턴스 그룹의 크기 권장사항을 나열하는 방법을 보여줍니다.

  1. 필수 환경 변수를 설정합니다.

    PROJECT=TARGET_PROJECT_ID
    LOCATION=LOCATION_ID
    RECOMMENDER=google.compute.instanceGroupManager.MachineTypeRecommender
    

    각 매개변수는 다음과 같습니다.

    • TARGET_PROJECT_ID는 권장사항을 나열할 프로젝트입니다. 이 프로젝트는 현재 프로젝트와 다른 프로젝트일 수 있습니다.

      • gcloud 명령어의 경우 프로젝트 ID를 사용해야 합니다.
      • API 요청의 경우 프로젝트 번호 또는 프로젝트 ID를 사용할 수 있습니다. 프로젝트 번호를 사용하는 것이 좋습니다.

      프로젝트 번호는 API 및 gcloud 명령어의 응답으로 반환됩니다.

    • LOCATION_ID는 권장사항과 관련된 리소스가 있는 Google Cloud 영역입니다(예: us-central1-a).

  2. VM 인스턴스 그룹 크기 권장사항을 나열합니다.

    gcloud

    다음을 입력합니다.

    gcloud recommender recommendations list \
        --project=${PROJECT} \
        --location=${LOCATION} \
        --recommender=${RECOMMENDER} \
        --format=json
    

    REST

    다음을 입력합니다.

    curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)"  \
        -H "x-goog-user-project: ${PROJECT}" \
        "https://recommender.googleapis.com/v1/projects/${PROJECT}/locations/${LOCATION}/recommenders/${RECOMMENDER}/recommendations"
    

결과는 다음과 비슷합니다.

[
  {
    "content": {
      "operationGroups": [
        {
          "operations" : [
            {
              "action": "test",
              "resourceType": "compute.googleapis.com/InstanceTemplate",
              "resource": "//compute.googleapis.com/projects/test-project/global/instanceTemplates/it-name",
              "path": "/properties/machineType"
              "value": "n1-standard-4"
            },
            {
              "action": "copy",
              "resourceType": "compute.googleapis.com/InstanceTemplate",
              "sourceResource": "//compute.googleapis.com/projects/test-project/global/instanceTemplates/it-name",
              "resource": "//compute.googleapis.com/projects/test-project/global/instanceTemplates/$new-it-name",
              "sourcePath": "/",
              "path": "/"
            },
            {
              "action": "replace",
              "resourceType": "compute.googleapis.com/InstanceTemplate",
              "resource": "//compute.googleapis.com/projects/test-project/global/instanceTemplates/$new-it-name",
              "path": "/name",
              "value" : "$new-it-name"
            },
            {
              "action": "replace",
              "resourceType": "compute.googleapis.com/InstanceTemplate",
              "resource": "//compute.googleapis.com/projects/test-project/global/instanceTemplates/$new-it-name",
              "path": "/properties/machineType",
              "value" : "n1-standard-8"
            }
          ]
        },
        {
          "operations" : [
            {
              "action" : "replace",
              "resourceType": "compute.googleapis.com/InstanceGroupManager",
              "resource": "//compute.googleapis.com/projects/test-project/zones/us-west1-a/instanceGroupManagers/igm-name",
              "path": "/versions/*/instanceTemplate",
              "pathValueMatchers": {
                "/versions/*/instanceTemplate": {
                  "matchesPattern" : ".*global/instanceTemplates/it-name"
                }
              }
              "value": "global/instanceTemplates/$new-it-name"
            }
          ]
        }
      ]
    },
    "description" : "Improve performance by changing machine type from n1-standard-4 to n1-standard-8.",
    "etag": "\"eebe926c12f923da\"",
    "name": "projects/823742397239/locations/us-west1-a/recommenders/google.compute.instanceGroupManager.MachineTypeRecommender/recommendations/0fd31b24-cc05-4132-8431-ed54a22dd4f1",
    "lastRefreshTime": {
      "seconds": 1543912652
    },
    "primaryImpact": {
      "category": "PERFORMANCE"
    },
    "additionalImpact": [
      "category": "COST",
      "costProjection": {
        "cost": {"currencyCode": "USD", "units": 50},
        "duration": { "seconds": 2592000 }
      }
    ],
    "stateInfo": {
      "state": "ACTIVE"
    },
    "recommenderSubtype": "CHANGE_MACHINE_TYPE"
  }
]

추천자 gcloud 명령어 및 API를 사용하여 권장사항에 대한 추가 태스크를 수행하는 방법은 API 사용을 참조하세요.