단독 테넌트 노드 그룹 공유


공유 단독 테넌트 노드 그룹은 로컬 단독 테넌트 노드 그룹과 유사합니다. 예를 들어 공유 노드 그룹 비용은 동일하고 동일한 할당량을 사용하며 리소스 계층 구조의 상위 프로젝트에 상주합니다.

공유 노드 그룹과 로컬 노드 그룹의 차이점은 조직의 다른 프로젝트가 공유 노드 그룹의 가상 머신(VM) 인스턴스를 프로비저닝할 수 있다는 것입니다.

여러 프로젝트 또는 한 조직에서 노드 그룹을 공유하면 다음을 수행하는 데 도움이 될 수 있습니다.

  • 관리하는 노드 그룹을 단일 프로젝트로 통합한 후 이러한 노드를 다른 프로젝트 또는 전체 조직과 공유합니다.

  • 다양한 프로젝트의 VM을 사용률이 낮은 노드 그룹으로 통합한 후 노드를 삭제하여 비용을 절감합니다.

  • 단일 팀으로 단독 테넌트 노드 관리

  • 단독 테넌트 노드를 소규모 프로젝트와 공유하고 이러한 프로젝트 간의 보안 및 액세스 제어 경계를 유지합니다.

  • 동일 프로젝트 내에서 노드 그룹 간 라이브 마이그레이션 수행

  • 노드 그룹 내 마이그레이션 유지보수 정책을 사용하면 노드 그룹의 사용률이 향상되고 예약된 유지보수 노드 수가 줄어듭니다.

다음 다이어그램은 다른 프로젝트와 공유되는 노드 그룹을 보여줍니다. 이를 통해 해당 프로젝트의 VM을 관리하는 다른 부서에서 공유 노드 그룹에 VM을 프로비저닝할 수 있습니다.

여러 프로젝트에서 공유되는 노드 그룹의 다이어그램입니다. 다른 프로젝트의 VM을 관리하는 부서에서 공유 노드 그룹에 VM을 프로비저닝할 수 있습니다.

공유 노드 그룹의 사용률 관련 이점

다음 표는 로컬 노드 그룹을 사용하는 프로젝트와 공유 노드 그룹을 사용하는 프로젝트를 비교합니다. 공유 노드 그룹을 사용하는 프로젝트에서 vCPU 사용률이 낮아집니다.

프로젝트 구성 로컬 노드 그룹 공유 노드 그룹
프로젝트 10 10
vCPU/프로젝트 24 24
노드 그룹 10 1
노드/노드 그룹 1 3
vCPU/노드 80 80
사용률/노드 그룹 24 80
사용률/노드 그룹 56 0
총 사용률 10 x 56 = vCPU 560개 1 x 0 = vCPU 0개

노드 그룹 공유 설정

Compute Engine은 노드 그룹 공유 및 공유 노드 그룹의 VM 프로비저닝에 다음 설정을 사용합니다.

  • 단독 테넌트 노드 그룹을 만들거나 업데이트할 때 구성하는 공유 설정입니다. 노드 그룹을 다른 프로젝트나 전체 조직과 공유할지 여부를 지정하려면 gcloud CLI 설정(--share-setting, --share-with) 또는 REST 설정(shareSetting, shareWith)을 사용합니다.

  • 노드 어피니티 라벨을 사용하여 공유 노드 그룹의 VM을 프로비저닝할 때 사용하는 기본 compute.googleapis.com/project 노드 어피니티 라벨입니다. 다른 기본 노드 어피니티 라벨은 기본 어피니티 라벨을 참조하세요.

유지보수 정책 고려사항

노드 그룹에서 노드 그룹 내 마이그레이션 유지보수 정책을 사용하면 Compute Engine은 라이브 마이그레이션 이벤트에 사용되는 노드를 최소 1개 이상 예약하므로 노드 그룹에는 노드가 최소 2개 이상 있어야 합니다. 예약된 노드에 VM을 예약할 수 없으므로 이 유지보수 정책을 사용하는 노드 그룹의 전체 사용률이 낮은 경우가 많습니다. 이로 인해 노드 그룹 내 마이그레이션 유지보수 정책이 필요한 워크로드가 활용도 향상 시 가장 큰 이점을 기대할 수 있으므로 노드 그룹 공유에 적합합니다.

IAM 역할 및 권한

노드 그룹을 공유할 때 IAM 역할과 권한에 대한 다음 정보에 유의하세요.

  • 노드 그룹이 프로젝트와 공유되는 경우 나열된 프로젝트 또는 조직에서 VM을 만들 수 있는 모든 사용자는 IAM 역할 또는 권한을 변경하지 않고 해당 프로젝트의 VM을 공유 노드 그룹에 프로비저닝할 수 있습니다.

  • compute.soleTenantViewer IAM 역할을 사용하면 노드 그룹(gcloud CLI/REST)을 나열하고 볼 수 있습니다. 이 역할로 노드 그룹을 수정할 수 없습니다. 이 역할이나 노드 그룹을 나열할 수 있는 권한이 있는 사용자는 VM에 대한 IAM 권한에 관계없이 노드 그룹의 모든 VM에 대한 프로젝트 ID, 이름, 머신 유형, 로컬 SSD 및 GPU에 대한 정보를 볼 수 있습니다.

제한사항

  • 규정 준수 체계 제한사항:

    • VM에 대한 IAM 권한에 관계없이 노드 그룹을 나열할 수 있는 권한이 있는 모든 사용자는 노드 그룹의 모든 VM에 대한 프로젝트 ID, 이름, 머신 유형을 볼 수 있습니다. 따라서 프로젝트 간 정보 공개의 위험으로 인해 공유 노드 그룹에서 프로비저닝된 VM이 있는 프로젝트는 동일한 규정 준수 체계에 속해야 합니다.
  • Google Cloud 콘솔 제한사항:

    • 공유 노드 그룹에서 VM을 볼 수 있는 권한이 없으면 해당 VM이 Google Cloud 콘솔에 있는 단독 테넌트 노드 페이지의 VM 목록에 표시되지 않습니다.
    • 단독 테넌트 노드 그룹 페이지에서 공유 설정을 수정한 후에는 공유 대상 설정이 UI에서 업데이트되지 않습니다. 업데이트된 공유 대상 설정을 보려면 단독 테넌트 노드 페이지로 이동합니다.
    • 노드 그룹을 조직 내 모든 프로젝트나 조직 내에서 선택한 프로젝트와 공유하면 소유 프로젝트에 공유 노드 그룹만 표시되며 공유된 프로젝트의 공유 노드 그룹은 표시되지 않습니다. 공유 노드 그룹에서 VM을 프로비저닝하려면 노드 그룹이 공유된 프로젝트에서 VM 인스턴스 페이지로 이동한 후 단독 테넌시 노드 어피니티 라벨을 수정합니다.
  • 공유 제한:

    • 노드 그룹을 소유한 프로젝트에서 공유 설정을 업데이트해야 합니다.
    • projects 고유 설정을 사용할 때는 최대 100개 프로젝트를 지정할 수 있습니다.
    • 노드 그룹을 조직 간에 공유할 수 없습니다. 예를 들어 조직 간에 공유 노드 그룹이 포함된 프로젝트를 마이그레이션하면 해당 공유 노드 그룹에서 VM이 실행 중인 모든 프로젝트도 마이그레이션해야 합니다.
    • 공유된 단독 테넌트 노드 그룹을 사용하는 동안에는 프로젝트 간에 라이브 마이그레이션을 수행할 수 없습니다. 자세한 내용은 수동으로 VM 라이브 마이그레이션을 참조하세요.

가격 책정

공유 노드 그룹의 VM에는 추가 요금이 발생하지 않으며 노드 그룹 공유에 대한 추가 요금은 없습니다. 단독 테넌트 노드 가격 책정에 대한 자세한 내용은 단독 테넌트 노드 가격 책정을 참조하세요.

시작하기 전에

  • 단독 테넌트 노드 그룹을 만들기 전에 단독 테넌트 노드 템플릿을 만듭니다.
  • 단독 테넌트 노드에 VM을 프로비저닝하기 전에 할당량을 확인합니다. 예약한 노드 수와 크기에 따라 추가 할당량을 요청해야 할 수도 있습니다.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 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

새 노드 그룹 만들기 및 공유

새 노드 그룹을 만들고 다른 프로젝트나 전체 조직과 공유하려면 Google Cloud 콘솔, gcloud CLI 또는 REST를 사용합니다.

콘솔

  1. 단독 테넌트 노드 그룹을 만듭니다. 자세한 내용은 단독 테넌트 노드 그룹 만들기를 참조하세요.

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

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

    노드 그룹을 공유하지 않으려면 이 노드 그룹을 다른 프로젝트와 공유하지 않음을 선택합니다.

gcloud

공유 노드 그룹을 만들려면 다음 gcloud compute sole-tenancy node-groups create 명령어를 사용합니다.

gcloud compute sole-tenancy node-groups create NODE_GROUP \
    --zone=ZONE \
    --node-template=NODE_TEMPLATE \
    --target-size=SIZE \
    --share-setting=SHARE_SETTING \
    --share-with=PROJECTS

다음을 바꿉니다.

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

  • ZONE: 노드 그룹을 만들 영역입니다.

  • NODE_TEMPLATE: 이전에 만든 노드 템플릿의 이름입니다.

  • SIZE: 노드 그룹에 있는 노드 수입니다.

  • SHARE_SETTING: 노드 그룹의 공유 설정입니다. 특정 프로젝트와 공유하려면 projects로 설정하고 전체 조직과 공유하려면 organization으로 설정합니다.

  • PROJECTS: 노드 그룹을 공유할 프로젝트 ID 또는 프로젝트 번호의 목록입니다. SHARE_SETTINGprojects로 설정한 경우에만 필요합니다.

REST

공유 노드 그룹을 만들려면 다음 nodeGroups.insert 메서드를 사용합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups

{
  ...
  "name": NODE_GROUP,
  "nodeTemplate": NODE_TEMPLATE,
  "size": SIZE,
  "shareSettings": {
    "shareType": SHARE_TYPE,
    "projectMap": {
      string: {
        "projectId": PROJECTS
      },
    }
  }
  ...
}

다음을 바꿉니다.

  • PROJECT: 노드 그룹을 만들 프로젝트의 이름입니다.

  • ZONE: 노드 그룹을 만들 영역입니다.

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

  • NODE_TEMPLATE: 이전에 만든 노드 템플릿의 이름입니다.

  • SIZE: 노드 그룹에 있는 노드 수입니다.

  • SHARE_TYPE: 노드 그룹의 공유 설정입니다. 특정 프로젝트와 공유하려면 SPECIFIC_PROJECTS로 설정하고 전체 조직과 공유하려면 ORGANIZATION으로 설정합니다.

  • PROJECTS: 노드 그룹을 공유할 프로젝트 ID 또는 프로젝트 번호의 목록입니다. SHARE_TYPESPECIFIC_PROJECTS로 설정한 경우에만 필요합니다.

공유 노드 그룹에 단독 테넌트 VM 프로비저닝

공유 노드 그룹에서 단독 테넌트 VM을 프로비저닝하려면 Google Cloud 콘솔, gcloud CLI 또는 REST를 사용합니다.

콘솔

  1. Google Cloud 콘솔에서 노드 그룹을 공유한 프로젝트로 전환합니다.

  2. VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  3. 인스턴스 만들기를 클릭합니다.

  4. 영역에서 공유 노드 그룹 영역을 선택합니다.

  5. 머신 구성 > 시리즈에서 공유 단독 테넌트 노드 그룹 템플릿에서 지정한 머신 유형과 동일한 머신 유형을 선택합니다.

  6. 고급 옵션 > 단독 테넌시 > 찾아보기를 엽니다.

  7. 프로젝트 선택을 선택하고 공유 노드 그룹이 포함된 프로젝트를 지정합니다.

  8. VM을 프로비저닝할 단독 테넌트 노드 그룹이나 해당 그룹의 특정 단독 테넌트 노드를 선택합니다.

gcloud

노드 그룹 이름을 사용하여 공유 노드 그룹에서 VM 프로비저닝

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

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --node-group=NODE_GROUP \
    --node-project=NODE_PROJECT

다음을 바꿉니다.

  • VM_NAME: 공유 노드 그룹에서 만들 새 단독 테넌트 VM의 이름입니다.

  • MACHINE_TYPE: 새 단독 테넌트 VM의 머신 유형입니다.

  • NODE_GROUP: 단독 테넌트 VM을 만들 공유 노드 그룹의 이름입니다.

  • NODE_PROJECT: VM을 프로비저닝할 노드 그룹이 포함된 프로젝트입니다.

노드 어피니티 파일을 사용하여 공유 노드 그룹에서 VM 프로비저닝

노드 어피니티 파일을 사용하여 공유 노드 그룹에 단독 테넌트 VM을 프로비저닝하려면 다음 gcloud compute instances create 명령어를 사용합니다.

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --node-affinity-file=NODE_AFFINITY_FILE

다음을 바꿉니다.

  • VM_NAME: 어피니티 라벨을 사용하여 공유 노드 그룹에서 만들 단독 테넌트 VM의 이름입니다.

  • MACHINE_TYPE: 공유 노드 그룹에 만들 단독 테넌트 VM의 머신 유형입니다.

  • NODE_AFFINITY_FILE: 노드 어피니티 정보가 포함된 .json 파일의 이름입니다. 노드 어피니티 파일에서 어피니티 라벨 키를 "compute.googleapis.com/project"로, 연산자를 "IN"으로, 값을 노드 그룹이 포함된 프로젝트로 설정합니다. 노드 어피니티를 구성하는 방법에 대한 자세한 내용은 노드 어피니티 라벨 구성을 참조하세요.

REST

노드 어피니티 파일을 사용하여 공유 노드 그룹에 단독 테넌트 VM을 프로비저닝하려면 다음 nodeGroups.insert 메서드를 사용합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances

{
  ...
  "name": VM_NAME,
  "machineType": MACHINE_TYPE,
  "scheduling": {
    ...
    "nodeAffinities": [
      {
        "key": KEY,
        "operator": OPERATOR,
        "values": [
          VALUE
        ]
      }
    ],
    ...
  },
  ...
}

다음을 바꿉니다.

  • PROJECT: 노드 그룹을 소유하는 프로젝트의 이름입니다.

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

  • VM_NAME: 어피니티 라벨을 사용하여 공유 노드 그룹에서 만들 단독 테넌트 VM의 이름입니다.

  • MACHINE_TYPE: 공유 노드 그룹에 만들 단독 테넌트 VM의 머신 유형입니다.

  • KEY: 어피니티 라벨입니다. "compute.googleapis.com/project"로 설정합니다.

  • OPERATOR: 어피니티 라벨 연산자입니다. "IN"로 설정합니다.

  • VALUE: VM을 프로비저닝할 노드 그룹이 포함된 프로젝트입니다. 프로젝트 이름이나 프로젝트 ID를 사용하여 프로젝트 하나를 지정합니다.

노드 어피니티를 구성하는 방법에 대한 자세한 내용은 노드 어피니티 라벨 구성을 참조하세요.

노드 그룹 공유 설정 보기

노드 그룹의 공유 설정을 보려면 Google Cloud 콘솔, gcloud CLI 또는 REST를 사용합니다.

콘솔

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

    단독 테넌트 노드로 이동

  2. 노드 그룹 속성을 보려면 이름 열에서 노드 그룹 이름을 클릭합니다.

gcloud

노드 그룹 공유 설정을 보려면 다음 gcloud compute sole-tenancy node-groups describe 명령어를 사용합니다.

gcloud compute sole-tenancy node-groups describe NODE_GROUP

NODE_GROUP을 공유 설정을 확인할 노드 그룹의 이름으로 바꿉니다.

REST

노드 그룹 공유 설정을 보려면 다음 nodeGroups.get 메서드를 사용합니다.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups

다음을 바꿉니다.

  • PROJECT: 공유 설정을 확인할 노드 그룹이 있는 프로젝트의 이름입니다.

  • ZONE: 공유 설정을 확인할 노드 그룹이 포함된 영역입니다.

기존 노드 그룹 공유

기존 노드 그룹을 다른 프로젝트나 전체 조직과 공유하려면 Google Cloud 콘솔, gcloud CLI 또는 REST를 사용합니다.

콘솔

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

    단독 테넌트 노드로 이동

  2. 이름 열에서 노드 그룹 이름을 클릭합니다.

  3. 노드 그룹을 조직 내 모든 프로젝트나 조직 내에서 선택한 프로젝트와 공유하려면 개요 > 공유 대상에서 수정 을 클릭합니다.

gcloud

노드 그룹 공유 설정을 업데이트하려면 다음 gcloud compute sole-tenancy node-groups update 명령어를 사용합니다.

gcloud compute sole-tenancy node-groups update NODE_GROUP \
    --zone=ZONE \
    --share-setting=SHARE_SETTING \
    --share-with=PROJECTS

다음을 바꿉니다.

  • NODE_GROUP: 공유 설정을 업데이트할 노드 그룹의 이름입니다.

  • SHARE_SETTING: 노드 그룹의 공유 설정입니다. 특정 프로젝트와 공유하려면 projects로 설정하고 전체 조직과 공유하려면 organization으로 설정합니다.

  • PROJECTS: 노드 그룹을 공유할 프로젝트 ID 또는 프로젝트 번호의 목록입니다. SHARE_SETTINGprojects로 설정한 경우에만 필요합니다.

REST

노드 그룹 공유 설정을 업데이트하려면 다음 nodeGroups.patch 메서드를 사용합니다.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups/NODE_GROUP

{
  "shareSettings": {
    "shareType": SHARE_TYPE,
    "projectMap": {
      string: {
        "projectId": PROJECTS
      },
    }
  }
}

다음을 바꿉니다.

  • PROJECT: 공유 설정을 업데이트할 노드 그룹이 포함된 프로젝트의 이름입니다.

  • ZONE: 공유 설정을 업데이트할 노드 그룹이 포함된 영역입니다.

  • NODE_GROUP: 공유 설정을 업데이트할 노드 그룹의 이름입니다.

  • SHARE_TYPE: 노드 그룹의 공유 설정입니다. 특정 프로젝트와 공유하려면 projects로 설정하고 전체 조직과 공유하려면 organization으로 설정합니다.

  • PROJECTS: 노드 그룹을 공유할 프로젝트 ID 또는 프로젝트 번호의 목록입니다. SHARE_SETTINGSPECIFIC_PROJECTS로 설정한 경우에만 필요합니다.

노드 그룹 공유 중지

노드 그룹을 다른 프로젝트나 전체 조직과 공유하지 않으려면 gcloud CLI 또는 REST를 사용합니다.

콘솔

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

    단독 테넌트 노드로 이동

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

  3. 개요 > 공유 대상에서 수정 을 클릭합니다.

  4. 공유를 중지하려면 이 노드 그룹을 다른 프로젝트와 공유하지 않음을 선택합니다.

gcloud

노드 그룹을 다른 프로젝트나 전체 조직과 공유하지 않으려면 다음 gcloud compute sole-tenancy node-groups update 명령어를 사용합니다.

gcloud compute sole-tenancy node-groups update NODE_GROUP \
    --zone=ZONE \
    --share-setting=local

NODE_GROUP을 공유를 중지할 노드 그룹의 이름으로 바꿉니다.

REST

노드 그룹을 다른 프로젝트나 전체 조직과 공유하지 않으려면 다음 nodeGroups.patch 메서드를 사용합니다.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups/NODE_GROUP

{
  "shareSettings": {
    "shareType": LOCAL
  }
}

다음을 바꿉니다.

  • PROJECT: 공유를 중지할 노드 그룹이 있는 프로젝트의 이름입니다.

  • ZONE: 공유를 중지할 노드 그룹이 포함된 영역입니다.

  • NODE_GROUP: 공유를 중지할 노드 그룹의 이름입니다.

소유 프로젝트에서 공유 노드 그룹 삭제

소유한 프로젝트에서 공유 노드 그룹을 삭제하려면 Google Cloud 콘솔, gcloud CLI 또는 REST를 사용합니다. 노드 그룹을 삭제하기 전에 노드 그룹에서 실행 중인 모든 VM을 중지합니다.

콘솔

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

    단독 테넌트 노드로 이동

  2. 이름 열에서 노드 그룹 이름을 클릭합니다.

  3. Delete(삭제)를 클릭합니다.

gcloud

소유한 프로젝트에서 공유 노드 그룹을 삭제하려면 다음 gcloud compute sole-tenancy node-groups delete 명령어를 사용합니다.

gcloud compute sole-tenancy node-groups delete NODE_GROUP

NODE_GROUP을 삭제할 노드 그룹의 이름으로 바꿉니다.

REST

소유한 프로젝트에서 공유 노드 그룹을 삭제하려면 다음 nodeGroups.delete 메서드를 사용합니다.

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups/NODE_GROUP

다음을 바꿉니다.

  • PROJECT: 삭제할 노드 그룹이 있는 프로젝트의 이름입니다.

  • ZONE: 삭제할 노드 그룹이 포함된 영역입니다.

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