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 인스턴스 그룹의 크기 조정 권장사항에는 OperationGroup
항목 두 개가 포함되어 있습니다.
첫 번째는 compute.googleapis.com/InstanceTemplate
리소스에 세 가지 작업을 지정합니다.
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" }
새 인스턴스 템플릿 리소스를 만드는
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은 새 인스턴스 템플릿 이름입니다.
새 인스턴스 템플릿의 머신 유형을 권장 유형으로 바꾸는
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은 새 인스턴스 템플릿 이름입니다.
예
다음 예시에서는 관리형 인스턴스 그룹의 크기 조정 권장사항을 나열하는 방법을 보여줍니다.
필수 환경 변수를 설정합니다.
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
).
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 사용을 참조하세요.