GKE에서 Compute Engine 단독 테넌트 노드 사용


이 페이지에서는 Google Kubernetes Engine(GKE)에서 Compute Engine 단독 테넌트 노드를 사용하는 방법을 보여줍니다.

단독 테넌트 노드는 특정 프로젝트의 VM만 전담하여 실행하는 물리적 서버입니다. 단독 테넌트 노드를 사용하면 VM을 다른 프로젝트의 VM과 물리적으로 분리하거나 동일한 호스트 하드웨어에 있는 VM을 그룹화할 수 있습니다.

시작하기 전에

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

  • Google Kubernetes Engine API가 사용 설정되었는지 확인합니다.
  • Google Kubernetes Engine API 사용 설정
  • Cloud SDK가 설치되었는지 확인합니다.
  • 다음 방법 중 하나를 사용하여 프로젝트의 기본 gcloud 명령줄 도구 설정을 지정합니다.
    • 프로젝트 기본값 설정 방법을 알아보려면 gcloud init를 사용합니다.
    • 프로젝트 ID, 영역, 리전을 개별적으로 설정하려면 gcloud config를 사용합니다.

    gcloud init

    1. gcloud init를 실행하고 다음 안내를 따르세요.

      gcloud init

      원격 서버에서 SSH를 사용하는 경우 --console-only 플래그를 사용하여 다음 명령어로 브라우저를 실행하지 못하게 할 수 있습니다.

      gcloud init --console-only
    2. 안내를 따라 gcloud 도구에서 Google Cloud 계정을 사용하도록 승인합니다.
    3. 새 구성을 만들거나 기존 구성을 선택합니다.
    4. Google Cloud 프로젝트를 선택합니다.
    5. 기본 Compute Engine 영역을 선택합니다.
    6. 기본 Compute Engine 리전을 선택합니다.

    gcloud config

    1. 기본 프로젝트 ID를 설정합니다.
      gcloud config set project PROJECT_ID
    2. 기본 Compute Engine 리전(예: us-central1)을 설정합니다.
      gcloud config set compute/region COMPUTE_REGION
    3. 기본 Compute Engine 영역(예: us-central1-c)을 설정합니다.
      gcloud config set compute/zone COMPUTE_ZONE
    4. gcloud를 최신 버전으로 업데이트합니다.
      gcloud components update

    기본 위치를 설정하면 gcloud 도구에서 One of [--zone, --region] must be supplied: Please specify location과 같은 오류를 방지할 수 있습니다.

추가 할당량 요청

단독 테넌트 노드는 용량이 크고(예: vCPU 96개 및 624GB 메모리) 기본 프로젝트 할당량이 너무 낮아 처리할 수 없습니다.

단독 테넌트 노드를 만들려면 할당량 페이지에서 Compute Engine API CPU의 할당량 증가를 요청해야 합니다. 증가 요청에 대한 자세한 내용은 할당량을 참조하세요.

필요한 CPU 수는 다음 사항에 따라 다릅니다.

  • 현재 CPU 할당량 사용량
  • 노드 그룹의 크기
  • 노드 템플릿

단독 테넌트 노드 유형의 코어 수를 검토하고 최소 해당 수만큼 CPU 한도를 요청합니다. 여유분으로 10개의 추가 CPU가 있는 것이 좋습니다.

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

단독 테넌트 노드 템플릿은 노드 그룹을 만들 때 모든 노드에 속성을 정의하고 적용하는 리전별 리소스입니다. 자세한 내용은 노드 유형을 참조하세요.

Console

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

    단독 테넌트 노드로 이동

  2. 노드 템플릿 만들기를 클릭합니다.

  3. 노드 템플릿의 이름리전을 지정합니다.

  4. 노드 유형을 선택합니다.

  5. 필요한 경우 하나 이상의 노드 어피니티 라벨을 추가합니다.

  6. 만들기를 클릭하여 노드 템플릿을 만듭니다.

gcloud

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

gcloud compute sole-tenancy node-templates create TEMPLATE_NAME \
    --node-type=NODE_TYPE \
    --node-affinity-labels=AFFINITY_LABELS \
    --region=COMPUTE_REGION

다음을 바꿉니다.

  • TEMPLATE_NAME: 새 노드 템플릿의 이름입니다.
  • NODE_TYPE: 이 템플릿을 기반으로 만든 단독 테넌트 노드의 노드 유형입니다. 각 영역에서 사용할 수 있는 노드 유형 목록을 가져오려면 gcloud compute sole-tenancy node-types list 명령어를 사용합니다.
  • AFFINITY_LABELS: 어피니티 라벨 의 키와 값([KEY=VALUE,...])입니다. 어피니티 라벨을 사용하면 노드와 노드 그룹이 논리적으로 그룹화될 수 있으며 나중에 VM을 프로비저닝할 때 VM에 어피니티 라벨을 지정하여 특정 노드 또는 노드 그룹에 VM을 예약할 수 있습니다. 자세한 내용은 노드 어피니티 및 안티어피니티를 참조하세요.
  • COMPUTE_REGION: 노드 템플릿을 만들 리전입니다. 이 템플릿을 사용해 이 리전의 모든 영역에 노드 그룹을 만들 수 있습니다.

출력은 다음과 비슷합니다.

Created [https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/nodeTemplates/template-name].

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

노드 그룹은 동일한 단독 테넌트 노드 템플릿의 특정 영역에 있는 단독 테넌트 노드 집합입니다. 여러 영역에서 사용 가능한 리전 클러스터와 노드 풀의 경우 각 영역에 같은 이름의 노드 그룹을 만들어야 합니다.

Console

단독 테넌트 노드 그룹을 만들려면 다음 안내를 따르세요.

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

    단독 테넌트 노드로 이동

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

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

  4. 노드 템플릿을 만든 동일한 리전을 선택하고 해당 리전영역을 선택합니다.

  5. 노드 템플릿을 선택합니다.

  6. 필요한 경우 자동 확장 모드를 사용 설정합니다.

  7. 그룹에 원하는 노드 수를 지정합니다.

  8. 필요한 경우 유지보수 정책을 변경합니다.

  9. 만들기를 클릭하여 노드 그룹을 만듭니다.

gcloud

템플릿에서 노드 그룹을 만듭니다.

gcloud compute sole-tenancy node-groups create GROUP_NAME \
    --zone COMPUTE_ZONE \
    --node-template TEMPLATE_NAME --target-size TARGET_SIZE

다음을 바꿉니다.

  • GROUP_NAME: 새 노드 그룹에 사용할 이름입니다.
  • COMPUTE_ZONE: 이 노드 그룹이 위치한 영역입니다. 이 영역은 사용하고 있는 노드 템플릿과 같은 리전에 있어야 합니다.
  • TEMPLATE_NAME: 사용 중인 노드 템플릿의 이름입니다.
  • TARGET_SIZE: 그룹에서 만들 노드 수입니다.

출력은 다음과 비슷합니다.

Created [https://www.googleapis.com/compute/projects/my-project/zones/us-central1-a/nodeGroups/group-name].

GKE 단독 테넌트 노드 풀 만들기

Compute Engine에 단독 테넌트 노드 그룹을 만들었으므로 이제 단독 테넌트 노드 풀을 만들 수 있습니다.

GKE 클러스터가 이미 있으면 단독 테넌트 노드 풀을 해당 GKE 클러스터에 추가할 수 있습니다. 그렇지 않으면 gcloud container clusters create를 사용하여 클러스터를 만듭니다.

리전 클러스터를 사용하거나 노드 풀이 여러 영역에서 제공되는 경우 각 영역에 같은 이름의 노드 그룹을 만들어야 합니다. 각 영역에서 이름을 다시 사용할 수 없는 경우 영역별로 별도의 노드 풀을 만듭니다.

  1. 지정된 노드 그룹을 사용하여 새 노드 풀을 만듭니다.

    영역 노드 풀의 경우

    gcloud container node-pools create NODE_POOL_NAME \
        --node-group GROUP_NAME --cluster CLUSTER_NAME \
        --zone COMPUTE_ZONE --machine-type=MACHINE_TYPE \
        --node-locations=COMPUTE_ZONE,COMPUTE_ZONE1
    

    리전 노드 풀의 경우

    gcloud container node-pools create NODE_POOL_NAME \
        --node-group GROUP_NAME --cluster CLUSTER_NAME \
        --region COMPUTE_REGION --machine-type=MACHINE_TYPE \
        --node-locations=COMPUTE_ZONE,COMPUTE_ZONE1
    

    다음을 바꿉니다.

    • NODE_POOL_NAME: 새 노드 풀의 이름입니다.
    • GROUP_NAME: 사용하려는 기존 단독 테넌시 노드 그룹의 이름입니다.
    • CLUSTER_NAME: 노드 풀을 만들려는 클러스터의 이름입니다.
    • COMPUTE_REGION: 클러스터와 동일한 리전입니다.
    • MACHINE_TYPE: 노드 풀 머신 유형입니다.
    • COMPUTE_ZONE, COMPUTE_ZONE1,[...]: 단독 테넌시 노드 그룹의 영역입니다.
  2. 노드 풀이 생성되었는지 확인합니다.

    kubectl get nodes
    

방금 만든 노드 풀에 Ready 상태의 노드 목록이 표시됩니다. 단독 테넌트 페이지에서 단독 테넌트 노드를 확인할 수도 있습니다.

삭제

앞의 예시에서 만든 리소스를 삭제하려면 다음 단계를 수행하세요.

  1. 단독 테넌트 노드 풀을 삭제합니다.

    gcloud container node-pools delete NODE_POOL_NAME
    
  2. 단독 테넌트 노드 그룹을 삭제합니다.

    gcloud compute sole-tenancy node-groups delete GROUP_NAME \
        --zone COMPUTE_ZONE
    
  3. 단독 테넌트 노드 템플릿을 삭제합니다.

    gcloud compute sole-tenancy node-templates delete TEMPLATE_NAME \
        --region COMPUTE_REGION
    

다음 단계