MIG에서 스테이트풀(Stateful) 구성 적용, 보기, 삭제


스테이트풀(Stateful) 관리형 인스턴스 그룹(MIG)스테이트풀(Stateful) 구성을 만들거나 업데이트한 후에는 다음을 수행할 수 있습니다.

  • 스테이트풀(Stateful) 구성을 적용합니다.
  • 스테이트풀(Stateful) 구성과 관리형 인스턴스의 유효한 보존 상태를 봅니다.
  • 스테이트풀(Stateful) 구성을 삭제합니다.

시작하기 전에

  • 스테이트풀(Stateful) MIG를 사용하는 경우스테이트풀(Stateful) MIG 작동 방식을 검토합니다.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 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

관리형 인스턴스에 스테이트풀(Stateful) 구성 적용

스테이트풀(Stateful) 구성은 사용자 또는 MIG가 적용해야 효력이 발생됩니다.

  • 스테이트풀(Stateful) 정책의 구성 변경사항은 자동으로 모든 관리형 인스턴스에 적용됩니다.
  • 인스턴스별 구성의 구성 변경사항을 수동 또는 자동으로 적용할 수 있습니다.

보다 개념적인 정보는 관리되는 인스턴스에 스테이트풀(Stateful) 구성이 적용되는 방법을 참조하세요.

스테이트풀(Stateful) 정책에서 구성 적용

스테이트풀(Stateful) 정책의 모든 구성 변경사항은 자동으로 모든 관리형 인스턴스에 적용됩니다. 스테이트풀(Stateful) 정책을 업데이트해도 실행 중인 가상 머신(VM) 인스턴스는 중단되지 않습니다.

스테이트풀(Stateful) 정책이 적용되었는지 확인

모든 VM 확인

변경 후 MIG가 안정화되었는지 확인하여 스테이트풀(Stateful) 정책 변경사항이 모든 VM에 적용되었는지 확인합니다.

특정 VM 확인

관리형 인스턴스 보존 상태를 확인하고 스테이트풀(Stateful) 정책의 모든 디스크가 관리형 인스턴스의 preservedStateFromPolicy 또는 preservedStateFromConfig에 있는지 확인하여 스테이트풀(Stateful) 정책 변경사항이 MIG의 특정 VM에 적용되었는지 확인합니다.

인스턴스별 구성에서 스테이트풀(Stateful) 구성 적용

신규 또는 업데이트된 인스턴스별 구성을 수동 또는 자동으로 적용할 수 있습니다. 다음 방법 중 하나를 사용하세요.

  • 업데이트된 구성을 특정 인스턴스에 선택적으로 적용: 이 접근 방법을 사용하면 중단 수준, 타이밍, 업데이트 순서를 제어할 수 있습니다.
  • 순차적 업데이트로 업데이트된 구성을 자동으로 적용: 이 접근 방법을 사용하면 자동화된 순차적인 방식으로 관리되는 인스턴스에 구성 변경사항을 적용할 수 있습니다.

위 방법 모두 인스턴스별 구성과 적용되지 않은 버전 또는 인스턴스 템플릿 둘 다에 미적용 업데이트를 적용합니다(해당되는 경우).

업데이트된 구성을 특정 인스턴스에 선택적으로 적용

인스턴스별 구성을 특정 인스턴스에 수동으로 적용하려면 다음 단계를 수행합니다.

  1. 자동 사전 업데이트와 경합을 방지하기 위해 낙관적 업데이트 정책을 구성합니다.
  2. 인스턴스별 구성을 만들거나 업데이트합니다.
  3. VM을 선택적으로 업데이트하여 업데이트된 구성을 특정 VM에 적용합니다.

또는 다음 접근 방법을 사용할 수 있습니다.

  • gcloud CLI로 인스턴스별 구성을 만들거나 업데이트하는 경우 --update-instance 플래그를 사용하여 구성을 연결된 관리형 인스턴스에 즉시 적용합니다.
  • 새 인스턴스를 수동으로 만드는 경우 만들 때 이름 및 인스턴스별 구성을 지정합니다. MIG는 VM을 만들 때 즉시 구성을 적용합니다.

순차적 업데이트로 업데이트된 구성 자동 적용

MIG가 순차적인 방식으로 해당 관리되는 인스턴스에 구성 업데이트를 자동으로 적용하도록 사전적인 순차적 업데이트를 구성합니다.

스테이트풀(Stateful) MIG는 사전적인 업데이트 정책을 위해 다음 구성이 필요합니다.

이러한 구성은 MIG가 기존 스테이트풀(Stateful) 인스턴스를 다시 만들고 이를 다른 항목으로 대체하지 않도록 보장합니다.

또한 가능한 경우 그룹의 업데이트 정책에서 최소 작업REFRESH로 설정하여 인스턴스를 중지하지 않고 인스턴스별 구성의 변경사항이 적용되도록 보장할 수 있습니다.

인스턴스별 구성 적용 여부 확인

모든 인스턴스별 구성 확인

MIG의 모든 인스턴스별 구성이 적용되었는지 확인하려면 MIG의 스테이트풀(Stateful) 상태를 보고 status.stateful.perInstanceConfigs.allEffective를 확인합니다.

  • true: 그룹의 모든 인스턴스별 구성이 적용되어 유효하거나 그룹에 인스턴스별 구성이 없습니다.
  • false: 그룹에 아직 유효하지 않은 인스턴스별 구성이 최소 한 개 이상 있습니다. 이는 아직 적용되지 않았거나 적용이 진행 중인 상태입니다.

특정 인스턴스별 구성 확인

특정 인스턴스별 구성의 변경사항이 해당 VM에 적용되었는지 확인하려면 모든 인스턴스별 구성을 보고 특정 인스턴스별 구성의 status 필드를 확인합니다.

  • UNAPPLIED: 인스턴스별 구성이 생성되거나 업데이트되었으며 수동 인스턴스 업데이트로 VM에 적용해야 합니다.
  • APPLYING: MIG가 현재 새로운 인스턴스별 구성 또는 업데이트된 인스턴스별 구성을 VM에 적용하고 있습니다.
  • EFFECTIVE: 인스턴스별 구성이 VM에 성공적으로 적용되어 유효합니다.
  • UNAPPLIED_DELETION: 인스턴스별 구성이 삭제되도록 설정됩니다. 이 업데이트를 적용하려면 수동 인스턴스 업데이트를 사용하여 VM에 업데이트를 적용해야 합니다.
  • DELETING: 인스턴스별 구성이 삭제되고 변경사항이 VM에 적용됩니다.

스테이트풀(Stateful) 구성 및 보존 상태 보기

다음 태스크에서 스테이트풀(Stateful) MIG에 대한 정보를 가져옵니다.

  • MIG에 스테이트풀(Stateful) 구성이 있는지와 이 구성이 적용되고 유효한지 확인
  • 스테이트풀(Stateful) 정책에 저장된 MIG의 모든 인스턴스에 공통적으로 적용되는 스테이트풀(Stateful) 구성 보기
  • 인스턴스별 구성에 저장된 개별 인스턴스에 대한 스테이트풀(Stateful) 구성을 보고 이 구성이 적용되고 유효한지 확인
  • 스테이트풀(Stateful) 정책과 적용된 인스턴스별 구성에 따라 MIG에서 각 인스턴스의 유효한 보존 상태 보기

MIG의 스테이트풀(Stateful) 구성 상태 보기

스테이트풀(Stateful) 구성, 즉, 스테이트풀(Stateful) 정책이 있거나 인스턴스별 비어 있지 않은 구성이 최소 한 개 이상 있으면 MIG는 스테이트풀(Stateful)로 간주됩니다.

스테이트풀(Stateful) 정책을 만들면 MIG가 자동으로 적용합니다. 인스턴스별 구성을 만들 때 나중에 적용하도록 결정할 수 있습니다.

MIG에 스테이트풀(Stateful) 구성이 있고 모든 인스턴스별 구성이 적용되는지 확인하려면 gcloud CLI 또는 REST를 사용하여 MIG의 스테이트풀(Stateful) 상태를 봅니다.

gcloud

MIG에 스테이트풀(Stateful) 구성이 있는지 확인하려면 gcloud compute instance-groups managed describe 명령어를 실행하여 스테이트풀(Stateful) 상태를 봅니다. 예를 들면 다음과 같습니다.

gcloud compute instance-groups managed describe NAME

baseInstanceName node
...
name example-group
...
status:
  isStable: true
  stateful:
    hasStatefulConfig: true
    perInstanceConfigs:
      allEffective: true
  versionTarget:
    isReached: true
targetSize: 3
...

이 출력에서 각 항목의 의미는 다음과 같습니다.

  • hasStatefulConfig:
    • true: 그룹에 스테이트풀(Stateful) 구성이 있습니다. 즉, 그룹에 비어 있지 않은 스테이트풀(Stateful) 정책이 있거나 비어 있지 않은 인스턴스별 구성이 최소 한 개 이상 있습니다.
    • false: 스테이트풀(Stateful) 구성이 없습니다.
  • perInstanceConfigs.allEffective:
    • true: 그룹의 모든 인스턴스별 구성이 적용되어 유효하거나 그룹에 인스턴스별 구성이 없습니다.
    • false: 그룹에 아직 유효하지 않은 인스턴스별 구성이 최소 한 개 이상 있습니다. 이는 아직 적용되지 않았거나 적용이 진행 중인 상태입니다.

REST

MIG에 스테이트풀(Stateful) 구성이 있는지 확인하려면 instanceGroupManagers.get 메서드 또는 regionInstanceGroupManagers.get 메서드를 사용하고 status.stateful 필드를 확인합니다. 예를 들면 다음과 같습니다.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME

이 메서드는 instanceGroupManagers 객체를 반환합니다.

{
  "name": "example-group",
  "baseInstanceName": "node",
  ...
  "status": {
    "isStable": true,
    "stateful": {
      "hasStatefulConfig": true,
      "perInstanceConfigs": {
        "allEffective": true
      }
    },
    "versionTarget": {
      "isReached": true
    }
  },
  "targetSize": 3,
  ...
}

이 출력에서 각 항목의 의미는 다음과 같습니다.

  • hasStatefulConfig:
    • true: 그룹에 스테이트풀(Stateful) 구성이 있습니다. 즉, 그룹에 비어 있지 않은 스테이트풀(Stateful) 정책이 있거나 비어 있지 않은 인스턴스별 구성이 최소 한 개 이상 있습니다.
    • false: 스테이트풀(Stateful) 구성이 없습니다.
  • perInstanceConfigs.allEffective:
    • true: 그룹의 모든 인스턴스별 구성이 적용되어 유효하거나 그룹에 인스턴스별 구성이 없습니다.
    • false: 그룹에 아직 유효하지 않은 인스턴스별 구성이 최소 한 개 이상 있습니다. 이는 아직 적용되지 않았거나 적용이 진행 중인 상태입니다.

MIG의 스테이트풀(Stateful) 정책 보기

Google Cloud 콘솔, gcloud CLI 또는 REST로 그룹의 세부정보를 확인하여 MIG의 스테이트풀(Stateful) 정책을 확인합니다.

콘솔

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

    인스턴스 그룹으로 이동

  2. 스테이트풀(Stateful) 정책을 보려는 인스턴스 그룹의 이름을 클릭합니다.

  3. 세부정보 탭으로 이동합니다.

  4. 스테이트풀(Stateful) 리소스 아래에 스테이트풀(Stateful) 정책의 모든 리소스가 나열됩니다.

gcloud

MIG의 스테이트풀(Stateful) 정책을 보려면 gcloud compute instance-groups managed describe 명령어를 실행합니다. 예를 들면 다음과 같습니다.

gcloud compute instance-groups managed describe NAME

baseInstanceName node
...
name example-group
...
statefulPolicy:
  preservedState:
    disks:
      data-disk:
        autoDelete: NEVER
      logs-disk:
        autoDelete: ON_PERMANENT_INSTANCE_DELETION
    internalIPs:
      nic0:
        autoDelete: ON_PERMANENT_INSTANCE_DELETION
    externalIPs:
      nic0:
        autoDelete: NEVER
status:
  isStable: true
  stateful:
    hasStatefulConfig: true
    perInstanceConfigs:
      allEffective: true
  versionTarget:
    isReached: true
targetSize: 3
...

REST

MIG의 스테이트풀(Stateful) 정책을 보려면 instanceGroupManagers.get 또는 regionInstanceGroupManagers.get 메서드를 사용하고 statefulPolicy 필드를 확인합니다. 예를 들면 다음과 같습니다.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME

이 메서드는 instanceGroupManagers 객체를 반환합니다.

{
  "name": "example-group",
  "baseInstanceName": "node",
  ...
  "status": {
      "isStable": true,
      "versionTarget": {
        "isReached": true
      },
      "stateful": {
        "hasStatefulConfig": true,
        "perInstanceConfigs": {
          "allEffective": true
        }
      }
  ...
  "statefulPolicy": {
    "preservedState": {
      "disks": {
        "data-disk": { "autoDelete": "NEVER" },
        "logs-disk": { "autoDelete": "ON_PERMANENT_INSTANCE_DELETION" }
      },
      "internalIPs": {
         "nic0" : { "autoDelete": "ON_PERMANENT_INSTANCE_DELETION"}
      },
      "externalIPs": {
         "nic0" : { "autoDelete": "NEVER"}
      },
    }
  },
  "targetSize": 3,
  ...
}

MIG의 인스턴스별 구성 보기

MIG의 모든 인스턴스별 구성을 나열하여 인스턴스별 구성을 봅니다. gcloud CLI 또는 REST를 사용합니다.

인스턴스별 구성을 수동으로 적용하도록 결정할 경우 일부 인스턴스별 구성이 아직 연결된 인스턴스에 적용되지 않을 수 있으므로 인스턴스 보존 상태가 아직 인스턴스별 구성을 반영하지 못할 수 있습니다. 자세한 내용은 인스턴스별 구성 적용인스턴스별 구성 적용 여부 확인을 참조하세요.

gcloud

gcloud compute instance-groups managed instance-configs list 명령어를 실행하여 MIG의 인스턴스별 구성을 모두 나열합니다.

gcloud compute instance-groups managed instance-configs list NAME

다음을 바꿉니다.

  • NAME: 인스턴스별 구성을 나열할 MIG의 이름입니다.

표준 --filter 플래그를 사용하여 목록을 필터링합니다.

예를 들어 example-group의 모든 인스턴스별 구성을 나열하려면 다음을 실행합니다.

gcloud compute instance-groups managed instance-configs list example-group
---
fingerprint: JxPvsKOywuY=
name: node-1
preservedState:
  disks:
    data-disk:
      autoDelete: NEVER
      mode: rw
      source: https://www.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/disks/data-disk-1
  metadata:
    role: primary
  internalIPs:
    nic0:
      ipAddress:
        address: /projects/example-project/regions/us-east1/addresses/node-1-int-ip
      autoDelete: ON_PERMANENT_INSTANCE_DELETION
  externalIPs:
    nic0:
      ipAddress:
        literal: 130.211.181.55
      autoDelete: NEVER
status: EFFECTIVE
---
fingerprint: IbGmJBqqEkk=
name: node-2
preservedState:
...

REST

instanceGroupManagers.listPerInstanceConfigs 또는 regionInstanceGroupManagers.listPerInstanceConfigs 메서드를 호출하여 MIG의 모든 인스턴스별 구성을 나열합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/listPerInstanceConfigs

다음을 바꿉니다.

  • PROJECT_ID: 요청의 프로젝트 ID입니다.
  • ZONE: MIG가 위치한 영역입니다(영역 MIG에 적용).
    • 리전 MIG의 경우 zones/ZONEregions/REGION으로 바꾸고 MIG의 리전을 지정합니다.
  • NAME: 인스턴스별 구성을 나열할 MIG의 이름입니다.

예를 들어 example-group의 모든 인스턴스별 구성을 나열하려면 다음을 실행합니다.

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-group/listPerInstanceConfigs

이 메서드는 그룹의 인스턴스별 구성 목록을 반환합니다.

{
  "items": [
    {
      "fingerprint": "JxPvsKOywuY=",
      "name": "node-1",
      "preservedState" : {
        "disks": {
          "data-disk" : {
            "source": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/disks/data-disk-1",
            "mode": "READ_WRITE",
            "autoDelete": "NEVER"
          }
        },
        "metadata": {
          "role": "primary"
        },
        "internalIPs": {
         "nic0" : {
           "ipAddress" : {
             "address":  "/projects/example-project/regions/us-east1/addresses/node-1-int-ip"
           },
           "autoDelete": "ON_PERMANENT_INSTANCE_DELETION"
         }
        },
        "externalIPs": {
         "nic0": {
           "ipAddress" : {
             "literal": "54.2.3.4"
           },
           "autoDelete": "NEVER"
         }
        }
      },
      "status": "EFFECTIVE"
    },
    {
      "fingerprint": "IbGmJBqqEkk=",
      "name": "node-2",
      "preservedState" : {
        ...
      }
      ...
    },
    ...
  ]
}

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

스테이트풀(Stateful) 구성이 적용되면 MIG는 두 필드에서 각 관리형 인스턴스의 유효한 보존 상태를 생성하고 설정합니다.

  • preservedStateFromPolicy: 인스턴스별 구성으로 재정의된 스테이트풀(Stateful) 구성을 제외하고 스테이트풀(Stateful) 정책에 따라 생성된 보존 상태를 포함합니다.
  • preservedStateFromConfig: 관리형 인스턴스에 이미 적용된 인스턴스별 구성에 따라 생성된 보존 상태를 포함합니다.

MIG에서 각 관리형 인스턴스의 유효한 보존 상태를 확인하려면 gcloud CLI 또는 REST를 사용하여 관리형 인스턴스를 나열합니다.

gcloud

gcloud compute instance-groups managed list-instances 명령어를 사용하고 PRESERVED_STATE 열의 값을 확인하여 보존 상태를 가진 관리형 인스턴스를 확인합니다. 예를 들면 다음과 같습니다.

gcloud compute instance-groups managed list-instances NAME

NAME    ZONE        STATUS   HEALTH_STATE  ACTION  PRESERVED_STATE  INSTANCE_TEMPLATE  ...
node-1  us-east1-c  RUNNING                NONE    POLICY,CONFIG    example-template
node-2  us-east1-c  RUNNING                NONE    POLICY,CONFIG    example-template

PRESERVED_STATE 열에는 다음 값이 포함될 수 있습니다.

  • POLICY: 스테이트풀(Stateful) 정책에 따라 관리형 인스턴스에 보존 상태가 있습니다.
  • CONFIG: 인스턴스별 구성에 따라 관리형 인스턴스에 보존 상태가 있습니다.
  • 값 없음: 관리형 인스턴스에 보존 상태가 없으며 스테이트리스(Stateless)입니다.

gcloud compute instance-groups managed describe-instance 명령어를 실행하여 특정 관리형 인스턴스의 보존 상태를 봅니다.

gcloud compute instance-groups managed describe-instance INSTANCE_GROUP_NAME \
  --instance INSTANCE_NAME

다음을 바꿉니다.

  • INSTANCE_GROUP_NAME: MIG 이름입니다.
  • INSTANCE_NAME: 그룹의 관리형 인스턴스 이름입니다.

예를 들어 example-group에서 node-1 관리형 인스턴스의 보존 상태를 보려면 다음을 실행합니다.

gcloud compute instance-groups managed describe-instance example-group \
  --instance node-1
instance: .../example-project/zones/us-east1-c/instances/node-1
instanceStatus: RUNNING
currentAction: NONE
id: 123456789012345678
version:
  instanceTemplate: .../example-project/global/instanceTemplates/example-template
preservedStateFromPolicy:
  disks:
    data-disk:
      autoDelete: NEVER
      mode: rw
      source: .../example-project/zones/us-east1-c/disks/data-disk-1
    internalIPs:
      nic0:
        ipAddress:
          literal: 10.0.0.1
          address: .../example-project/regions/us-east1/addresses/node-1-int-ip
        autoDelete: ON_PERMANENT_INSTANCE_DELETION
preservedStateFromConfig:
  metadata:
    role: primary
    my-key: my-value
  externalIPs:
    nic0:
      ipAddress:
        literal: 130.211.181.55
        address: .../example-project/regions/us-east1/addresses/node-1-nat-ip
      autoDelete: NEVER

REST

instanceGroupManagers.listManagedInstances 또는 regionInstanceGroupManagers.listManagedInstances 메서드를 호출하여 관리형 인스턴스를 나열하여 각 인스턴스의 보존 상태를 확인합니다.

예를 들어 모든 관리형 인스턴스를 나열하려면 다음을 실행합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/listManagedInstances

이 메서드는 보존 상태에 대한 정보가 포함된 그룹의 관리형 인스턴스 목록을 반환합니다.

{
  "managedInstances": [
    {
      "instance": ".../example-project/zones/us-east1-c/instances/node-1",
      "instanceStatus": "RUNNING",
      "currentAction": "NONE",
      "id": "123456789012345678",
      "version": {
         "instanceTemplate":".../example-project/global/instanceTemplates/example-template"
      },
      "preservedStateFromPolicy": {
        "disks": {
          "data-disk" : {
            "source": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/disks/data-disk-1",
            "mode": "rw",
            "autoDelete": "NEVER"
          },
        },
        "internalIPs": {
          "nic0" : {
            "ipAddress": {
              "literal": "10.0.0.1",
              "address":  "/projects/example-project/regions/us-east1/addresses/node-1-int-ip"
            },
            "autoDelete": "ON_PERMANENT_INSTANCE_DELETION"
          }
        },
      },
      "preservedStateFromConfig": {
        "metadata": {
          "role": "primary",
          "my-key": "my-value"
        },
        "externalIPs": {
          "nic0": {
            "ipAddress": {
              "literal": "130.211.181.55",
              "address":  "/projects/example-project/regions/us-east1/addresses/node-1-nat-ip"
            },
            "autoDelete": "NEVER"
          }
        },
      }
    },
    {
      "instance": ".../example-project/zones/us-east1-c/instances/node-2",
      "instanceStatus": "RUNNING",
      ...
      "preservedStateFromPolicy": {
        ...
      },
      "preservedStateFromConfig": {
        ...
      }
    },
    ...
  ]
}

연결된 고정 IP 주소 리소스 보기

MIG에서 관리형 인스턴스에 할당된 고정 IP 주소(Address 리소스)를 검색하려면 이러한 인스턴스의 예약된 상태를 확인합니다. 고정 주소는 ipAddress.address 필드에서 확인할 수 있습니다.

MIG 또는 인스턴스가 더 이상 존재하지 않지만 IP 주소 예약은 여전히 존재하는 경우 고정 내부 또는 외부 주소 예약을 나열하면 됩니다.

스테이트풀(Stateful) 구성 삭제

다음 상황에서는 스테이트풀(Stateful) 구성을 삭제하는 것이 유용합니다.

  • 독립형 VM을 스테이트풀(Stateful) MIG로 마이그레이션했고 이제 스테이트풀(Stateful) 구성을 인스턴스별 구성에서 공통 스테이트풀(Stateful) 정책으로 이동하려는 경우
  • 워크로드를 다시 설계했으며 더 이상 VM 인스턴스에서 상태를 유지할 필요가 없는 경우
  • 만들었던 테스트용 스테이트풀(Stateful) 구성을 정리하려는 경우

이 섹션에서는 인스턴스별 구성에서 스테이트풀(Stateful) 정책을 완전히 삭제하는 방법을 설명합니다. 스테이트풀(Stateful) 정책 또는 인스턴스별 구성의 일부만 삭제해야 하는 경우에는 다음 섹션을 참조하세요.

스테이트풀(Stateful) 정책 삭제

스테이트풀(Stateful) 정책을 삭제하면 MIG의 모든 VM이 영향을 받습니다. MIG는 스테이트풀(Stateful) 정책에서 구성된 모든 스테이트풀(Stateful) 리소스를 스테이트리스(Stateless)로 취급합니다. 단, 이러한 리소스가 개별 인스턴스의 인스턴스별 구성에서 구성된 경우는 예외입니다. 이후 인스턴스 재생성, 자동 복구 또는 업데이트 작업 시 현재 스테이트리스(Stateless) 리소스는 상태를 잃을 수 있습니다.

  • 디스크를 인스턴스 템플릿에서 정의된 소스에서 삭제하고 다시 만들 수 있습니다.
  • IP 주소가 변경될 수 있습니다.

개념 정보는 스테이트풀(Stateful) 정책에서 리소스 삭제가 보존 상태에 미치는 영향을 참조하세요.

gcloud

스테이트풀(Stateful) 정책에서 모든 구성을 삭제하려면 적용 가능한 플래그를 사용해서 gcloud compute instance-groups managed update 명령어를 실행합니다. 적용 가능한 플래그는 다음과 같습니다.

  • --remove-stateful-disks: 삭제 후 구성된 모든 스테이트풀(Stateful) 디스크의 기기 이름을 나열합니다.
  • --remove-stateful-internal-ips: 삭제 후 구성된 모든 스테이트풀(Stateful) 내부 IP 주소의 네트워크 인터페이스 이름을 나열합니다.
  • --remove-stateful-external-ips: 삭제 후 구성된 모든 스테이트풀(Stateful) 외부 IP 주소의 네트워크 인터페이스 이름을 나열합니다.

예를 들어 스테이트풀(Stateful) 정책에 기기 이름이 data-disklogs-disk인 스테이트풀(Stateful) 디스크 두 개의 구성이 포함되어 있고 nic0 네트워크 인터페이스의 스테이트풀(Stateful) 내부 및 외부 IP 주소의 구성이 포함된 경우 다음 명령어를 실행하여 정책을 삭제합니다.

gcloud compute instance-groups managed update example-group \
    --zone us-east1-c \
    --remove-stateful-disks data-disk,logs-disk \
    --remove-stateful-internal-ips nic0 \
    --remove-stateful-external-ips nic0

MIG가 스테이트풀(Stateful) 정책에서 data-disklogs-disk 스테이트풀(Stateful) 구성과 nic0 네트워크 인터페이스의 스테이트풀(Stateful) 내부 및 외부 IP 구성을 삭제합니다. 그러면 인스턴스별 구성에 디스크 또는 IP 주소도 구성되어 있지 않는 한 MIG에서 그룹에 있는 모든 관리형 인스턴스의 보존 상태에서 이러한 디스크와 고정 IP 주소를 비동기식으로 자동 삭제합니다.

REST

스테이트풀(Stateful) 정책의 모든 구성을 삭제하려면 instanceGroupManagers.patch 메서드 또는 regionInstanceGroupManagers.patch 메서드를 사용하여 statefulPolicy 필드를 null로 설정합니다.

예를 들어 다음 호출은 스테이트풀(Stateful) 정책 구성을 삭제합니다.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME

{
  "statefulPolicy": null
}

MIG는 스테이트풀(Stateful) 정책 구성을 지우고 그룹의 모든 관리형 인스턴스의 보존 상태에서 스테이트풀(Stateful) 리소스를 비동기식으로 자동 삭제합니다. 단, 리소스가 인스턴스별 구성에서 구성된 경우는 예외입니다.

특정 VM의 스테이트풀(Stateful) 구성 삭제

특정 VM의 스테이트풀(Stateful) 구성 삭제는 두 단계로 진행됩니다.

  1. 연결된 인스턴스별 구성을 삭제합니다.
  2. 변경사항을 관리형 인스턴스에 적용합니다. 변경사항을 수동으로 적용할지 또는 자동으로 적용할지 선택할 수 있습니다.

변경사항이 적용된 후에는 이전에 인스턴스별 구성에서 구성된 모든 스테이트풀(Stateful) 항목이 그룹의 스테이트풀(Stateful) 정책에서도 구성되어 있지 않으면 이제 스테이트리스(Stateless)로 처리됩니다. 이후에 VM을 다시 만들거나 업데이트하면 항목 상태를 잃게 됩니다.

  • 디스크가 인스턴스 템플릿의 소스에서 분리되거나 재생성될 수 있습니다.
  • 메타데이터가 삭제되거나 인스턴스 템플릿에서 정의된 값으로 재설정됩니다.
  • IP 주소가 변경될 수 있습니다.

자세한 내용은 인스턴스별 구성에서 항목 삭제 시 보존 상태에 미치는 영향을 참조하세요.

gcloud

인스턴스별 구성을 완전히 삭제하려면 gcloud compute instance-groups managed instance-configs delete 명령어를 실행합니다.

선택사항인 --update-instance 플래그를 사용하여 변경사항을 인스턴스에 즉시 적용합니다(기본값). --no-update-instance 플래그를 설정하면 다음에 인스턴스를 다시 만들거나 업데이트할 때 변경사항이 적용됩니다.

--instance-update-minimal-action 플래그만 --update-instance 플래그와 함께 사용할 수 있습니다.

gcloud compute instance-groups managed instance-configs delete INSTANCE_GROUP_NAME \
  --instances INSTANCE_NAME[,INSTANCE_NAME,...] \
  [--no-update-instance | --update-instance] \
  [--instance-update-minimal-action MINIMAL_ACTION]

다음을 바꿉니다.

  • INSTANCE_GROUP_NAME: MIG의 이름입니다.
  • INSTANCE_NAME: 인스턴스별 구성을 삭제할 인스턴스의 이름입니다.
  • MINIMAL_ACTION: 인스턴스별 구성 업데이트를 VM에 적용할 때 수행할 최소 작업입니다. 이 값은 다음 중 하나여야 합니다.
    • none: 적용할 작업이 없습니다.
    • refresh: VM을 중지하지 않고 적용할 수 있는 업데이트를 적용합니다.
    • restart: VM을 중지했다가 다시 시작합니다.
    • replace: VM을 다시 만듭니다.

예를 들어 example-group에서 node-1의 인스턴스별 구성을 삭제하려면 다음 명령어를 실행합니다.

gcloud compute instance-groups managed instance-configs delete example-group \
  --instances node-1 \
  --update-instance

MIG가 node-1의 인스턴스별 구성을 삭제하고 더 이상 이전 스테이트풀(Stateful) 항목을 스테이트풀(Stateful)로 취급하지 않습니다. VM이 업데이트되고 구성 변경사항이 적용되었기 때문입니다.

REST

인스턴스 한 개 이상에서 인스턴스별 구성을 완전히 삭제하려면 instanceGroupManagers.deletePerInstanceConfigs 또는 regionInstanceGroupManagers.deletePerInstanceConfigs 메서드를 사용합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/deletePerInstanceConfigs

{
  "names": ["INSTANCE_NAME",...]
}

다음을 바꿉니다.

  • PROJECT_ID: 요청의 프로젝트 ID입니다.
  • ZONE: MIG가 위치한 영역입니다(영역 MIG에 적용).
    • 리전 MIG의 경우 zones/ZONEregions/REGION으로 바꾸고 MIG의 리전을 지정합니다.
  • INSTANCE_GROUP_NAME: MIG 이름입니다.
  • INSTANCE_NAME: 인스턴스별 구성을 삭제할 인스턴스의 이름입니다.

deletePerInstanceConfig 메서드는 지정된 인스턴스별 구성을 삭제하지만 변경사항을 연결된 VM에 적용하지 않습니다. 변경사항은 인스턴스를 다시 만들거나 업데이트할 때 VM에 적용됩니다. 선택한 VM을 수동으로 업데이트하여 변경사항을 적용합니다.

예를 들어 example-group에서 node-1의 인스턴스별 구성을 삭제하려면 다음 메서드를 호출합니다.

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-group/deletePerInstanceConfigs

{
  "names": ["node-1"]
}

이 메서드는 example-group에서 node-1 인스턴스의 인스턴스별 구성을 삭제합니다. 변경사항은 인스턴스를 다시 만들거나 업데이트할 때 관리형 인스턴스에 적용됩니다.

구성 변경사항을 적용하려면 instanceGroupManagers.applyUpdatesToInstances 메서드를 호출합니다.

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-group/applyUpdatesToInstances

{
  "instances": ["/zones/us-east1-c/instances/node-1"]
}

이 메서드는 관리형 인스턴스의 보존 상태에서 스테이트풀(Stateful) 항목을 삭제합니다.

의견 보내기

스테이트풀(Stateful) MIG에 대한 사용 사례, 문제 또는 의견을 알고 싶습니다. mig-discuss@google.com으로 저희 팀에 의견을 공유해 주세요.

다음 단계