MIG 및 관리형 인스턴스에 대한 정보 가져오기

이 페이지의 메서드를 사용하여 관리형 인스턴스 그룹(MIG)에 대한 정보를 가져오고 각 MIG 내 가상 머신(VM) 인스턴스에 대한 정보를 가져옵니다.

시작하기 전에

MIG에 대한 정보 가져오기

예를 들어 그룹에 연결된 정책을 검사하고 그룹이 안정적인지 또는 변경 중인지 확인하기 위해 그룹 자체에 대한 정보를 검색할 수 있습니다. MIG 내 VM 인스턴스에 대한 정보를 보려면 관리형 인스턴스에 대한 정보 가져오기를 참조하세요.

MIG 나열

관리형 인스턴스 그룹 목록을 가져오려면 Console, gcloud 도구 또는 API를 사용합니다.

Console

  1. Google Cloud Console에서 인스턴스 그룹 페이지로 이동합니다.

    인스턴스 그룹 페이지로 이동

    기존 인스턴스 그룹이 있는 경우 페이지에 관리형 인스턴스 그룹과 비관리형 인스턴스 그룹을 포함한 그룹이 나열됩니다.

    관리형 인스턴스 그룹은 템플릿 열에 값이 있습니다.

gcloud

프로젝트의 관리형 인스턴스 그룹을 모두 나열합니다.

gcloud compute instance-groups managed list

API

영역 내의 모든 관리형 인스턴스 그룹을 나열하려면 instanceGroupManagers.list 메서드에 대한 GET 요청을 만듭니다.

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers

리전(멀티 영역) 관리형 인스턴스 그룹의 경우 regionInstanceGroupManagers 리소스(regionInstanceGroupManagers.list)를 대신 사용합니다.

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers

MIG의 속성 가져오기

연결된 정책(예: 자동 복구 정책)을 비롯하여 특정 MIG에 대한 정보를 가져오려면 Console, gcloud 도구 또는 API를 사용합니다.

그룹의 id를 사용하려면 gcloud 도구 또는 API를 사용해야 합니다.

Console

  1. Google Cloud Console에서 인스턴스 그룹 페이지로 이동합니다.

    인스턴스 그룹 페이지로 이동

    기존 인스턴스 그룹이 있으면 페이지에 나열됩니다. 비관리형 인스턴스 그룹도 이 페이지에 나열됩니다.

  2. 목록의 이름 열에서 알아보려는 인스턴스 그룹의 이름을 클릭합니다. 인스턴스 그룹 속성과 그룹에 포함된 인스턴스의 목록이 표시된 페이지가 열립니다.

gcloud

특정 그룹에 대한 정보를 가져오려면 다음과 같이 입력합니다.

gcloud compute instance-groups managed describe instance-group \
        [--zone zone | --region region]

이 명령어는 연결된 정책을 포함하여 그룹에 대한 세부정보를 반환합니다.

API

특정 그룹에 대한 정보를 가져오려면 instanceGroupManagers.get 메서드에 GET 요청을 실행하고 특정 관리형 인스턴스 그룹의 이름을 포함합니다.

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group

리전(다중 영역) 관리형 인스턴스 그룹의 경우 regionInstanceGroupManagers 리소스(regionInstanceGroupManagers.listregionInstanceGroupManagers.get)를 대신 사용합니다.

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group

응답에는 연결된 정책(자동 복구 정책 제외) 등의 세부정보가 포함됩니다.

자동 확장 처리에 대한 정보를 가져오려면 autoscalers.get 메서드에 GET 요청을 실행하고 특정 관리형 인스턴스 그룹 이름을 포함합니다.

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/autoscalers/instance-group

리전(멀티 영역) 관리형 인스턴스 그룹의 경우 regionAutoscalers 리소스(regionAutoscalers.get)를 대신 사용합니다.

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/regionAutoscalers/instance-group

MIG가 안정적인지 확인하기

여러 명령어와 요청을 통해 관리형 인스턴스 그룹의 인스턴스를 만들고 삭제하고 수정할 수 있습니다. 그룹에서 인스턴스를 만들거나 삭제하거나 업데이트하는 작업을 예약하면 해당 작업이 DONE으로 반환됩니다. 하지만 이러한 기본 작업이 완료될 때까지는 그룹의 인스턴스가 생성, 삭제 또는 업데이트된 것이 아닙니다. 그룹의 상태를 확인하거나 해당 인스턴스의 상태를 확인해야 합니다.

관리형 인스턴스 그룹은 관리형 인스턴스 그룹의 모든 인스턴스 중 변경 중인 인스턴스가 없거나 인스턴스에 더 이상 일정 변경이 없거나 그룹 자체가 수정되지 않았을 때 안정적입니다.

정상적으로 처리되는 그룹의 모든 인스턴스에 의존하는 종속 항목이 있을 때 그룹이 안정적인지 여부를 확인해야 할 수 있습니다. 예를 들어 모든 VM이 실행 중이고 정상인지 확인한 후 작업 예약, 트래픽 전송 또는 키 범위 할당을 시작해야 할 수 있습니다.

status.isStable 필드의 값을 확인하면 관리형 인스턴스 그룹이 실행 중이고 정상적인지 확인할 수 있습니다.

gcloud

인스턴스 그룹 describe 명령어를 사용합니다.

gcloud compute instance-groups managed describe instance-group-name \
        [--zone zone | --region region]

gcloud 도구는 status.isStable 필드를 비롯한 인스턴스 그룹에 대한 자세한 세부정보를 반환합니다.

그룹이 안정화될 때까지 스크립트를 일시중지하려면 wait-until 명령어와 함께 --stable 플래그를 사용합니다. 예를 들면 다음과 같습니다.

gcloud compute instance-groups managed wait-until instance-group-name \
        --stable \
        [--zone zone | --region region]
    Waiting for group to become stable, current operations: deleting: 4
    Waiting for group to become stable, current operations: deleting: 4
    ...
    Group is stable
    

명령어는 그룹에 대해 status.isStabletrue로 설정된 후 반환됩니다.

API

영역 MIG의 경우 instanceGroupManagers.get 메서드에 POST 요청을 수행합니다.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/get

리전 관리형 인스턴스 그룹의 경우 zones/zoneregions/region으로 바꿉니다.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group-name/get

API가 status.isStable 필드를 비롯한 인스턴스 그룹에 대한 세부정보를 반환합니다.

status.isStablefalse로 설정되면 변경사항이 활성 또는 대기 중 상태이거나 관리형 인스턴스 그룹 자체가 수정 중임을 나타냅니다.

status.isStabletrue로 설정되면 다음을 나타냅니다.

  • 관리형 인스턴스 그룹의 인스턴스 중 변경 중인 인스턴스가 없거나, 모든 인스턴스의 currentActionNONE입니다.
  • 관리형 인스턴스 그룹의 인스턴스에 대기 중인 변경사항이 없습니다.
  • 관리형 인스턴스 그룹 자체가 수정되지 않습니다.

관리형 인스턴스 그룹은 다양한 방법으로 변경할 수 있습니다. 예를 들면 다음과 같습니다.

  • 새 인스턴스 템플릿의 롤아웃을 요청합니다.
  • 그룹의 인스턴스를 생성, 삭제, 크기 조절 또는 업데이트하는 요청을 실행합니다.
  • 자동 확장 처리가 그룹의 크기 조절을 요청합니다.
  • 자동 복구 리소스가 관리형 인스턴스 그룹에 속한 1개 이상의 비정상 인스턴스를 교체합니다.
  • 리전 관리형 인스턴스 그룹에 속한 인스턴스 중 일부가 재배포됩니다.

모든 작업이 완료되면 이 관리형 인스턴스 그룹에 대한 status.isStable이 다시 true로 설정됩니다.

개별 VM 인스턴스의 경우에는 관리형 인스턴스의 상태 확인을 참조하세요.

이전 자동 복구 작업 보기

자동 복구를 구성한 경우 이전의 자동 복구 이벤트를 볼 수 있습니다.

순차적 업데이트 모니터링하기

순차적 업데이트를 시작한 후 업데이트가 언제 완료되는지 알고 싶은 경우 업데이트 모니터링하기를 참조하세요.

스테이트풀(Stateful) 구성 보기

스테이트풀(Stateful) MIG를 구성한 경우 이 구성을 보려면 스테이트풀(Stateful) 구성 보기를 참조하세요.

MIG 내 관리형 VM 인스턴스에 대한 정보 가져오기

MIG 관리형 인스턴스 나열

상태 및 템플릿을 비롯한 그룹의 관리형 인스턴스 목록을 가져오려면 Console, gcloud 도구 또는 API를 사용합니다.

Console

  1. Google Cloud Console에서 인스턴스 그룹 페이지로 이동합니다.

    인스턴스 그룹 페이지로 이동

    기존 인스턴스 그룹이 있으면 페이지에 나열됩니다. 비관리형 인스턴스 그룹도 이 페이지에 나열됩니다.

  2. 목록의 이름 열에서 알아보려는 인스턴스 그룹의 이름을 클릭합니다. 인스턴스 그룹 속성과 그룹에 포함된 인스턴스의 목록이 표시된 페이지가 열립니다.

gcloud

gcloud 도구에서 list-instances 하위 명령어를 사용합니다.

    gcloud compute instance-groups managed list-instances instance-group \
        [--zone zone | --region region]
    

이 명령어는 인스턴스 목록과 인스턴스의 현재 상태, 인스턴스 템플릿, 마지막 오류 등의 세부정보를 반환합니다.

API

영역 MIG의 경우 instanceGroupManagers.listManagedInstances 메서드에 GET 요청을 작성하고 특정 관리형 인스턴스 그룹 이름을 포함합니다.

    GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group
    

리전(멀티 영역) 관리형 인스턴스 그룹의 경우 regionInstanceGroupManagers 리소스(regionInstanceGroupManagers.list)를 대신 사용합니다.

    GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group
    

응답에는 인스턴스 목록과 인스턴스의 현재 상태 및 인스턴스 템플릿 등의 세부정보가 포함됩니다.

관리형 인스턴스의 상태 확인

여러 명령어와 요청을 통해 관리형 인스턴스 그룹의 인스턴스를 만들고 삭제하고 수정할 수 있습니다. 그룹에서 인스턴스를 만들거나 삭제하거나 업데이트하는 작업을 예약하면 해당 작업이 DONE으로 반환됩니다. 하지만 이러한 기본 작업이 완료될 때까지는 그룹의 인스턴스가 생성, 삭제 또는 업데이트된 것이 아닙니다. 인스턴스의 상태를 확인하거나 그룹 자체의 상태를 확인해야 합니다.

관리형 인스턴스 그룹에서 실행 중인 currentAction 및 각 인스턴스의 status를 보려면 gcloud 명령줄 도구 또는 API를 사용하면 됩니다.

gcloud

gcloud compute instance-groups managed list-instances instance-group-name \
    [--filter="zone:(zone)" | --filter="region:(region)"]

gcloud는 인스턴스 그룹에 속한 인스턴스 목록뿐 아니라 각 인스턴스의 상태와 현재 작업을 반환합니다. 예를 들면 다음과 같습니다.

NAME               ZONE           STATUS    ACTION    INSTANCE_TEMPLATE  VERSION_NAME  LAST_ERROR
    vm-instances-9pk4  us-central1-f            CREATING  my-new-template
    vm-instances-h2r1  us-central1-f  STOPPING  DELETING  my-old-template
    vm-instances-j1h8  us-central1-f  RUNNING   NONE      my-old-template
    vm-instances-ngod  us-central1-f  RUNNING   NONE      my-old-template
    

API

API에서 regionInstanceGroupManagers.listManagedInstances 메서드에 GET 요청을 실행합니다. 영역 관리형 인스턴스 그룹의 경우 instanceGroupManagers.listManagedInstances 메서드를 사용합니다.

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group-name/listManagedInstances

API는 각 인스턴스의 instanceStatuscurrentAction을 비롯한 그룹의 인스턴스 목록을 반환합니다.

{
     "managedInstances": [
      {
       "instance": "https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/vm-instances-prvp",
       "id": "5317605642920955957",
       "instanceStatus": "RUNNING",
       "instanceTemplate": "https://compute.googleapis.com/compute/v1/projects/project-id/global/instanceTemplates/instance-template-name",
       "currentAction": "REFRESHING"
      },
      {
       "instance": "https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/vm-instances-pz5j",
       "currentAction": "DELETING"
      },
      {
       "instance": "https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/vm-instances-w2t5",
       "id": "2800161036826218547",
       "instanceStatus": "RUNNING",
       "instanceTemplate": "https://compute.googleapis.com/compute/v1/projects/project-id/global/instanceTemplates/instance-template-name",
       "currentAction": "REFRESHING"
      }
     ]
    }
    

관리형 인스턴스 그룹의 각 인스턴스의 경우 인스턴스의 상태는 instanceStatus 필드로 설명됩니다. 유효한 instanceStatus 필드 값 목록을 보려면 인스턴스 상태 확인을 참조하세요.

인스턴스를 변경 중인 경우 변경 과정을 쉽게 추적할 수 있도록 다음 작업 중 하나를 통해 currentAction 필드도 채워집니다. 그렇지 않으면 currentAction 필드는 NONE입니다.

가능한 currentAction 값은 다음과 같습니다.

  • ABANDONING: 인스턴스가 관리형 인스턴스 그룹에서 삭제되고 있습니다.
  • CREATING: 인스턴스를 만드는 중입니다.
  • CREATING_WITHOUT_RETRIES: 인스턴스가 재시도없이 생성되고 있습니다. 인스턴스가 첫 번째 시도에서 생성되지 않은 경우에도 관리형 인스턴스 그룹이 해당 인스턴스를 다시 교체하지 않습니다.
  • DELETING: 인스턴스가 삭제되고 있습니다.
  • RECREATING: 인스턴스를 교체하는 중입니다.
  • REFRESHING: 인스턴스가 현재 대상 풀에서 삭제되고 현재 대상 풀 목록에 다시 추가되는 중입니다. 이 목록은 기존 대상 풀과 동일하거나 다를 수 있습니다.
  • RESTARTING: 인스턴스가 stopstart 메서드를 사용하여 다시 시작되고 있습니다.
  • VERIFYING: 인스턴스가 생성되었으며 확인되고 있습니다.
  • NONE: 인스턴스에서 수행 중인 작업이 없습니다.

그룹 전체가 안정적인지 또는 변경 중인지 확인하려면 그룹 상태 확인을 참조하세요.

상태 확인

관리형 인스턴스 그룹에 대한 자동 복구를 구성한 경우 각 VM의 상태를 확인할 수 있습니다. 상태 확인을 참조하세요.

인스턴스 오류 나열

관리형 인스턴스 그룹에 오류가 발생하면 해당 오류를 확인하여 원인을 진단하고 완화할 수 있습니다.

발생 가능한 오류 목록에 포함되는 대표적인 예시는 다음과 같습니다.

  • 새 인스턴스를 만들 수 없는 경우:
    • 선점 가능한 용량을 사용할 수 없음
    • 할당량 부족(예: 특정 리전의 CPU)
    • 그룹과 연결된 네트워크에 대한 VM 인스턴스 수 한도에 도달했습니다.
    • 인스턴스 템플릿의 properties.disks[].initializeParams.sourceImage 필드에 지정된 디스크 이미지가 삭제되었거나 권한이 변경되었습니다.
    • 프로젝트와 연결된 결제 계정에서 신용카드 결제가 거부되었습니다.
  • 기존 인스턴스를 삭제할 수 없는 경우:
    • 그룹에서 사용하는 서비스 계정에 compute.instances.delete 권한이 없는 경우
    • 동시 실행 삭제 요청이 너무 많아 비율 제한을 초과한 경우
  • 대상 풀이 삭제되었기 때문에 대상 풀에 인스턴스를 추가할 수 없습니다.

이러한 오류를 검사한 후 오류의 원인을 완화할 수 있습니다. 예를 들면 다음과 같습니다.

  • 선점 가능한 용량이 있는 다른 영역으로 워크로드를 이동합니다.
  • 특정 리전에서 할당량 상향을 요청합니다.
  • 그룹에서 사용하는 서비스 계정에 compute.instances.delete 권한을 추가합니다.

관리형 인스턴스 그룹에서 트리거한 작업이 실패하면(예: 그룹의 크기를 늘리려고 할 때 자동 확장 처리에서 오류 발생) 그룹에서 해당 작업을 즉시 재시도할 수 있습니다. 마지막 즉시 재시도가 실패하면 오류가 기록되며, gcloud 도구의 list-errors 하위 명령어 또는 listErrors API 메서드를 사용하여 이 오류를 볼 수 있습니다. 백오프 시간이 일부 지나면 그룹은 실패한 작업을 다시 시도합니다. 오류가 계속되면 해당 오류가 여러 번 기록될 수 있습니다.

Compute Engine은 기본 인스턴스가 더 이상 존재하지 않거나 생성되지 않더라도 지난 8일 간의 최근 오류 500개를 보존합니다.

gcloud 도구 또는 API를 사용하여 오류를 나열합니다.

gcloud

instance-groups managed list-errors 하위 명령어를 사용하여 그룹에서 발생한 최근 오류를 나열합니다.

gcloud beta compute instance-groups managed list-errors [INSTANCE_GROUP] \
        [--zone [ZONE] | --region [REGION]]
    

예:

gcloud compute instance-groups managed list-errors example-group \
        --region [REGION]
    
    INSTANCE_URL                                                                                                               ACTION    ERROR_CODE      ERROR_MESSAGE                                                                                       TIMESTAMP                      INSTANCE_TEMPLATE                                                                                                            VERSION_NAME

    https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/igm-1-v0hl  CREATING  QUOTA_EXCEEDED  Instance 'igm-1-v0hl' creation failed: Quota 'CPUS' exceeded.  Limit: 1.0 in zone us-central1-a.  2019-07-11T07:44:40.156-07:00  https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates/instance-template-1
    https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/igm-1-qp3d  CREATING  QUOTA_EXCEEDED  Instance 'igm-1-qp3d' creation failed: Quota 'CPUS' exceeded.  Limit: 1.0 in zone us-central1-a.  2019-07-11T07:44:40.081-07:00  https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates/instance-template-1
    ...
    

API

영역 또는 리전 관리형 인스턴스 그룹listErrors 메서드에 대한 GET 요청을 작성합니다.

예:

GET https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/example-mig/listErrors&maxResults=100
    

요청을 실행하면 다음과 비슷한 응답이 반환됩니다.


    {
     "items": [
      {
       "error": {
        "code": "QUOTA_EXCEEDED",
        "message": "Instance 'example-mig-m1sz' creation failed: Quota 'CPUS' exceeded.  Limit: 50.0 in zone us-central1-c."
       },
       "timestamp": "2019-01-03T18:47:28.457-08:00",
       "instanceDetails" : {
        "instance": "zones/us-central1-c/instances/example-mig-m1sz",
        "action": "CREATING",
        "version": {
         "name": "example-version-name",
         "instanceTemplate": "global/instanceTemplates/example-template",
        }
       }
      }
     ],
     ...
     "nextPageToken": "Ch0yMDE5LTA3LTI5VDExOjA4OjA2LjYxMi0wNzowMBJ5aHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vY29tcHV0ZS9zdGFnaW5nX2FscGhhL3Byb2plY3RzL215cnpha2VyZXltcy1zdGFnaW5nL3pvbmVzL3VzLWNlbnRyYWwxLWlyMS9pbnN0YW5jZXMvaWdtLTEtcXAzZA=="
    }

    

listErrors API는 목록 페이지 나누기를 지원합니다. 결과의 다음 페이지를 가져오려면 이후 요청의 한 응답에서 nextPageToken 필드를 사용합니다. 예를 들면 GET https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/us-central1-c/instanceGroupManagers/example-mig/listErrors&maxResults=100&nextPageToken=[NEXT_PAGE_TOKEN]입니다. 여기서 [NEXT_PAGE_TOKEN]은 이전 응답에서 가져온 값입니다.

VM 인스턴스가 MIG의 일부인지 확인

특정 VM이 현재 그룹의 구성원인지 확인하려면 Console 또는 API를 사용할 수 있습니다.

Console

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

    VM 인스턴스 페이지로 이동

  2. VM 인스턴스 세부정보에 액세스할 인스턴스를 클릭합니다.
  3. VM 인스턴스가 관리형 인스턴스 그룹의 구성원인 경우 해당 관리형 인스턴스 그룹의 이름은 다음에서 사용 중 제목 아래에 나타납니다. VM 인스턴스가 그룹의 구성원이 아닌 경우에는 인스턴스 세부정보 페이지에 다음에서 사용 중 제목이 나타나지 않습니다.

API

VM 인스턴스에 대한 리퍼러 보기를 참조하세요.

또는 VM이 관리형 인스턴스 그룹의 구성원이거나 구성원이었는지 식별하려면 인스턴스 메타데이터에서 다음 2가지 메타데이터 키를 찾습니다.

  • instance-template은 VM을 만들 때 사용한 템플릿을 나타냅니다.
  • created-by는 VM을 만든 관리형 인스턴스 그룹을 나타냅니다.

VM을 폐기해도 이 메타데이터 항목을 수동으로 삭제하지 않으면 이러한 항목이 인스턴스에 남아 있습니다.

예를 들어 이름이 random-instance-biy인 VM이 관리형 인스턴스 그룹에 의해 생성되었는지 여부를 알고 싶은 경우 인스턴스를 설명하고 메타데이터 키를 찾을 수 있습니다. 예를 들면 다음과 같습니다.

    gcloud compute instances describe random-instance-biy \
        --zone us-central1-f
    

gcloud 도구는 다음과 비슷한 응답을 반환합니다.

    canIpForward: false
    cpuPlatform: Intel Ivy Bridge
    creationTimestamp: '2016-08-24T14:11:38.012-07:00'
    ...
    metadata:
      items:
      - key: instance-template
        value: projects/123456789012/global/instanceTemplates/example-it
      - key: created-by
        value: projects/123456789012/zones/us-central1-f/instanceGroupManagers/igm-metadata
    

관리형 인스턴스의 보존 상태 보기

스테이트풀(Stateful) MIG를 구성한 경우 각 관리형 인스턴스의 보존 상태를 보려면 스테이트풀(Stateful) 구성 및 보존 상태 보기를 참조하세요.

다음 단계