VM 테넌시 업데이트


이 페이지에서는 VM의 노드 어피니티 라벨을 수정하여 VM의 테넌시를 업데이트하는 방법을 설명합니다.

기본적으로 Compute Engine은 멀티 테넌트 호스트에 VM을 배포합니다. 멀티 테넌트 호스트에서 VM은 일반적으로 호스트 리소스를 다른 프로젝트의 VM 및 고객과 공유합니다. VM을 단독 테넌트 노드로 이동하면 프로젝트가 단독 테넌트 노드 하드웨어에 독점적으로 액세스하고 완전히 제어할 수 있습니다. 사용자가 해당 노드의 유일한 테넌트이므로 사용자의 워크로드는 다른 프로젝트 및 VM의 워크로드와 격리됩니다.

노드 어피니티 라벨을 수정하면 다음과 같은 방식으로 VM을 이동할 수 있습니다.

  • 멀티 테넌트 호스트에서 단독 테넌트 노드 그룹 또는 노드로 이동
  • 단독 테넌트 노드 그룹 또는 노드에서 멀티 테넌트 호스트로 이동
  • 단독 테넌트 노드에서 다른 단독 테넌트 노드 또는 노드 그룹으로 이동
  • 단독 테넌트 노드 그룹에서 다른 단독 테넌트 노드 그룹 또는 노드로 이동

워크로드를 단독 테넌시로 임시 이동

성능 검사 또는 규정 준수 규칙 변경을 위해 주기적으로 추가 격리가 필요한 경우처럼 워크로드의 요구사항이 변동하기 때문에 특정 워크로드를 단독 테넌트 노드로 임시 이동해야 할 수 있습니다. 그런 다음 단독 테넌시가 더 이상 필요하지 않으면 VM을 멀티 테넌트 호스트에 다시 배포합니다. VM의 테넌시를 수정하면 Compute Engine이 VM의 구성을 유지합니다.

단독 테넌트 워크로드 재분산

단독 테넌트 노드와 노드 그룹 간에 VM을 이동하는 것 외에도 노드와 노드 그룹 간에 VM을 이동하여 노드를 통합하고 워크로드를 재분산할 수 있습니다. VM을 이동하려면 다시 시작해야 하므로 워크로드의 가용성 요구사항에 따라 VM 이동 계획을 세우세요.

제한사항

  • 단독 테넌트 노드에서 이미 실행 중인 VM을 이동하면 VM이 다른 노드에서 다시 시작될 수 있습니다. 노드 그룹 이름 또는 node-group-name 기본 어피니티 라벨을 사용하여 VM의 단독 테넌시를 지정하면 VM이 노드 그룹의 노드에서 다시 시작될 수 있습니다. 어피니티 또는 안티어피니티 커스텀 어피니티 라벨을 사용하여 VM의 단독 테넌시를 지정하면 VM이 영역에 있는 노드 그룹의 노드에서 다시 시작될 수 있습니다.

시작하기 전에

  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

    이 페이지의 샘플 사용 방법에 대한 탭을 선택하세요.

    gcloud

    1. Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init
    2. 기본 리전 및 영역을 설정합니다.

    REST

    로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.

      Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init

VM을 단독 테넌시로 이동

VM을 다른 단독 노드나 노드 그룹 또는 멀티 테넌트 호스트에서 특정 단독 테넌트 노드 또는 노드 그룹으로 이동하여 테넌시를 업데이트합니다.

gcloud

  1. VM을 중지합니다.

    gcloud compute instances stop VM_NAME
    

    VM_NAME을 중지할 VM의 이름으로 바꿉니다.

  2. VM을 이동할 노드 그룹을 지정하여 테넌시를 업데이트합니다.

    gcloud compute instances set-scheduling VM_NAME \
        --node-group=NODE_GROUP_NAME
    

    다음을 바꿉니다.

    • VM_NAME: 특정 노드 그룹으로 이동할 VM의 이름

    • VM을 이동할 노드 그룹의 NODE_GROUP_NAME 이름

    또는 노드 이름을 사용하거나 어피니티 라벨을 사용하여 VM을 단독 테넌트 노드로 이동할 수 있습니다. 자세한 내용은 gcloud compute instances set-scheduling 명령어를 참조하세요.

  3. VM을 시작합니다.

    gcloud compute instances start VM_NAME
    

    VM_NAME을 어피니티 라벨 파일의 콘텐츠로 이동에 지정된 노드 그룹에서 시작할 VM의 이름으로 바꿉니다.

REST

  1. VM을 중지합니다. 이 명령어에 대한 자세한 내용은 instances.stop을 참조하세요.

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

    다음을 바꿉니다.

    • PROJECT_ID: 중지할 VM이 포함된 프로젝트의 ID

    • ZONE: 프로젝트가 포함된 영역

    • VM_NAME: 중지할 VM의 이름

  2. VM을 이동할 노드 그룹을 지정하여 테넌시를 업데이트합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling
    
    {
      "nodeAffinities": [
        {
          "key": "compute.googleapis.com/node-group-name",
          "operator": "IN",
          "values": [
            "NODE_GROUP_NAME"
          ]
        }
      ]
    }
    

    다음을 바꿉니다.

    • 이동할 VM이 포함된 프로젝트의 PROJECT_ID ID

    • ZONE: 프로젝트가 포함된 영역

    • VM_NAME: 특정 노드 그룹으로 이동할 VM의 이름

    • VM을 이동할 노드 그룹의 NODE_GROUP_NAME 이름

    또는 노드 이름을 사용하거나 어피니티 라벨을 사용하여 VM을 단독 테넌트 노드로 이동할 수 있습니다. 자세한 내용은 instances.setScheduling 메서드를 참조하세요.

  3. VM을 시작합니다. 이 명령어에 대한 자세한 내용은 instances.start 항목을 참조하세요.

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

    다음을 바꿉니다.

    • PROJECT_ID: 시작할 VM이 포함된 프로젝트의 ID

    • ZONE: 프로젝트가 포함된 영역

    • VM_NAME: 시작할 VM의 이름

VM을 단독 테넌시에서 이동

VM에 더 이상 전용 하드웨어가 필요 없는 경우(예: VM을 다른 VM에서 격리해야 하는 이벤트 이후) VM을 단독 테넌트 노드에서 멀티 테넌트 호스트로 이동합니다.

gcloud

  1. VM을 중지합니다.

    gcloud compute instances stop VM_NAME
    

    VM_NAME을 중지할 VM의 이름으로 바꿉니다.

  2. 멀티 테넌트 호스트로 이동할 수 있도록 VM에서 노드 어피니티를 지웁니다.

    gcloud compute instances set-scheduling VM_NAME --clear-node-affinities
    

    VM_NAME노드 어피니티를 삭제할 VM의 이름으로 바꿉니다.

  3. 멀티 테넌트 호스트에서 VM을 시작합니다.

    gcloud compute instances start VM_NAME
    

    VM_NAME을 이전에 노드 어피니티를 삭제한 VM의 이름으로 바꿉니다.

REST

  1. VM을 중지합니다. 이 명령어에 대한 자세한 내용은 instances.stop 항목을 참조하세요.

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

    다음을 바꿉니다.

    • PROJECT_ID: 중지할 VM이 포함된 프로젝트의 ID

    • ZONE: 프로젝트가 포함된 영역

    • VM_NAME: 중지할 VM의 이름

  2. VM을 멀티 테넌트 호스트로 이동하기 위해 VM의 노드 어피니티를 지웁니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling
    
    {
      "nodeAffinities": []
    }
    

    다음을 바꿉니다.

    • 이동할 VM이 포함된 프로젝트의 PROJECT_ID ID

    • ZONE: 프로젝트가 포함된 영역

    • 노드 어피니티를 지울 VM의 VM_NAME 이름

  3. 멀티 테넌트 호스트에서 VM을 시작합니다. 이 명령어에 대한 자세한 내용은 instances.start를 참조하세요.

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

    다음을 바꿉니다.

    • PROJECT_ID: 시작할 VM이 포함된 프로젝트의 ID

    • ZONE: 프로젝트가 포함된 영역

    • VM_NAME: 시작할 VM의 이름

다음 단계