단독 테넌트 노드에 VM 프로비저닝


이 페이지에서는 단일 프로젝트에서만 VM을 실행하는 물리적 서버인 단독 테넌트 노드에 VM을 프로비저닝하는 방법을 설명합니다. 단독 테넌트 노드에 VM을 프로비저닝하기 전에 단독 테넌트 노드 개요를 참조하세요.

단독 테넌트 노드에 VM을 프로비저닝하려면 다음을 수행해야 합니다.

  1. 단독 테넌트 노드 템플릿 만들기. 단독 테넌트 노드 템플릿은 단독 테넌트 노드 그룹의 모든 단독 테넌트 노드에 동일한 속성을 지정합니다.

  2. 이전에 만든 단독 테넌트 노드 템플릿을 사용하여 단독 테넌트 노드 그룹 만들기

  3. VM을 만들어 단독 테넌트 노드 그룹에 프로비저닝

시작하기 전에

  • 단독 테넌트 노드에 VM을 프로비저닝하기 전에 할당량을 확인합니다. 예약한 노드 수와 크기에 따라 추가 할당량을 요청해야 할 수도 있습니다.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음 옵션 중 하나를 선택하여 Compute Engine에 인증하면 됩니다.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      자세한 내용은 Google Cloud 인증 문서의 REST 사용을 위한 인증을 참고하세요.

단독 테넌트 노드 템플릿 만들기

단독 테넌트 노드 템플릿은 단독 테넌트 노드 그룹의 속성을 지정하는 리전 리소스입니다. 노드 그룹을 만들기 전에 노드 템플릿을 만들어야 합니다. 하지만 Google Cloud 콘솔을 사용하는 경우 단독 테넌트 노드 그룹을 만드는 동안 노드 템플릿을 만들어야 합니다.

콘솔

노드 그룹을 만들기 전 단독 테넌트 노드 템플릿을 만들어야 합니다. Google Cloud 콘솔을 사용하여 단독 테넌트 노드 그룹을 만드는 동안 노드 템플릿을 만들어야 합니다. 노드 그룹 속성에 지정한 것과 동일한 리전에 새 노드 템플릿이 생성됩니다.

  1. Google Cloud 콘솔에서 단독 테넌트 노드 페이지로 이동합니다.

    단독 테넌트 노드로 이동

  2. 노드 그룹 만들기를 클릭합니다.

  3. 노드 그룹의 이름을 지정합니다.

  4. 노드 템플릿을 만들 리전을 지정합니다. 노드 템플릿을 사용해 이 리전의 모든 영역에 노드 그룹을 만들 수 있습니다.

  5. 영역을 지정하고 계속을 클릭합니다.

  6. 노드 템플릿 목록에서 노드 템플릿 만들기를 클릭하여 단독 테넌트 노드 템플릿 만들기를 시작합니다.

  7. 노드 템플릿의 이름을 지정합니다.

  8. 이 노드 템플릿을 기반으로 만들 노드 그룹에서 각 단독 테넌트 노드의 노드 유형을 지정합니다.

  9. 선택사항: 노드 템플릿에 대해 다음 속성을 지정할 수도 있습니다.

    • 로컬 SSDGPU 가속기를 추가합니다.
    • CPU 오버커밋 사용 설정을 선택하여 노드에 예약된 각 VM에 대해 CPU 오버커밋 수준을 제어합니다.

    • 노드 어피니티 라벨을 추가합니다. 어피니티 라벨을 사용하면 노드와 노드 그룹이 논리적으로 그룹화될 수 있으며 나중에 VM을 프로비저닝할 때 VM에 어피니티 라벨을 지정하여 특정 노드 또는 노드 그룹에 VM을 예약할 수 있습니다. 상세 설명은 노드 어피니티 및 안티어피니티를 참조하세요.

  10. 만들기를 클릭하여 노드 템플릿 만들기를 마칩니다.

  11. 선택사항: 다른 리전에 새 단독 테넌트 노드 템플릿을 추가하려면 위 단계를 반복합니다.

노드 템플릿을 보려면 단독 테넌트 노드 페이지에서 노드 템플릿을 클릭합니다.

gcloud

gcloud compute sole-tenancy node-templates create 명령어를 사용하여 노드 템플릿을 만듭니다.

gcloud compute sole-tenancy node-templates create TEMPLATE_NAME \
  --node-type=NODE_TYPE \
  [--region=REGION \]
  [--node-affinity-labels=AFFINITY_LABELS \]
  [--accelerator type=GPU_TYPE,count=GPU_COUNT \]
  [--disk type=local-ssd,count=DISK_COUNT,size=DISK_SIZE \]
  [--cpu-overcommit-type=CPU_OVERCOMMIT_TYPE]

다음을 바꿉니다.

  • TEMPLATE_NAME: 새 노드 템플릿의 이름입니다.

  • NODE_TYPE: 이 템플릿을 기반으로 만든 단독 테넌트 노드의 노드 유형입니다. 각 영역에서 사용할 수 있는 노드 유형 목록을 가져오려면 gcloud compute sole-tenancy node-types list 명령어를 사용합니다.

  • REGION: 노드 템플릿을 만들 리전입니다. 이 템플릿을 사용해 이 리전의 모든 영역에 노드 그룹을 만들 수 있습니다.

  • AFFINITY_LABELS: 어피니티 라벨 의 키와 값([KEY=VALUE,...])입니다. 어피니티 라벨을 사용하면 노드와 노드 그룹이 논리적으로 그룹화될 수 있으며 나중에 VM을 프로비저닝할 때 VM에 어피니티 라벨을 지정하여 특정 노드 또는 노드 그룹에 VM을 예약할 수 있습니다. 자세한 내용은 노드 어피니티 및 안티어피니티를 참조하세요.

  • GPU_TYPE: 이 노드 템플릿을 기반으로 생성된 각 단독 테넌트 노드의 GPU 유형입니다. GPU의 영역 가용성에 대한 정보를 보려면 gcloud compute accelerator-types list 명령어를 사용하고 n1 또는 g2 단독 테넌트 노드 유형을 사용할 수 있는 영역을 선택합니다. 영역 가용성에 따라 다음 중 하나로 설정합니다.

    • nvidia-l4
    • nvidia-tesla-p100
    • nvidia-tesla-p4
    • nvidia-tesla-t4
    • nvidia-tesla-v100
  • GPU_COUNT: GPU 유형에 따라 지정할 GPU 수입니다. 다음 표와 같이 GPU 유형에 지정된 값으로 설정합니다.

    GPU_TYPE GPU_COUNT
    nvidia-l4 8
    nvidia-tesla-p100 4
    nvidia-tesla-p4 4
    nvidia-tesla-t4 4
    nvidia-tesla-v100 8
  • DISK_COUNT: SSD 디스크 수입니다. 16 또는 24로 설정합니다.

  • DISK_SIZE: 선택사항으로, 로컬 SSD의 파티션 크기(GB)입니다. 지원되는 유일한 파티션 크기는 375이고, 이 값을 설정하지 않으면 기본적으로 375로 지정됩니다.

  • CPU_OVERCOMMIT_TYPE: VM에서 CPU에 대한 오버커밋 유형입니다. enabled 또는 none으로 설정합니다.

REST

nodeTemplates.insert 메서드를 사용하여 노드 템플릿을 만듭니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/nodeTemplates

{
  "name": "TEMPLATE_NAME",
  "nodeType": "NODE_TYPE",
  "nodeAffinityLabels": {
    "KEY": "VALUE",
    ...
  },
  "accelerators": [
    {
      "acceleratorType": "GPU_TYPE",
      "acceleratorCount": GPU_COUNT
    }
  ],
  "disks": [
    {
      "diskType": "local-ssd",
      "diskSizeGb": DISK_SIZE,
      "diskCount": DISK_COUNT
    }
  ],
  "cpuOvercommitType": CPU_OVERCOMMIT_TYPE
}

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.

  • REGION: 노드 템플릿을 만들 리전입니다. 이 템플릿을 사용해 이 리전의 모든 영역에 노드 그룹을 만들 수 있습니다.

  • TEMPLATE_NAME: 새 노드 템플릿의 이름입니다.

  • NODE_TYPE: 이 템플릿을 기반으로 만든 단독 테넌트 노드의 노드 유형입니다. 각 영역에서 사용할 수 있는 노드 유형 목록을 가져오려면 nodeTypes.list 메서드를 사용합니다.

  • KEY: 키-값 쌍으로 표시된 노드 어피니티 라벨의 키 부분을 지정하는 nodeAffinityLabels 값입니다. 어피니티 라벨을 사용하면 노드와 노드 그룹이 논리적으로 그룹화될 수 있으며 나중에 VM을 프로비저닝할 때 VM에 어피니티 라벨을 지정하여 특정 노드 또는 노드 그룹에 VM을 예약할 수 있습니다. 상세 설명은 노드 어피니티 및 안티어피니티를 참조하세요.

  • VALUE: 노드 어피니티 라벨 키-값 쌍의 값 부분을 지정하는 nodeAffinityLabels 값입니다.

  • GPU_TYPE: 이 노드 템플릿을 기반으로 생성된 각 단독 테넌트 노드의 GPU 유형입니다. GPU의 영역 가용성에 대한 자세한 내용은 gcloud compute accelerator-types list 명령어를 사용하고 n1 또는 g2 단독 테넌트 노드 유형을 사용할 수 있는 영역을 선택합니다. 영역 가용성에 따라 다음 중 하나로 설정합니다.

    • nvidia-l4
    • nvidia-tesla-p100
    • nvidia-tesla-p4
    • nvidia-tesla-t4
    • nvidia-tesla-v100
  • GPU_COUNT: 이 노드 템플릿을 기반으로 생성된 각 단독 테넌트 노드의 GPU 수입니다. 다음 표와 같이 GPU 유형에 지정된 값으로 설정합니다.

    GPU_TYPE GPU_COUNT
    nvidia-l4 8
    nvidia-tesla-p100 4
    nvidia-tesla-p4 4
    nvidia-tesla-t4 4
    nvidia-tesla-v100 8
  • DISK_SIZE: 선택사항으로, 로컬 SSD의 파티션 크기(GB)입니다. 지원되는 유일한 파티션 크기는 375이고, 이 값을 설정하지 않으면 기본적으로 375로 지정됩니다.

  • DISK_COUNT: SSD 디스크 수입니다. 16 또는 24로 설정합니다.

  • CPU_OVERCOMMIT_TYPE: CPU 오버커밋 유형입니다. enabled, none, CPU_OVERCOMMIT_TYPE_UNSPECIFIED로 설정합니다.

단독 테넌트 노드 그룹 만들기

이전에 만든 단독 테넌트 노드 템플릿을 사용하여 단독 테넌트 노드 그룹을 만듭니다. 단독 테넌트 노드 그룹은 단독 테넌트 노드 템플릿에 지정된 속성을 상속하며, 추가로 지정해야 하는 값이 있습니다.

콘솔

  1. Google Cloud 콘솔에서 단독 테넌트 노드 페이지로 이동합니다.

    단독 테넌트 노드로 이동

  2. 노드 그룹 만들기를 클릭하여 노드 그룹 만들기를 시작합니다.

  3. 노드 그룹의 이름을 지정합니다.

  4. 노드 그룹의 리전을 지정하여 해당 리전에서 사용 가능한 노드 템플릿을 표시합니다.

  5. 노드 그룹을 만들 리전 내 영역을 지정합니다.

  6. 노드 템플릿을 지정하여 노드 그룹을 만들거나 노드 템플릿 만들기를 클릭하여 새 단독 테넌트 노드 템플릿을 만듭니다. 선택한 노드 템플릿이 노드 그룹에 적용됩니다.

  7. 노드 그룹 자동 확장 처리자동 확장 모드에 다음 중 하나를 선택합니다.

    • 해제: 노드 그룹 크기를 수동으로 관리합니다.

    • 설정: 노드 그룹에 노드가 자동으로 추가되거나 삭제됩니다.

    • 수평 확장만: 용량이 추가로 필요한 경우 노드 그룹에 노드를 추가합니다.

  8. 그룹의 노드 수를 지정합니다. 노드 그룹 자동 확장 처리를 사용 설정하는 경우 노드 그룹 크기의 범위를 지정합니다. 나중에 값을 수동으로 변경할 수 있습니다.

  9. 유지보수 설정 구성 섹션에서 단독 테넌트 노드 그룹의 유지보수 정책을 다음 값 중 하나로 설정합니다. 유지보수 정책을 사용하면 호스트 유지보수 이벤트 중에 노드 그룹에서 VM 동작을 구성할 수 있습니다. 상세 설명은 유지보수 정책을 참조하세요.

    • 기본값
    • 그대로 다시 시작
    • 노드 그룹 내 마이그레이션
  10. 다음과 같이 일반 유지보수 기간고급 유지보수 제어 중에서 선택하여 단독 테넌트 노드 그룹의 유지보수를 처리할 수 있습니다.

    • 유지보수 기간: 단독 테넌트 노드 그룹의 노드에 대해 계획된 유지보수 이벤트가 발생할 기간을 선택합니다.

    • 단독 테넌시의 고급 유지보수 제어 선택: 단독 테넌시의 고급 유지보수 제어를 사용하면 단독 테넌트 노드 그룹의 계획된 유지보수 이벤트를 제어하고 유지보수 관련 중단을 최소화할 수 있습니다. 고급 유지보수 제어에 동의하려면 단독 테넌시를 위한 고급 유지보수 제어 선택On 위치로 전환합니다. 노드 유지보수에 이 옵션을 사용하면 유지보수 기간 필드가 사용 중지되고 고급 유지보수 제어에서 구성된 대로 유지보수가 실행됩니다.

    고급 유지보수 제어는 기본 유지보수 정책만 지원합니다.

  11. 공유 설정 구성에서 다음 중 하나를 지정하여 공유 설정을 구성합니다.

    • 노드 그룹을 조직의 모든 프로젝트와 공유하려면 이 노드 그룹을 조직 내의 모든 프로젝트와 공유를 선택합니다.
    • 노드 그룹을 조직 내 특정 프로젝트와 공유하려면 이 노드 그룹을 조직 내에서 선택한 프로젝트와 공유를 선택합니다.

    노드 그룹을 공유하지 않으려면 이 노드 그룹을 다른 프로젝트와 공유하지 않음을 선택합니다. 노드 그룹 공유에 대한 자세한 내용은 단독 테넌트 노드 그룹 공유를 참조하세요.

  12. 만들기를 클릭하여 노드 그룹 만들기를 마칩니다.

gcloud

gcloud compute sole-tenancy node-groups create 명령어를 실행하여 이전에 만든 노드 템플릿을 기반으로 노드 그룹을 만듭니다.

gcloud compute sole-tenancy node-groups create GROUP_NAME \
  --node-template=TEMPLATE_NAME \
  --target-size=TARGET_SIZE \
  [--zone=ZONE \]
  [--maintenance-policy=MAINTENANCE_POLICY \]
  [--maintenance-window-start-time=START_TIME \]
  [--autoscaler-mode=AUTOSCALER_MODE: \
  --min-nodes=MIN_NODES \
  --max-nodes=MAX_NODES]

다음을 바꿉니다.

  • GROUP_NAME: 새 노드 그룹의 이름입니다.

  • TEMPLATE_NAME: 이 그룹을 만드는 데 사용할 노드 템플릿의 이름입니다.

  • TARGET_SIZE: 그룹에서 만들 노드 수입니다.

  • ZONE: 노드 그룹을 만들 영역입니다. 노드 그룹의 기반이 되는 노드 템플릿과 동일한 리전에 있어야 합니다.

  • MAINTENANCE_POLICY: 노드 그룹의 유지보수 정책입니다. 상세 설명은 유지보수 정책을 참조하세요. 다음 값 중 하나여야 합니다.

    • default
    • restart-in-place
    • migrate-within-node-group

    또는 --maintenance-interval 플래그를 사용하여 단독 테넌트 노드 그룹에 고급 유지보수 제어를 선택할 수 있습니다. 자세한 내용은 단독 테넌트 노드에서 고급 유지보수 제어 사용 설정을 참조하세요.

  • START_TIME: 이 노드 그룹에 있는 VM의 유지보수 기간의 시작 시간(GMT)입니다. 00:00, 04:00, 08:00, 12:00, 16:00, 20:00 중 하나로 설정합니다. 설정하지 않으면 노드 그룹에 유지보수 기간이 설정되지 않습니다.

  • AUTOSCALER_MODE: 노드 그룹의 자동 확장 처리 정책입니다. 다음 중 하나여야 합니다.

    • off: 노드 그룹 크기를 수동으로 관리합니다.

    • on: 노드 그룹에 노드가 자동으로 추가되거나 삭제됩니다.

    • only-scale-out: 용량이 추가로 필요한 경우 노드 그룹에 노드를 추가합니다.

  • MIN_NODES: 노드 그룹의 최소 크기입니다. 기본값은 0이며 MAX_NODES 이하의 정수 값이어야 합니다.

  • MAX_NODES: 노드 그룹의 최대 크기입니다. 이 값은 100보다 작거나 같고 MIN_NODES보다 크거나 같아야 합니다. AUTOSCALER_MODEoff로 설정되지 않은 경우 필수입니다.

REST

nodeGroups.insert 메서드를 사용하여 이전에 만든 노드 템플릿을 기반으로 노드 그룹을 만듭니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/nodeGroups?initialNodeCount=TARGET_SIZE
{ "nodeTemplate": "regions/REGION/nodeTemplates/TEMPLATE_NAME", "name": "GROUP_NAME", "maintenancePolicy": MAINTENANCE_POLICY, "maintenanceWindow": { "startTime": "START_TIME" } "autoscalingPolicy": { "mode": AUTOSCALER_MODE, "minNodes": MIN_NODES, "maxNodes": MAX_NODES }, }

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.

  • ZONE: 노드 그룹을 만들 영역입니다. 노드 그룹의 기반이 되는 노드 템플릿과 동일한 리전에 있어야 합니다.

  • TARGET_SIZE: 그룹에서 만들 노드 수입니다.

  • REGION: 노드 그룹을 만들 리전입니다. 선택한 리전에 노드 템플릿이 있어야 합니다.

  • TEMPLATE_NAME: 이 그룹을 만드는 데 사용할 노드 템플릿의 이름입니다.

  • GROUP_NAME: 새 노드 그룹의 이름입니다.

  • MAINTENANCE_POLICY: 노드 그룹의 유지보수 정책입니다. 다음 값 중 하나여야 합니다.

    • DEFAULT
    • RESTART_IN_PLACE
    • MIGRATE_WITHIN_NODE_GROUP

    또는 maintenanceInterval 필드를 사용하여 단독 테넌트 노드 그룹에 고급 유지보수 제어를 선택할 수 있습니다. 자세한 내용은 단독 테넌트 노드에서 고급 유지보수 제어 사용 설정을 참조하세요.

  • START_TIME: 이 노드 그룹에 있는 VM의 유지보수 기간의 시작 시간(GMT)입니다. 00:00, 04:00, 08:00, 12:00, 16:00, 20:00 중 하나로 설정합니다. 설정하지 않으면 노드 그룹에 유지보수 기간이 설정되지 않습니다.

  • AUTOSCALER_MODE: 노드 그룹의 자동 확장 처리 정책입니다. 다음 값 중 하나여야 합니다.

    • OFF: 노드 그룹 크기를 수동으로 관리합니다.

    • ON: 노드 그룹에 노드가 자동으로 추가되거나 삭제됩니다.

    • ONLY_SCALE_OUT: 용량이 추가로 필요한 경우 노드 그룹에 노드를 추가합니다.

  • MIN_NODES: 노드 그룹의 최소 크기입니다. 기본값은 0이며 MAX_NODES 이하의 정수 값이어야 합니다.

  • MAX_NODES: 노드 그룹의 최대 크기입니다. 이 값은 100보다 작거나 같고 MIN_NODES보다 크거나 같아야 합니다. AUTOSCALER_MODEOFF로 설정되지 않은 경우 필수입니다.

단독 테넌트 VM 프로비저닝

이전에 만든 노드 템플릿을 기반으로 노드 그룹을 만든 후에는 단독 테넌트 노드 그룹에 개별 VM을 프로비저닝할 수 있습니다.

이전에 노드 템플릿에 할당한 어피니티 라벨과 일치하는 어피니티 라벨이 있는 특정 노드나 노드 그룹에 VM을 프로비저닝하려면 VM 인스턴스를 만드는 표준 절차를 따라 VM에 어피니티 라벨을 할당합니다.

또는 다음 절차를 따라 노드 그룹 세부정보 페이지에서 단독 테넌트 노드에서 VM을 프로비저닝할 수 있습니다. Compute Engine은 VM이 프로비저닝되는 노드 그룹을 기준으로 어피니티 라벨을 할당합니다.

콘솔

  1. Google Cloud 콘솔에서 단독 테넌트 노드 페이지로 이동합니다.

    단독 테넌트 노드로 이동

  2. 노드 그룹을 클릭합니다.

  3. VM 인스턴스를 프로비저닝할 노드 그룹의 이름을 클릭합니다. 그런 다음 필요한 경우 특정 단독 테넌트 노드에 VM을 프로비저닝하려면 VM을 프로비저닝할 특정 단독 테넌트 노드의 이름을 클릭합니다.

  4. 인스턴스 만들기를 클릭하여 이 노드 그룹에 VM 인스턴스를 프로비저닝하고, 이름, 리전, 영역에 자동으로 적용된 값을 기록하고, 필요에 따라 값을 수정합니다.

  5. 머신 계열, 시리즈, 머신 유형을 지정하여 머신 구성을 선택합니다. 단독 테넌트 노드 유형에 해당하는 시리즈를 선택합니다.

  6. 필요에 따라 부팅 디스크, 방화벽, 기타 설정을 수정합니다.

  7. 단독 테넌시를 클릭하고, 자동으로 할당된 노드 어피니티 라벨을 기록하고, 찾아보기를 사용하여 필요에 따라 조정합니다.

  8. 관리를 클릭하고 호스트 유지보수 시에 다음 중 하나를 선택합니다.

    • VM 인스턴스 마이그레이션(권장): 유지보수 이벤트 중에 VM이 노드 그룹의 다른 노드로 마이그레이션됩니다.

    • 종료: 유지보수 이벤트 중에 VM이 중지됩니다.

  9. 자동 다시 시작에 다음 중 하나를 선택합니다.

    • 사용(권장): 유지보수 이벤트 중에 VM이 중지되면 VM을 자동으로 다시 시작합니다.

    • 사용 안함: 유지보수 이벤트 후에 VM을 자동으로 다시 시작하지 않습니다.

  10. 만들기를 클릭하여 단독 테넌트 VM 만들기를 마칩니다.

gcloud

gcloud compute instances create 명령어를 사용하여 단독 테넌트 노드 그룹에서 VM을 프로비저닝합니다.

gcloud compute instances create VM_NAME \
  [--zone=ZONE \]
  --image-family=IMAGE_FAMILY \
  --image-project=IMAGE_PROJECT \
  --node-group=GROUP_NAME \
  --machine-type=MACHINE_TYPE \
  [--maintenance-policy=MAINTENANCE_POLICY \]
  [--accelerator type=GPU_TYPE,count=GPU_COUNT \]
  [--local-ssd interface=SSD_INTERFACE \]
  [--restart-on-failure]

--restart-on-failure 플래그는 단독 테넌트 VM을 중지 후에 다시 시작할지 여부를 나타냅니다. 이 플래그는 기본적으로 사용 설정되어 있습니다. 사용 중지하려면 --no-restart-on-failure를 사용합니다.

다음을 바꿉니다.

  • VM_NAME: 새로운 단독 테넌트 VM의 이름입니다.

  • ZONE: 단독 테넌트 VM을 프로비저닝할 영역입니다.

  • IMAGE_FAMILY: VM을 만드는 데 사용할 이미지의 이미지 계열입니다.

  • IMAGE_PROJECT: 이미지 계열의 이미지 프로젝트입니다.

  • GROUP_NAME: VM을 프로비저닝할 노드 그룹의 이름입니다.

  • MACHINE_TYPE: 단독 테넌트 VM의 머신 유형입니다. 프로젝트에 사용 가능한 머신 유형 목록을 가져오려면 gcloud compute machine-types list 명령어를 사용합니다.

  • MAINTENANCE_POLICY: 유지보수 이벤트 중에 단독 테넌트 VM의 다시 시작 동작을 지정합니다. 다음 중 하나로 설정합니다.

    • MIGRATE: 유지보수 이벤트 중에 VM이 노드 그룹의 다른 노드로 마이그레이션됩니다.

    • TERMINATE: 유지보수 이벤트 중에 VM이 중지됩니다.

  • GPU_TYPE: GPU 유형입니다. 노드 템플릿을 만들 때 지정된 가속기 유형 중 하나로 설정합니다.

  • GPU_COUNT: 이 VM에 연결할 노드 템플릿에 지정된 총 GPU 수입니다. 기본값은 1입니다.

  • SSD_INTERFACE: 로컬 SSD 인터페이스의 유형입니다. 로컬 SSD를 지원하는 노드 템플릿에서 생성된 인스턴스에만 이 속성을 설정할 수 있습니다. 인스턴스를 만들 때 이를 지정하고 노드 템플릿이 로컬 SSD를 지원하지 않으면 인스턴스 생성이 실패합니다. 부팅 디스크 이미지 드라이버가 NVMe에 대해 최적화된 경우 nvme로 설정하고 그렇지 않으면 scsi로 설정합니다. 이 플래그와 해당 값을 각 로컬 SSD 파티션에 한 번씩 지정하세요.

REST

instances.insert 메서드를 사용하여 단독 테넌트 노드 그룹에서 VM을 프로비저닝합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/VM_ZONE/instances
{ "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name": "VM_NAME", "scheduling": { "onHostMaintenance": MAINTENANCE_POLICY, "automaticRestart": RESTART_ON_FAILURE, "nodeAffinities": [ { "key": "compute.googleapis.com/node-group-name", "operator": "IN", "values": [ "GROUP_NAME" ] } ] }, "networkInterfaces": [ { "network": "global/networks/NETWORK", "subnetwork": "regions/REGION/subnetworks/SUBNETWORK" } ], "guestAccelerators": [ { "acceleratorType": GPU_TYPE, "acceleratorCount": GPU_COUNT } ], "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY" } }, { "type":"SCRATCH", "initializeParams":{ "diskType":"zones/LOCAL_SSD_ZONE/diskTypes/local-ssd" }, "autoDelete":true, "interface":"SSD_INTERFACE" } ] }

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.

  • VM_ZONE: 단독 테넌트 VM을 프로비저닝할 영역입니다.

  • MACHINE_TYPE_ZONE: 머신 유형의 영역입니다.

  • MACHINE_TYPE: 단독 테넌트 VM의 머신 유형입니다. 프로젝트에 사용 가능한 머신 유형 목록을 가져오려면 machineTypes.list 메서드를 사용합니다.

  • VM_NAME: 새로운 단독 테넌트 VM의 이름입니다.

  • MAINTENANCE_POLICY: 유지보수 이벤트 중에 단독 테넌트 VM의 다시 시작 동작을 지정합니다. 다음 중 하나로 설정합니다.

    • MIGRATE: 유지보수 이벤트 중에 VM이 노드 그룹의 다른 노드로 마이그레이션됩니다.

    • TERMINATE: 유지보수 이벤트 중에 VM이 중지됩니다.

  • RESTART_ON_FAILURE: 중지 후 단독 테넌트 VM이 다시 시작되는지 여부를 나타냅니다. 기본값은 true입니다.

  • GROUP_NAME: VM을 프로비저닝할 노드 그룹의 이름입니다.

  • NETWORK: 이 VM의 네트워크 리소스 URL입니다.

  • REGION: 이 VM의 서브네트워크가 포함된 리전입니다.

  • SUBNETWORK: 이 VM의 서브네트워크 리소스 URL입니다.

  • GPU_TYPE: GPU의 유형입니다. 노드 템플릿을 만들 때 지정된 가속기 유형 중 하나로 설정합니다.

  • GPU_COUNT: 이 VM에 연결할 노드 템플릿에 지정된 총 GPU 수입니다. 기본값은 1입니다.

  • IMAGE_PROJECT: 이미지 계열의 이미지 프로젝트입니다.

  • IMAGE_FAMILY: VM을 만드는 데 사용할 이미지의 이미지 계열입니다.

  • LOCAL_SSD_ZONE: 로컬 SSD의 영역입니다.

  • SSD_INTERFACE: 로컬 SSD 인터페이스의 유형입니다. 부팅 디스크 이미지 드라이버가 NVMe에 대해 최적화된 경우 NVME로 설정하고 그렇지 않으면 SCSI로 설정합니다.

단독 테넌트 VM 그룹 프로비저닝

관리형 인스턴스 그룹(MIG)을 사용하면 동일한 단독 테넌트 VM 그룹을 프로비저닝할 수 있습니다. 또한 어피니티 라벨을 사용하면 단독 테넌트 VM 그룹을 프로비저닝할 단독 테넌트 노드나 노드 그룹을 지정할 수 있습니다.

리전 MIG의 경우 각 리전 MIG 영역에서 노드 그룹을 만들고 리전 MIG의 인스턴스 템플릿에서 해당 노드 그룹에 대해 노드 어피니티를 지정해야 합니다.

gcloud

  1. gcloud compute instance-templates create 명령어를 사용하여 단독 테넌트 노드 그룹에 만들 VM 그룹에 대해 관리형 인스턴스 그룹 템플릿을 만듭니다.

    gcloud compute instance-templates create INSTANCE_TEMPLATE \
      --machine-type=MACHINE_TYPE \
      --image-project=IMAGE_PROJECT \
      --image-family=IMAGE_FAMILY \
      --node-group=GROUP_NAME \
      [--accelerator type=GPU_TYPE,count=GPU_COUNT \]
      [--local-ssd interface=SSD_INTERFACE]
    

    다음을 바꿉니다.

    • INSTANCE_TEMPLATE: 새 인스턴스 템플릿의 이름

    • MACHINE_TYPE: 단독 테넌트 VM의 머신 유형입니다. 프로젝트에 사용 가능한 머신 유형 목록을 가져오려면 gcloud compute machine-types list 명령어를 사용합니다.

    • IMAGE_PROJECT: 이미지 계열의 이미지 프로젝트입니다.

    • IMAGE_FAMILY: VM을 만드는 데 사용할 이미지의 이미지 계열입니다.

    • GROUP_NAME: VM을 프로비저닝할 노드 그룹의 이름입니다. 또는 이 인스턴스 템플릿을 사용하여 두 개 이상의 영역에 있는 리전 MIG를 만들려면 --node-affinity-file 플래그를 사용하여 리전 MIG 노드 그룹의 값 목록을 지정합니다.

    • GPU_TYPE: GPU 유형입니다. 노드 템플릿을 만들 때 지정된 가속기 유형 중 하나로 설정합니다.

    • GPU_COUNT: 이 VM에 연결할 노드 템플릿에 지정된 총 GPU 수입니다. 기본값은 1입니다.

    • SSD_INTERFACE: 로컬 SSD 인터페이스의 유형입니다. 부팅 디스크 이미지 드라이버가 NVMe에 대해 최적화된 경우 nvme로 설정하고 그렇지 않으면 scsi로 설정합니다. 이 플래그와 해당 값을 각 로컬 SSD 파티션에 한 번씩 지정하세요.

  2. gcloud compute instance-groups managed create 명령어를 사용하여 단독 테넌트 노드 그룹 내에 관리형 인스턴스 그룹을 만듭니다.

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
      --size=SIZE \
      --template=INSTANCE_TEMPLATE \
      --zone=ZONE
    

    다음을 바꿉니다.

    • INSTANCE_GROUP_NAME: 이 인스턴스 그룹의 이름

    • SIZE: 이 인스턴스 그룹에 포함할 VM 수입니다. 이 관리형 인스턴스 그룹의 인스턴스를 수용할 충분한 리소스가 노드 그룹에 있어야 합니다. 관리형 인스턴스 그룹 자동 확장 처리를 사용하여 관리형 인스턴스 그룹 크기를 자동으로 관리합니다.

    • INSTANCE_TEMPLATE: 이 MIG를 만드는 데 사용할 인스턴스 템플릿의 이름입니다. 템플릿에는 적합한 노드 그룹을 가리키는 노드 어피니티 라벨이 하나 이상 있어야 합니다.

    • ZONE: 관리형 인스턴스 그룹을 만들 영역입니다. 리전 MIG의 경우 --zone 플래그를 --region 플래그로 바꾸고 리전을 지정합니다. 또한 --zones 플래그를 추가하여 노드 그룹이 있는 모든 영역을 지정할 수 있습니다.

REST

  1. instanceTemplates.insert 메서드를 사용하여 단독 테넌트 노드 그룹 내에 관리형 인스턴스 그룹 템플릿을 만듭니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/TEMPLATE_ZONE/instance-templates
    { "name": "INSTANCE_TEMPLATE", "properties": { "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "scheduling": { "nodeAffinities": [ { "key": "compute.googleapis.com/node-group-name", "operator": "IN", "values": [ "GROUP_NAME" ] } ] }, "networkInterfaces": [ { "network": "global/networks/NETWORK", "subnetwork": "regions/REGION/subnetworks/SUBNETWORK" } ], "guestAccelerators": [ { "acceleratorType": GPU_TYPE, "acceleratorCount": GPU_COUNT } ], "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY" } }, { "type":"SCRATCH", "initializeParams":{ "diskType":"zones/LOCAL_SSD_ZONE/diskTypes/local-ssd" }, "autoDelete":true, "interface":"SSD_INTERFACE" } ] } }

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID입니다.

    • TEMPLATE_ZONE: 인스턴스 템플릿을 만들 영역입니다.

    • INSTANCE_TEMPLATE: 새 인스턴스 템플릿의 이름입니다.

    • MACHINE_TYPE_ZONE: 머신 유형의 영역입니다.

    • MACHINE_TYPE: 단독 테넌트 VM의 머신 유형입니다. 프로젝트에 사용 가능한 머신 유형 목록을 가져오려면 machineTypes.list 메서드를 사용합니다.

    • GROUP_NAME: VM을 프로비저닝할 노드 그룹의 이름입니다. 이 인스턴스 템플릿을 사용해서 하나 이상의 영역에 존재하는 리전 MIG를 만들려면 리전 MIG 영역과 동일한 영역에 존재하는 노드 그룹 목록을 지정합니다.

    • NETWORK: 이 인스턴스 템플릿의 네트워크 리소스 URL입니다.

    • REGION: 이 인스턴스 템플릿의 서브네트워크가 포함된 리전입니다.

    • SUBNETWORK: 이 인스턴스 템플릿의 서브네트워크 리소스 URL입니다.

    • GPU_TYPE: GPU의 유형입니다. 노드 템플릿을 만들 때 지정된 가속기 유형 중 하나로 설정합니다.

    • GPU_COUNT: 이 VM에 연결할 노드 템플릿에 지정된 총 GPU 수입니다. 기본값은 1입니다.

    • IMAGE_PROJECT: 이미지 계열의 이미지 프로젝트입니다.

    • IMAGE_FAMILY: VM을 만드는 데 사용할 이미지의 이미지 계열입니다.

    • LOCAL_SSD_ZONE: 로컬 SSD의 영역입니다.

    • SSD_INTERFACE: 로컬 SSD 인터페이스의 유형입니다. 부팅 디스크 이미지 드라이버가 NVMe에 대해 최적화된 경우 NVME로 설정하고 그렇지 않으면 SCSI로 설정합니다.

  2. instanceGroupManagers.insert 메서드를 사용해서 이전에 만든 인스턴스 템플릿을 기준으로 단독 테넌트 노드 그룹 내에 MIG를 만듭니다. 또는 리전 MIG를 만들려는 경우 regionInstanceGroupManagers.insert 메서드를 사용하고 인스턴스 템플릿에 지정된 대로 모든 노드 그룹의 리전 및 영역을 지정합니다.

    예를 들어 영역 MIG를 만들려면 다음 요청을 사용합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    {
      "baseInstanceName": "NAME_PREFIX",
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": SIZE,
      "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE"
    }
    

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID입니다.

    • ZONE: 관리형 인스턴스 그룹을 만들 영역입니다.

    • NAME_PREFIX: 관리형 인스턴스 그룹에 있는 각 인스턴스의 프리픽스 이름입니다.

    • INSTANCE_GROUP_NAME: 인스턴스 그룹의 이름입니다.

    • SIZE: 이 인스턴스 그룹에 포함할 VM 수입니다. 이 관리형 인스턴스 그룹의 인스턴스를 수용할 충분한 리소스가 노드 그룹에 있어야 합니다. 관리형 인스턴스 그룹 자동 확장 처리를 사용하여 관리형 인스턴스 그룹 크기를 자동으로 관리합니다.

    • INSTANCE_TEMPLATE: 이 그룹을 만드는 데 사용할 인스턴스 템플릿의 URL입니다. 이 템플릿에는 적절한 노드 그룹을 가리키는 노드 어피니티 라벨이 있어야 합니다.

노드 어피니티 라벨 구성

노드 어피니티 라벨을 사용하면 노드 그룹을 논리적으로 그룹화하고 특정 노드 그룹 집합에서 VM을 예약할 수 있습니다. 또한 노드 어피니티 라벨을 사용하면 여러 영역의 노드 그룹에서 VM을 예약하고 해당 노드 그룹을 논리적 그룹에 유지할 수 있습니다. 아래 절차는 어피니티 라벨을 사용하여 VM을 프로덕션 워크로드에 사용되는 특정 노드 그룹과 연결하는 예시입니다. 이 예시에서는 단일 VM을 예약하는 방법을 보여주지만 관리형 인스턴스 그룹을 사용하여 VM 그룹을 예약할 수도 있습니다.

gcloud

  1. gcloud compute sole-tenancy node-templates create 명령어를 사용하여 프로덕션 워크로드의 일련의 어피니티 라벨이 있는 노드 템플릿을 만듭니다.

    gcloud compute sole-tenancy node-templates create prod-template \
      --node-type=n1-node-96-624 \
      --node-affinity-labels workload=frontend,environment=prod
    
  2. gcloud compute sole-tenancy node-templates describe 명령어를 사용하여 노드 템플릿에 할당된 노드 어피니티 라벨을 봅니다.

  3. gcloud compute sole-tenancy node-groups create 명령어를 사용하여 프로덕션 템플릿을 사용하는 노드 그룹을 만듭니다.

    gcloud compute sole-tenancy node-groups create prod-group \
      --node-template=prod-template \
      --target-size=1
    
  4. 프로덕션 VM의 경우 node-affinity-prod.json 파일을 만들어 프로덕션 VM의 어피니티를 지정합니다. 예를 들어 VM이 workload=frontend 어피니티와 environment=prod 어피니티가 모두 있는 노드에서만 실행되도록 지정하는 파일을 만들 수 있습니다. Cloud Shell을 사용하여 노드 어피니티 파일을 만들거나 원하는 위치에 만듭니다.

    [
      {
        "key" : "workload",
        "operator" : "IN",
        "values" : ["frontend"]
      },
      {
        "key" : "environment",
        "operator" : "IN",
        "values" : ["prod"]
      }
    ]
    
  5. gcloud compute instances create 명령어와 함께 node-affinity-prod.json 파일을 사용하여 일치하는 어피니티 라벨이 있는 노드 그룹에서 VM을 예약합니다.

    gcloud compute instances create prod-vm \
      --node-affinity-file node-affinity-prod.json \
      --machine-type=n1-standard-2
    
  6. gcloud compute instances describe 명령어를 사용하고 scheduling 필드를 확인하여 VM에 할당된 노드 어피니티를 봅니다.

노드 안티어피니티 라벨 구성

VM이 특정 노드에서 실행되지 않도록 노드 어피니티 라벨을 안티어피니티 라벨로 구성할 수 있습니다. 예를 들어 안티어피니티 라벨을 사용하면 개발 목적으로 사용 중인 VM이 동일한 노드에서 프로덕션 VM으로 예약되지 않도록 방지할 수 있습니다. 다음 예시에서는 VM이 특정 노드 그룹에서 실행되지 않도록 어피니티 라벨을 사용하는 방법을 보여줍니다. 이 예시에서는 단일 VM을 예약하는 방법을 보여주지만 관리형 인스턴스 그룹을 사용하여 VM 그룹을 예약할 수도 있습니다.

gcloud

  1. 개발 VM의 경우 Cloud Shell을 사용하여 node-affinity-dev.json을 만들거나 원하는 위치에 만들어 개발 VM의 어피니티를 지정합니다. 예를 들어 VM이 environment=prod가 아니라면 workload=frontend 어피니티가 있는 모든 노드 그룹에서 VM이 실행되도록 구성하는 파일을 만들 수 있습니다.

    [
      {
        "key" : "workload",
        "operator" : "IN",
        "values" : ["frontend"]
      },
      {
        "key" : "environment",
        "operator" : "NOT_IN",
        "values" : ["prod"]
      }
    ]
    
  2. gcloud compute instances create 명령어와 함께 node-affinity-dev.json 파일을 사용하여 개발 VM을 만듭니다.

    gcloud compute instances create dev-vm \
      --node-affinity-file=node-affinity-dev.json \
      --machine-type=n1-standard-2
    
  3. gcloud compute instances describe 명령어를 사용하고 scheduling 필드를 확인하여 VM에 할당된 노드 안티어피니티를 봅니다.

노드 그룹 삭제

단독 테넌트 노드 그룹을 삭제해야 하면 먼저 노드 그룹에서 VM을 삭제합니다.

콘솔

  1. 단독 테넌트 노드 페이지로 이동합니다.

    단독 테넌트 노드로 이동

  2. 삭제할 노드 그룹의 이름을 클릭합니다.

  3. 노드 그룹의 각 노드에서 노드 이름을 클릭하고 노드 세부정보 페이지에서 개별 VM 인스턴스를 삭제하거나 표준 절차를 따라 개별 VM을 삭제합니다. 관리형 인스턴스 그룹의 VM을 삭제하려면 관리형 인스턴스 그룹을 삭제합니다.

  4. 노드 그룹의 모든 노드에서 실행 중인 VM 인스턴스를 모두 삭제한 후 단독 테넌트 노드 페이지로 돌아갑니다.

    단독 테넌트 노드로 이동

  5. 노드 그룹을 클릭합니다.

  6. 삭제할 노드 그룹의 이름을 선택합니다.

  7. 삭제를 클릭합니다.

gcloud

  1. gcloud compute sole-tenancy node-groups list-nodes 명령어를 사용하여 노드 그룹의 노드에서 실행 중인 VM 인스턴스를 나열합니다.

    gcloud compute sole-tenancy node-groups list-nodes GROUP_NAME \
      --zone=ZONE

    다음을 바꿉니다.

    • GROUP_NAME: 노드 그룹의 이름

    • ZONE: 노드 그룹의 영역

  2. 노드 그룹에 실행 중인 VM이 있으면 개별 VM 삭제 절차 또는 관리형 인스턴스 그룹 삭제 절차를 따릅니다.

  3. 노드 그룹의 모든 노드에서 실행 중인 모든 VM을 삭제한 후 gcloud compute sole-tenancy node-groups delete 명령어를 사용하여 노드 그룹을 삭제합니다.

    gcloud compute sole-tenancy node-groups delete GROUP_NAME \
        --zone=ZONE

    다음을 바꿉니다.

    • GROUP_NAME: 노드 그룹의 이름입니다.

    • ZONE: 노드 그룹의 영역입니다.

REST

  1. nodeGroups.listNodes 메서드를 사용하여 노드 그룹의 노드에서 실행 중인 VM 인스턴스를 나열합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/nodeGroups/GROUP_NAME/listNodes

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID

    • ZONE: 노드 그룹의 영역입니다.

    • GROUP_NAME: VM을 나열할 그룹입니다.

  2. 노드 그룹에 실행 중인 VM이 있으면 개별 VM 삭제 절차 또는 관리형 인스턴스 그룹 삭제 절차를 따릅니다.

  3. 노드 그룹의 모든 노드에서 실행 중인 모든 VM을 삭제한 후 nodeGroups.delete 메서드를 사용하여 노드 그룹을 삭제합니다.

    DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/nodeGroups/GROUP_NAME
    

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID

    • ZONE: 노드 그룹의 영역입니다.

    • GROUP_NAME: 삭제할 노드 그룹의 이름입니다.

노드 템플릿 삭제

템플릿을 사용하는 모든 노드 그룹을 삭제한 후에 노드 템플릿을 삭제할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 단독 테넌트 노드 페이지로 이동합니다.

    단독 테넌트 노드로 이동

  2. 노드 템플릿을 클릭합니다.

  3. 사용하지 않은 노드 템플릿의 이름을 선택합니다.

  4. 삭제를 클릭합니다.

gcloud

gcloud compute sole-tenancy node-templates delete 명령어를 사용하여 사용하지 않은 노드 템플릿을 삭제합니다.

gcloud compute sole-tenancy node-templates delete TEMPLATE_NAME \
  --region=REGION

다음을 바꿉니다.

  • TEMPLATE_NAME: 삭제할 노드 템플릿의 이름

  • REGION: 노드 템플릿의 리전입니다.

REST

compute.nodeTemplates.delete 메서드를 사용하여 사용하지 않은 노드 템플릿을 삭제합니다.

 DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/nodeTemplates/TEMPLATE_NAME
 

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID

  • REGION: 노드 템플릿이 포함된 Google Cloud 리전

  • TEMPLATE_NAME: 삭제할 노드 템플릿의 이름

다음 단계