노드 자동 프로비저닝 사용


이 페이지에서는 표준 Google Kubernetes Engine(GKE) 클러스터에서 노드 자동 프로비저닝을 사용하는 방법을 설명합니다.

Autopilot 클러스터를 사용하면 노드 풀이 노드 자동 프로비저닝을 통해 자동으로 프로비저닝되고 워크로드 요구사항이 충족되도록 자동으로 확장되므로 노드 프로비저닝이나 노드 풀 관리에 신경을 쓰지 않아도 됩니다.

개요

노드 자동 프로비저닝은 사용자를 대신하여 노드 풀 집합을 자동으로 관리합니다. 노드 자동 프로비저닝을 사용하지 않으면 GKE는 사용자가 만든 노드 풀 집합에서만 새 노드를 시작합니다. 노드 자동 프로비저닝을 사용하면 새 노드 풀을 자동으로 만들고 삭제할 수 있습니다.

시작하기 전에

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

다음 방법 중 하나를 사용하여 기본 gcloud 설정을 진행합니다.

  • gcloud init를 사용하여 기본값 설정 과정을 진행합니다.
  • gcloud config를 사용하여 프로젝트 ID, 영역, 리전을 개별적으로 설정합니다.

gcloud init 사용

One of [--zone, --region] must be supplied: Please specify location 오류가 표시되면 이 섹션을 완료합니다.

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

    gcloud init

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

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

gcloud config 사용

  • 기본 프로젝트 ID를 설정합니다.
    gcloud config set project PROJECT_ID
  • 영역 클러스터를 사용하는 경우 기본 컴퓨팅 영역을 설정합니다.
    gcloud config set compute/zone COMPUTE_ZONE
  • Autopilot 또는 리전 클러스터를 사용하는 경우 기본 컴퓨팅 리전을 설정합니다.
    gcloud config set compute/region COMPUTE_REGION
  • gcloud를 최신 버전으로 업데이트합니다.
    gcloud components update

요구사항

노드 자동 프로비저닝은 다음 GKE 출시 버전에서 사용할 수 있습니다.

  • 영역 클러스터의 경우 버전 1.11.2-gke.25 이상
  • 리전 클러스터의 경우 버전 1.12.x 이상

지원되지 않는 기능

다음 기능은 노드 자동 프로비저닝에서 지원되지 않습니다. 즉, 노드 자동 프로비저닝이 이러한 기능을 노드 풀에 프로비저닝하지 않지만, 기존 노드 풀을 자동 확장합니다.

작업

노드 자동 프로비저닝은 클러스터 자동 확장 처리 메커니즘의 일종으로, 노드 풀 단위로 확장합니다. 노드 자동 프로비저닝을 사용 설정하면 클러스터 자동 확장 처리가 예약할 수 없는 pod의 사양에 따라 노드 풀을 자동으로 확장할 수 있습니다.

노드 자동 프로비저닝은 다음 정보를 기준으로 노드 풀을 만듭니다.

리소스 한도

노드 자동 프로비저닝과 클러스터 자동 확장 처리에는 두 가지 수준의 제한이 적용됩니다.

  • 노드 풀 수준
  • 클러스터 수준

노드 풀 제한

노드 자동 프로비저닝으로 만드는 노드 풀은 1000 노드로 제한됩니다.

클러스터 제한

자동 프로비저닝 풀뿐만 아니라 클러스터에 사용된 총 CPU와 메모리 리소스에 따라 정의한 제한이 적용됩니다.

클러스터 자동 확장 처리는 정의된 제한 중 하나를 초과하면 새 노드를 만들지 않습니다. 이미 제한을 초과한 경우에는 노드가 자동으로 삭제되지 않습니다.

워크로드 분리

노드 어피니티 및 내결함성이 있는 보류 중인 Pod가 있는 경우 노드 자동 프로비저닝은 일치하는 라벨과 taint로 노드를 프로비저닝할 수 있습니다.

노드 자동 프로비저닝은 다음 조건이 모두 충족되는 경우 라벨과 taint를 사용하여 노드 풀을 만들 수 있습니다.

  • 보류 중인 Pod에는 특정 라벨 키와 값이 있는 노드가 필요합니다.
  • Pod에는 키가 동일한 taint에 대한 내결함성이 있습니다.
  • 내결함성은 NoSchedule 효과, NoExecute 효과 또는 모든 효과를 위한 것입니다.

pod 사양은 다음과 같은 두 가지 방식으로 특정 라벨의 노드가 필요함을 표시할 수 있습니다.

  • nodeSelector 필드 사용
  • In 연산자와 정확히 하나의 값을 포함하는 nodeAffinity 필드 사용

다음 예시는 워크로드 분리 요청으로 해석되는 pod 사양의 일부입니다. 이 예시에서 클러스터 관리자는 워크로드 격리에 사용할 키로 dedicated를 선택했으며, UI 팀은 워크로드를 위한 전용 노드가 필요하다고 판단했습니다.

pod에는 dedicated=ui-team 라벨이 지정된 노드에 대한 내결함성이 있으며 노드 선택을 위해 nodeAffinity를 사용합니다.

spec:
  tolerations:
  - key: dedicated
    operator: Equal
    value: ui-team
    effect: NoSchedule
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: dedicated
            operator: In
            values:
            - ui-team

이 pod가 있으면 taint dedicated=ui-team:NoSchedule과 라벨 dedicated=ui-team이 있는 노드가 자동 프로비저닝에 의한 생성 대상으로 고려됩니다.

다음 예시는 nodeSelector를 사용하며 동일한 효과를 가집니다.

spec:
  tolerations:
  - key: dedicated
    operator: Equal
    value: ui-team
    effect: NoSchedule
  nodeSelector:
    dedicated: ui-team

자동 프로비저닝된 노드 풀 삭제

자동 프로비저닝된 노드 풀에 노드가 없으면 GKE가 노드 풀을 삭제합니다. 자동 프로비저닝으로 표시되지 않은 노드 풀은 삭제되지 않습니다.

지원되는 머신 유형

GKE 1.19.7-gke.800부터 노드 자동 프로비저닝은 노드 풀을 만들 때 N1 머신을 제외하고 모든 머신 유형을 고려합니다. 노드 자동 프로비저닝은 vCPU가 최대 64개인 머신만 고려합니다. 기본적으로 E2 머신 계열이 사용됩니다. 다음은 예외적인 경우입니다.

  • 워크로드 요청은 E2 머신 계열로 처리될 수 없습니다. 예를 들어 워크로드에서 GPU가 요청될 경우 N1 머신 계열이 새 노드 풀에 사용됩니다.
  • 워크로드에 머신 계열 라벨이 사용됩니다. 워크로드 요청을 처리할 수 없으면(이전 지점 기준) 이 동작을 재정의할 수 있습니다. 자세한 내용은 커스텀 머신 계열 사용을 참조하세요.

GKE 1.19.7-gke.800 이전 버전의 경우 노드 자동 프로비저닝은 vCPU가 최대 64개인 N1 머신 유형만 고려합니다.

지원되는 노드 이미지

노드 자동 프로비저닝은 다음 노드 이미지 중 하나를 사용하여 노드 풀을 만듭니다.

  • Container-Optimized OS(cos 또는 cos_containerd)
  • Ubuntu(ubuntu 또는 ubuntu_containerd)

선점형 VM 지원

노드 자동 프로비저닝은 선점형 가상 머신(VM) 인스턴스에 기반한 노드 풀 만들기를 지원합니다.

선점형 VM 기반 노드 풀은 cloud.google.com/gke-preemptible="true":NoSchedule taint에 대한 내결함성을 갖춘 예약할 수 없는 pod가 존재하는 경우에만 고려됩니다.

선점형 VM을 기반으로 하고 자동 프로비저닝된 노드 풀로 만들어진 노드에는 taint가 적용됩니다.

임시 스토리지를 요청하는 pod 지원

pod가 임시 스토리지를 요청할 때 노드 자동 프로비저닝은 노드 풀 만들기를 지원합니다. 노드 풀에 프로비저닝된 부팅 디스크의 크기는 자동 프로비저닝된 모든 새로운 노드 풀에 대해 일정합니다. 이러한 부팅 디스크 크기는 맞춤설정이 가능하며, 기본값은 100GiB입니다. 로컬 SSD에서 지원되는 임시 스토리지는 지원되지 않습니다.

노드 자동 프로비저닝은 지정된 부팅 디스크가 포함된 노드의 할당 가능한 임시 스토리지가 보류 중인 pod의 임시 스토리지 요청보다 크거나 같은 경우에만 노드 풀을 프로비저닝합니다. 임시 스토리지 요청이 할당 가능한 것보다 크면 노드 자동 프로비저닝이 노드 풀을 프로비저닝하지 않습니다. 노드의 디스크 크기는 보류 중인 pod의 임시 스토리지 요청을 기준으로 동적으로 구성되지 않습니다.

pod에 대한 이러한 임시 스토리지 지원은 GKE 버전 1.19.7-gke.800 이상 및 1.18.12-gke.1210 이상에서 지원됩니다.

확장 제한사항

노드 자동 프로비저닝에는 클러스터 자동 확장 처리와 동일한 제한사항뿐 아니라 다음과 같은 추가 제한사항이 있습니다.

분리된 워크로드 수 제한
노드 자동 프로비저닝은 별개로 분리된 워크로드를 최대 100개까지 지원합니다.
노드 풀 수 제한
풀 수가 100개에 가까워지면 노드 자동 프로비저닝은 새 노드 풀 생성의 우선순위를 낮춥니다. 노드 풀을 100개 이상 만들 수 있지만 보류 중인 Pod를 예약할 때 노드 풀을 반드시 만들어야 하는 경우를 대비한 조치입니다.

노드 자동 프로비저닝 사용 설정

gcloud 또는 Google Cloud Console을 사용하여 클러스터에서 노드 자동 프로비저닝을 사용 설정합니다.

gcloud

노드 자동 프로비저닝을 사용 설정하려면 다음 명령어를 실행하세요.

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --min-cpu MINIMUM_CPU \
    --min-memory MIMIMUM_MEMORY \
    --max-cpu MAXIMUM_CPU \
    --max-memory MAXIMUM_MEMORY
    --autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only

다음을 바꿉니다.

  • CLUSTER_NAME: 노드 자동 프로비저닝을 사용 설정할 클러스터의 이름입니다.
  • MINIMUM_CPU: 클러스터의 최소 코어 수입니다.
  • MINIMUM_MEMORY: 클러스터의 최소 메모리 용량(GB)입니다.
  • MAXIMUM_CPU: 클러스터의 최대 코어 수입니다.
  • MAXIMUM_MEMORY: 클러스터의 최대 메모리 용량(GB)입니다.

다음 예시는 dev-cluster에서 노드 자동 프로비저닝을 사용 설정하고 1 CPU 및 1GB 메모리의 총 클러스터 크기를 최대 10 CPU 및 64GB 메모리까지 확장하도록 허용합니다.

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning \
    --min-cpu 1 \
    --min-memory 1 \
    --max-cpu 10 \
    --max-memory 64

콘솔

노드 자동 프로비저닝을 사용 설정하려면 다음 단계를 수행합니다.

  1. Cloud Console에서 Google Kubernetes Engine 메뉴로 이동합니다.

Google Kubernetes Engine 메뉴로 이동

  1. 원하는 클러스터를 선택합니다.
  2. 아이콘을 클릭합니다.
  3. 노드 자동 프로비저닝까지 아래로 스크롤하고 사용 설정을 선택합니다.
  4. 클러스터에 원하는 최소 및 최대 CPU 및 메모리 사용량을 설정합니다.
  5. 저장을 클릭합니다. GKE에서 클러스터를 업데이트합니다.

자동 프로비저닝 구성 파일 사용

노드 자동 프로비저닝은 YAML 구성 파일을 사용하여 구성할 수 있습니다. 구성 파일이 하나의 설정을 변경하는 데 사용되는 경우 한 줄만 포함될 수 있습니다. 하나의 구성 파일에 여러 설정을 지정할 수 있습니다. 이 경우 구성 파일이 적용되면 지정한 모든 설정이 변경됩니다.

일부 고급 구성은 구성 파일을 사용해서만 지정할 수 있습니다.

예시 1: 다음 구성 파일을 적용하면 노드 자동 프로비저닝으로 생성된 모든 새 노드 풀에 노드 자동 복구 및 자동 업그레이드가 사용 설정됩니다.

management:
  autoRepair: true
  autoUpgrade: true

예시 2: 다음 구성 파일을 적용하면 다음 설정이 변경됩니다.

  • CPU, 메모리, GPU리소스 한도를 설정합니다. 클러스터의 총 크기가 지정된 리소스 한도를 초과하면 노드 자동 프로비저닝에서 노드를 만들지 않습니다.
  • 노드 자동 프로비저닝으로 생성된 모든 새 노드 풀에 노드 자동 복구 및 자동 업그레이드를 사용 설정합니다.
  • 노드 자동 프로비저닝으로 생성된 모든 새 노드 풀에 보안 부팅 및 무결성 모니터링을 사용 설정합니다.
  • 노드 자동 프로비저닝으로 생성된 모든 새 노드 풀의 부팅 디스크 크기를 100GB로 설정합니다.
resourceLimits:
  -resourceType: 'cpu'
   minimum: 4
   maximum: 10
  -resourceType: 'memory'
   maximum: 64
  -resourceType: 'nvidia-tesla-k80'
   maximum: 4
management:
  autoRepair: true
  autoUpgrade: true
shieldedInstanceConfig:
  enableSecureBoot: true
  enableIntegrityMonitoring: true
diskSizeGb: 100

자동 프로비저닝 구성 파일을 사용하려면 다음 안내를 따르세요.

  1. gcloud가 액세스할 수 있는 위치에 원하는 구성으로 파일을 만듭니다.

  2. 다음 명령어를 실행하여 클러스터에 구성을 적용합니다.

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • FILE_NAME: 구성 파일의 이름입니다.

    자세한 내용은 gcloud container clusters update 문서를 참조하세요.

자동 프로비저닝 기본값

노드 자동 프로비저닝은 클러스터의 pod 요구사항을 확인하여 해당 pod에 가장 적합한 노드 유형을 결정합니다. 그러나 일부 노드 풀 설정은 pod에 의해 직접 지정되지 않습니다(예: 노드 업그레이드와 관련된 설정). 이러한 설정의 기본값을 설정할 수 있으며 이 값은 새로 생성된 모든 노드 풀에 적용됩니다.

기본 노드 이미지 유형 설정

gcloud 도구 또는 구성 파일을 사용하여 모든 새로운 자동 프로비저닝된 노드 풀에 사용할 노드 이미지 유형을 지정할 수 있습니다.

gcloud

기본 노드 이미지 유형을 설정하려면 다음 명령어를 실행합니다.

gcloud container clusters update CLUSTER_NAME \
  --enable-autoprovisioning \
  --autoprovisioning-image-type IMAGE_TYPE

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름입니다.
  • IMAGE_TYPE: 노드 이미지 유형이며 다음 중 하나일 수 있습니다.

    • cos_containerd: Containerd를 포함한 Container-Optimized OS입니다.
    • cos: Docker를 포함한 Container-Optimized OS입니다.
    • ubuntu_containerd: Containerd를 포함한 Ubuntu입니다.
    • ubuntu: Docker를 포함한 Ubuntu입니다.

파일

모든 새로운 자동 프로비저닝된 노드 풀에 대해 구성 파일을 사용하여 사용할 노드 이미지 유형을 지정할 수 있습니다. 다음 YAML 구성은 새로운 자동 프로비저닝된 노드 풀의 경우 이미지 유형이 cos_containerd이고 CPU 및 메모리에 대한 관련 리소스 한도가 있도록 지정합니다. 자동 프로비저닝을 사용 설정하려면 CPU 및 메모리의 최댓값을 지정해야 합니다.

  1. YAML 구성을 저장합니다.

    resourceLimits:
      - resourceType: 'cpu'
          minimum: 4
          maximum: 10
      - resourceType: 'memory'
          maximum: 64
    autoprovisioningNodePoolDefaults:
      imageType: 'cos_containerd'
    
  2. 구성을 적용합니다.

    gcloud container clusters update CLUSTER_NAME \
      --enable-autoprovisioning \
      --autoprovisioning-config-file FILE_NAME
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • FILE_NAME: 구성 파일의 이름입니다.

자동 프로비저닝된 노드 풀의 ID 기본값 설정

Google Cloud 리소스에 대한 권한은 ID를 통해 제공됩니다.

gcloud 도구를 사용하거나 구성 파일을 통해 새 자동 프로비저닝된 노드 풀의 기본 ID(서비스 계정 또는 범위 한 개 이상)를 지정할 수 있습니다.

gcloud

노드 자동 프로비저닝에 사용할 기본 IAM 서비스 계정을 지정하려면 다음 명령어를 실행합니다.

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --autoprovisioning-service-account=SERVICE_ACCOUNT

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름입니다.
  • SERVICE_ACCOUNT: 기본 서비스 계정의 이름입니다.

다음 예시는 test-service-account@google.comdev-cluster 클러스터에서 기본 서비스 계정으로 설정합니다.

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning --autoprovisioning-service-account=test-service-account@google.com

노드 자동 프로비저닝에 사용하는 기본 범위를 지정하려면 다음 명령어를 실행합니다.

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --autoprovisioning-scopes=SCOPE

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름입니다.
  • SCOPE: 자동 프로비저닝된 노드 풀에서 사용되는 Google Cloud 범위입니다. 여러 범위를 지정하려면 범위를 쉼표로 구분합니다(예: SCOPE1, SCOPE2,...).

다음 예시에서는 dev-cluster 클러스터에서 기본 범위를 devstorage.read_only로 설정합니다.

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning \
    --autoprovisioning-scopes=https://www.googleapis.com/auth/pubsub,https://www.googleapis.com/auth/devstorage.read_only

파일

구성 파일을 사용하여 노드 자동 프로비저닝에 사용되는 ID 기본값을 지정할 수 있습니다. 다음 YAML 구성은 IAM 서비스 계정을 설정합니다.

  serviceAccount: SERVICE_ACCOUNT

SERVICE_ACCOUNT를 기본 서비스 계정의 이름으로 바꿉니다.

또는 다음 YAML 구성을 사용하여 노드 자동 프로비저닝에 사용되는 기본 범위를 지정할 수 있습니다.

  scopes: SCOPE

SCOPE를 자동 프로비저닝된 노드 풀에서 사용하는 Google Cloud 범위로 바꿉니다. 여러 범위를 지정하려면 범위를 쉼표로 구분합니다(예: SCOPE1, SCOPE2,...).

자동 프로비저닝 구성 파일을 사용하려면 다음 안내를 따르세요.

  1. gcloud에서 액세스할 수 있는 위치에 ID 기본값을 지정하는 구성 파일을 만듭니다.

  2. 다음 명령어를 실행하여 클러스터에 구성을 적용합니다.

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름입니다.
  • FILE_NAME: 구성 파일의 이름입니다.

고객 관리 암호화 키(CMEK)

새 자동 프로비저닝된 노드 풀에서 사용되는 고객 관리 암호화 키(CMEK)를 지정할 수 있습니다.

구성 파일을 사용하여 부팅 드라이브에 고객 관리 암호화를 사용 설정할 수 있습니다. 다음 YAML 구성은 CMEK 키를 설정합니다.

  bootDiskKmsKey: projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME

다음을 바꿉니다.

  • KEY_PROJECT_ID: 키 프로젝트 ID입니다.
  • LOCATION: 키링의 위치입니다.
  • KEY_RING: 키링의 이름입니다.
  • KEY_NAME: 키의 이름입니다.

자동 프로비저닝 구성 파일을 사용하려면 다음 안내를 따르세요.

  1. gcloud가 액세스할 수 있는 위치에 CMEK 키를 지정하는 구성 파일을 만듭니다.

  2. 다음 명령어를 실행하여 클러스터에 구성을 적용합니다.

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • FILE_NAME: 구성 파일의 이름입니다.

노드 무결성

노드 자동 프로비저닝은 보안 부팅 및 무결성 모니터링이 사용 설정된 노드 풀 만들기를 지원합니다.

구성 파일을 사용하여 보안 부팅 및 무결성 모니터링을 사용 설정할 수 있습니다. 다음 YAML 구성은 보안 부팅을 사용 설정하고 무결성 모니터링을 사용 중지합니다.

  shieldedInstanceConfig:
    enableSecureBoot: true
    enableIntegrityMonitoring: false

자동 프로비저닝 구성 파일을 사용하려면 다음 안내를 따르세요.

  1. 위의 구성을 gcloud가 액세스할 수 있는 위치의 파일로 복사합니다. enableSecureBootenableIntegrityMonitoring의 값을 수정합니다. 파일을 저장합니다.

  2. 다음 명령어를 실행하여 클러스터에 구성을 적용합니다.

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • FILE_NAME: 구성 파일의 이름입니다.

노드 자동 복구 및 자동 업그레이드

노드 자동 프로비저닝은 노드 자동 복구 및 노드 자동 업그레이드를 사용 설정하여 노드 풀 만들기를 지원합니다.

gcloud

모든 새로운 자동 프로비저닝된 노드 풀에 대해 자동 복구 및 자동 업그레이드를 사용 설정하려면 다음 명령어를 실행합니다.

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --enable-autoprovisioning-autorepair \
    --enable-autoprovisioning-autoupgrade

CLUSTER_NAME을 클러스터 이름으로 바꿉니다.

모든 새 자동 프로비저닝된 노드 풀에서 자동 복구와 자동 업그레이드를 사용 중지하려면 다음 명령어를 실행합니다.

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --no-enable-autoprovisioning-autorepair \
    --no-enable-autoprovisioning-autoupgrade

CLUSTER_NAME을 클러스터 이름으로 바꿉니다.

파일

구성 파일을 사용하여 노드 자동 복구 및 자동 업그레이드를 사용 설정하거나 사용 중지할 수 있습니다. 다음 YAML 구성은 자동 복구를 사용 설정하고 자동 업그레이드를 사용 중지합니다.

  management:
    autoRepair: true
    autoUpgrade: false

자동 프로비저닝 구성 파일을 사용하려면 다음 안내를 따르세요.

  1. 위의 구성을 gcloud가 액세스할 수 있는 위치의 파일로 복사합니다. autoUpgradeautoRepair의 값을 수정합니다. 파일을 저장합니다.

  2. 다음 명령어를 실행하여 클러스터에 구성을 적용합니다.

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --autoprovisioning-config-file FILE_NAME

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름입니다.
  • FILE_NAME: 구성 파일의 이름입니다.

노드 일시 급증 업그레이드 설정

gcloud 도구 또는 구성 파일을 사용하여 새로운 자동 프로비저닝된 노드 풀 전체에 일시 급증 업그레이드 설정을 지정할 수 있습니다.

gcloud

모든 새로운 자동 프로비저닝된 노드 풀에 대해 일시 급증 업그레이드 설정을 지정하려면 다음 명령어를 실행합니다.

gcloud container clusters update CLUSTER_NAME \
    --autoprovisioning-max-surge-upgrade MAX_SURGE \
    --autoprovisioning-max-unavailable-upgrade MAX_UNAVAILABLE

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름입니다.
  • MAX_SURGE: 업그레이드 중에 노드 풀에 추가할 수 있는 최대 노드 수입니다.
  • MAX_UNAVAILABLE: 업그레이드 중에 동시에 사용할 수 없는 노드 풀의 최대 노드 수입니다.

파일

다음과 같은 구성 파일을 사용하여 새 자동 프로비저닝된 모든 노드 풀에 일시 급증 업그레이드 설정을 지정할 수 있습니다.

  upgradeSettings:
    maxSurgeUpgrade: 1
    maxUnavailableUpgrade: 2

자동 프로비저닝 구성 파일을 사용하려면 다음 안내를 따르세요.

  1. 위의 구성을 gcloud가 액세스할 수 있는 위치의 파일로 복사합니다. maxSurgeUpgrademaxUnavailableUpgrade의 값을 수정합니다. 파일을 저장합니다.

  2. 다음 명령어를 실행하여 클러스터에 구성을 적용합니다.

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --autoprovisioning-config-file FILE_NAME

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름입니다.
  • FILE_NAME: 구성 파일의 이름입니다.

자세한 내용은 gcloud container clusters update 문서를 참조하세요.

커스텀 부팅 디스크

노드 자동 프로비저닝은 커스텀 부팅 디스크로 노드 풀 만들기를 지원합니다.

구성 파일을 사용하여 부팅 디스크 설정을 맞춤설정할 수 있습니다. 다음 YAML 구성을 사용하면 노드 자동 프로비저닝이 100GB SSD 디스크가 있는 노드 풀을 만듭니다.

  diskSizeGb: 100
  diskType: pd-ssd

다음 사항을 지정합니다.

  • diskSizeGb: GB 단위로 지정된 디스크 크기입니다.
  • diskType: 디스크 유형이며 다음 값 중 하나일 수 있습니다.
    • pd-standard: 표준 영구 디스크(기본값)입니다.
    • pd-ssd: SSD 영구 디스크입니다.

자동 프로비저닝 구성 파일을 사용하려면 다음 안내를 따르세요.

  1. gcloud가 액세스할 수 있는 위치에 원하는 부팅 디스크 구성이 있는 파일을 만듭니다.

  2. 다음 명령어를 실행하여 클러스터에 구성을 적용합니다.

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • FILE_NAME: 구성 파일의 이름입니다.

GPU 제한 구성

GPU와 함께 노드 자동 프로비저닝을 사용하는 경우 gcloud 도구 또는 Google Cloud Console을 사용하여 클러스터의 GPU 유형마다 최대 제한을 설정할 수 있습니다. 여러 유형의 GPU를 구성하려면 구성 파일을 사용해야 합니다.

사용 가능한 resourceTypes를 나열하려면 gcloud compute accelerator-types list를 실행합니다.

gcloud

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --max-cpu MAXIMUM_CPU \
    --max-memory MAXIMUM_MEMORY \
    --min-accelerator type=GPU_TYPE,count=MINIMUM_ACCELERATOR \
    --max-accelerator type=GPU_TYPE,count=MAXIMUM_ACCELERATOR

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름입니다.
  • MAXIMUM_CPU: 클러스터의 최대 코어 수입니다.
  • MAXIMUM_MEMORY: 클러스터의 최대 메모리 용량(GB)입니다.
  • GPU_TYPE: GPU 유형입니다.
  • MINIMUM_ACCELERATOR: 클러스터의 최소 GPU 가속기 수입니다.
  • MAXIMUM_ACCELERATOR: 클러스터의 최대 GPU 가속기 수입니다.

다음 예시는 dev-cluster 클러스터의 nvidia-tesla-k80 GPU 가속기 유형에 GPU 제한을 설정합니다.

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning \
    --max-cpu 10 \
    --max-memory 64 \
    --min-accelerator type=nvidia-tesla-k80,count=1 \
    --max-accelerator type=nvidia-tesla-k80,count=4

파일

구성 파일을 사용하여 여러 GPU 유형에 대한 제한을 로드할 수 있습니다. 다음 YAML 구성은 두 가지 GPU 유형을 구성합니다.

  resourceLimits:
    -resourceType: 'cpu'
     minimum: 4
     maximum: 10
    -resourceType: 'memory'
     maximum: 64
    -resourceType: 'nvidia-tesla-k80'
     maximum: 4
    -resourceType: 'nvidia-tesla-v100'
     maximum: 2

자동 프로비저닝 구성 파일을 사용하려면 다음 안내를 따르세요.

  1. 위의 구성을 gcloud가 액세스할 수 있는 위치의 파일로 복사합니다. cpumemory의 값을 수정합니다. resourceType에 필요한 만큼 값을 추가합니다. 파일을 저장합니다.

  2. 다음 명령어를 실행하여 클러스터에 구성을 적용합니다.

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --autoprovisioning-config-file FILE_NAME

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름입니다.
  • FILE_NAME: 구성 파일의 이름입니다.

자세한 내용은 gcloud container clusters update 문서를 참조하세요.

콘솔

GPU 리소스와 함께 노드 자동 프로비저닝을 사용 설정하려면 다음 단계를 수행합니다.

  1. Cloud Console에서 Google Kubernetes Engine 메뉴로 이동합니다.

Google Kubernetes Engine 메뉴로 이동

  1. 원하는 클러스터를 선택합니다.
  2. 수정 아이콘을 클릭합니다.
  3. 노드 자동 프로비저닝까지 아래로 스크롤하고 사용 설정을 선택합니다.
  4. 클러스터에 원하는 최소 및 최대 CPU 및 메모리 사용량을 설정합니다.
  5. 리소스 추가를 클릭합니다.
  6. 추가할 GPU 유형(예: NVIDIA TESLA K80)을 선택합니다. 클러스터에 추가할 최소 및 최대 GPU 수를 설정합니다.
  7. GKE의 GPU 제한에 동의합니다.
  8. 저장을 클릭합니다. GKE에서 클러스터를 업데이트합니다.

노드 자동 프로비저닝 위치

노드 자동 프로비저닝이 새 노드 풀을 만들 수 있는 영역을 설정합니다. 리전 위치는 지원되지 않습니다. 영역은 클러스터와 동일한 리전에 속해야 하지만 클러스터 수준에서 정의된 노드 위치로 제한되지 않습니다. 노드 자동 프로비저닝 위치를 변경해도 기존 노드 풀에는 영향을 주지 않습니다.

노드 자동 프로비저닝이 새 노드 풀을 만들 수 있는 위치를 설정하려면 다음 명령어를 실행합니다.

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --autoprovisioning-locations=ZONE

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름입니다.
  • ZONE: 노드 자동 프로비저닝이 새 노드 풀을 만들 수 있는 영역입니다. 여러 영역을 지정하려면 영역을 쉼표로 구분합니다(예: ZONE1, ZONE2,...).

노드 자동 프로비저닝 사용 중지

클러스터의 노드 자동 프로비저닝을 사용 중지하면 노드 풀이 더 이상 자동으로 프로비저닝되지 않습니다.

gcloud

클러스터의 노드 자동 프로비저닝을 사용 중지하려면 다음 명령어를 실행합니다.

gcloud container clusters update CLUSTER_NAME \
  --no-enable-autoprovisioning

CLUSTER_NAME을 클러스터 이름으로 바꿉니다.

Console

Google Cloud Console을 사용하여 노드 자동 프로비저닝을 사용 중지하려면 다음 단계를 따르세요.

  1. Cloud Console에서 Google Kubernetes Engine 메뉴로 이동합니다.

Google Kubernetes Engine 메뉴로 이동

  1. 원하는 클러스터를 선택합니다.
  2. 수정 아이콘을 클릭합니다.
  3. 노드 자동 프로비저닝까지 아래로 스크롤하고 중지를 선택합니다.

노드 풀을 자동 프로비저닝으로 표시

클러스터의 노드 자동 프로비저닝을 사용 설정한 후 어느 노드 풀을 자동 프로비저닝할지 지정할 수 있습니다. 자동 프로비저닝된 노드 풀은 워크로드에서 사용되지 않는 경우 자동으로 삭제됩니다.

노드 풀을 자동 프로비저닝으로 표시하려면 다음 명령어를 실행합니다.

gcloud container node-pools update NODE_POOL_NAME \
  --enable-autoprovisioning

NODE_POOL_NAME을 노드 풀의 이름으로 바꿉니다.

노드 풀을 자동 프로비저닝되지 않은 것으로 표시

노드 풀을 자동 프로비저닝되지 않은 것으로 표시하려면 다음 명령어를 실행합니다.

gcloud container node-pools update NODE_POOL_NAME \
  --no-enable-autoprovisioning

NODE_POOL_NAME을 노드 풀의 이름으로 바꿉니다.

커스텀 머신 계열 사용

GKE 1.19.7-gke.800부터 워크로드에 머신 계열을 선택할 수 있습니다. 이 작업은 다음 중 한 가지 방법을 사용하여 수행합니다.

  • cloud.google.com/machine-family 키, In 연산자, 원하는 머신 계열(예: n2)에 해당하는 값으로 노드 어피니티를 설정합니다.
  • cloud.google.com/machine-family 키와 원하는 머신 계열에 해당하는 값으로 nodeSelector를 추가합니다.

다음은 nodeAffinityn2의 머신 계열로 설정하는 예시입니다.

spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: cloud.google.com/machine-family
            operator: In
            values:
            - n2

변경사항을 적용한 후 노드 자동 프로비저닝은 지정된 머신 계열 내에서 머신 유형으로 최적의 노드 풀을 선택합니다. 일치 표현식에 여러 값이 사용된 경우 값 하나가 임의로 선택됩니다.

다음 단계