이 페이지에서는 표준 Google Kubernetes Engine(GKE) 클러스터에서 노드 자동 프로비저닝을 사용하는 방법을 설명합니다. 이 페이지를 읽기 전에 노드 자동 프로비저닝을 숙지해야 합니다.
시작하기 전에
시작하기 전에 다음 태스크를 수행했는지 확인합니다.
- Google Kubernetes Engine API를 사용 설정합니다. Google Kubernetes Engine API 사용 설정
- 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우
gcloud components update
를 실행하여 최신 버전을 가져옵니다.
요구사항
노드 자동 프로비저닝은 다음 GKE 출시 버전에서 사용할 수 있습니다.
- Cloud TPU v4 및 v5e의 경우 버전 1.27.6 이상 또는 1.28 이상
- Cloud TPU v5p의 경우 버전 1.28.7-gke.1020000 이상 및 1.29.2-gke.1035000 이상
노드 자동 프로비저닝 사용 설정
gcloud CLI 또는 Google Cloud 콘솔을 사용하여 클러스터에서 노드 자동 프로비저닝을 사용 설정할 수 있습니다.
노드 자동 프로비저닝에는 다음 리소스 제한사항이 있습니다.
노드 IP 주소 범위를 신중하게 계획해야 합니다. 클러스터를 만든 후 노드 IP 주소 범위를 확장할 수 있습니다. 하지만 새 범위를 소스로 포함하도록 방화벽 규칙을 업데이트해야 하므로 클러스터를 만든 후 노드 IP 주소 범위를 확장하지 않는 것이 좋습니다. 노드 자동 프로비저닝과 함께 연속되지 않은 멀티 포드 CIDR을 사용하여 포드 IP 주소 범위를 확장할 수 있습니다.
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
콘솔
노드 자동 프로비저닝을 사용 설정하려면 다음 단계를 수행합니다.
Google Cloud Console에서 Google Kubernetes Engine 페이지로 이동합니다.
클러스터 이름을 클릭합니다.
자동화 섹션의 노드 자동 프로비저닝에서
수정을 클릭합니다.노드 자동 프로비저닝 사용 설정 체크박스를 선택합니다.
클러스터에 원하는 최소 및 최대 CPU 및 메모리 사용량을 설정합니다.
변경사항 저장을 클릭합니다.
자동 프로비저닝 구성 파일 사용
노드 자동 프로비저닝은 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-t4' maximum: 4 management: autoRepair: true autoUpgrade: true shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: true diskSizeGb: 100
자동 프로비저닝 구성 파일을 사용하려면 다음 안내를 따르세요.
gcloud CLI에서 액세스할 수 있는 위치에 원하는 구성으로 파일을 만듭니다.
다음 명령어를 실행하여 클러스터에 구성을 적용합니다.
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
다음을 바꿉니다.
CLUSTER_NAME
: 클러스터의 이름입니다.FILE_NAME
: 구성 파일의 이름입니다.
자세한 내용은
gcloud container clusters update
문서를 참조하세요.
자동 프로비저닝 기본값
노드 자동 프로비저닝은 클러스터의 포드 요구사항을 확인하여 해당 포드에 가장 적합한 노드 유형을 결정합니다. 그러나 일부 노드 풀 설정은 포드에 의해 직접 지정되지 않습니다(예: 노드 업그레이드와 관련된 설정). 이러한 설정의 기본값을 설정할 수 있으며 이 값은 새로 생성된 모든 노드 풀에 적용됩니다.
기본 노드 이미지 유형 설정
gcloud CLI 또는 구성 파일을 사용하여 모든 새로운 자동 프로비저닝된 노드 풀에 사용할 노드 이미지 유형을 지정할 수 있습니다. 이 설정은 GKE 클러스터 버전 1.20.6-gke.1800 이상에서만 사용할 수 있습니다.
gcloud
기본 노드 이미지 유형을 설정하려면 다음 명령어를 실행합니다.
gcloud container clusters update CLUSTER_NAME \
--enable-autoprovisioning \
--autoprovisioning-image-type IMAGE_TYPE
다음을 바꿉니다.
CLUSTER_NAME
: 클러스터의 이름입니다.IMAGE_TYPE
: 노드 이미지 유형이며 다음 중 하나일 수 있습니다.cos_containerd
: containerd를 포함한 Container-Optimized OS입니다.ubuntu_containerd
: containerd를 포함한 Ubuntu입니다.
파일
모든 새로운 자동 프로비저닝된 노드 풀에 대해 구성 파일을 사용하여 사용할 노드 이미지 유형을 지정할 수 있습니다.
다음 YAML 구성은 새로운 자동 프로비저닝된 노드 풀의 경우 이미지 유형이 cos_containerd
이고 CPU 및 메모리에 대한 관련 리소스 한도가 있도록 지정합니다. 자동 프로비저닝을 사용 설정하려면 CPU 및 메모리의 최댓값을 지정해야 합니다.
YAML 구성을 저장합니다.
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 imageType: 'cos_containerd'
구성을 적용합니다.
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
다음을 바꿉니다.
CLUSTER_NAME
: 클러스터의 이름입니다.FILE_NAME
: 구성 파일의 이름입니다.
자동 프로비저닝된 노드 풀의 ID 기본값 설정
Google Cloud 리소스에 대한 권한은 ID를 통해 제공됩니다.
gcloud CLI를 사용하거나 구성 파일을 통해 새 자동 프로비저닝된 노드 풀의 기본 ID(서비스 계정 또는 범위 한 개 이상)를 지정할 수 있습니다.
gcloud
노드 자동 프로비저닝에 사용할 기본 IAM 서비스 계정을 지정하려면 다음 명령어를 실행합니다.
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --autoprovisioning-service-account=SERVICE_ACCOUNT
다음을 바꿉니다.
CLUSTER_NAME
: 클러스터의 이름입니다.SERVICE_ACCOUNT
: 기본 서비스 계정의 이름입니다.
다음 예시는 test-service-account@google.com
을 dev-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,...
).
자동 프로비저닝 구성 파일을 사용하려면 다음 안내를 따르세요.
gcloud CLI에서 액세스할 수 있는 위치에 ID 기본값을 지정하는 구성 파일을 만듭니다.
다음 명령어를 실행하여 클러스터에 구성을 적용합니다.
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
: 키의 이름입니다.
자동 프로비저닝 구성 파일을 사용하려면 다음 안내를 따르세요.
gcloud CLI에서 액세스할 수 있는 위치에 CMEK 키를 지정하는 구성 파일을 만듭니다.
다음 명령어를 실행하여 클러스터에 구성을 적용합니다.
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
다음을 바꿉니다.
CLUSTER_NAME
: 클러스터의 이름입니다.FILE_NAME
: 구성 파일의 이름입니다.
노드 무결성
노드 자동 프로비저닝은 보안 부팅 및 무결성 모니터링이 사용 설정된 노드 풀 만들기를 지원합니다.
구성 파일을 사용하여 보안 부팅 및 무결성 모니터링을 사용 설정할 수 있습니다. 다음 YAML 구성은 보안 부팅을 사용 설정하고 무결성 모니터링을 사용 중지합니다.
shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: false
자동 프로비저닝 구성 파일을 사용하려면 다음 안내를 따르세요.
위 구성을 gcloud CLI에서 액세스할 수 있는 위치에 있는 파일에 복사합니다.
enableSecureBoot
및enableIntegrityMonitoring
의 값을 수정합니다. 파일을 저장합니다.다음 명령어를 실행하여 클러스터에 구성을 적용합니다.
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
자동 프로비저닝 구성 파일을 사용하려면 다음 안내를 따르세요.
위 구성을 gcloud CLI에서 액세스할 수 있는 위치에 있는 파일에 복사합니다.
autoUpgrade
및autoRepair
의 값을 수정합니다. 파일을 저장합니다.다음 명령어를 실행하여 클러스터에 구성을 적용합니다.
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
다음을 바꿉니다.
CLUSTER_NAME
: 클러스터의 이름입니다.FILE_NAME
: 구성 파일의 이름입니다.
새 자동 프로비저닝된 노드 풀에 일시 급증 업그레이드 사용
gcloud CLI 또는 구성 파일을 사용하여 새로운 자동 프로비저닝된 노드 풀 전체에 일시 급증 업그레이드 설정을 지정할 수 있습니다. 기본적으로 GKE는 노드 업그레이드 전략을 일시 급증 업그레이드로 설정합니다.
gcloud
모든 새로운 자동 프로비저닝된 노드 풀에 대해 일시 급증 업그레이드 설정을 지정하려면 다음 명령어를 실행합니다.
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-max-surge-upgrade MAX_SURGE \ --autoprovisioning-max-unavailable-upgrade MAX_UNAVAILABLE
다음을 바꿉니다.
CLUSTER_NAME
: 클러스터의 이름입니다.MAX_SURGE
: 업그레이드 중에 노드 풀에 추가할 수 있는 최대 노드 수입니다.MAX_UNAVAILABLE
: 업그레이드 중에 동시에 사용할 수 없는 노드 풀의 최대 노드 수입니다.
파일
다음과 같은 구성 파일을 사용하여 새 자동 프로비저닝된 모든 노드 풀에 일시 급증 업그레이드 설정을 지정할 수 있습니다.
upgradeSettings: maxSurgeUpgrade: 1 maxUnavailableUpgrade: 2
자동 프로비저닝 구성 파일을 사용하려면 다음 안내를 따르세요.
위의 구성을
gcloud
가 액세스할 수 있는 위치의 파일로 복사합니다.maxSurgeUpgrade
및maxUnavailableUpgrade
의 값을 수정합니다. 파일을 저장합니다.다음 명령어를 실행하여 클러스터에 구성을 적용합니다.
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
다음을 바꿉니다.
CLUSTER_NAME
: 클러스터의 이름입니다.FILE_NAME
: 구성 파일의 이름입니다.
자세한 내용은 gcloud container clusters update
문서를 참조하세요.
새 자동 프로비저닝된 노드 풀에 대해 일시 급증 업그레이드를 사용하도록 다시 전환하려면 다음 명령어를 실행합니다.
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --enable-autoprovisioning-surge-upgrade
CLUSTER_NAME
을 클러스터 이름으로 바꿉니다.
이전 명령어에서와 같이 특정 설정에 대해 플래그를 선택적으로 포함할 수 있습니다. GKE에서는 설정된 경우 업그레이드 전략에 대한 이전 구성이 다시 사용됩니다.
새 자동 프로비저닝된 노드 풀에 대해 블루-그린 업그레이드 사용
gcloud CLI를 사용하여 모든 새 자동 프로비저닝된 노드 풀에 대해 블루-그린 업그레이드를 사용할 수 있습니다. 블루-그린 업그레이드의 경우 기본 설정을 사용하거나 환경에 맞게 최적화할 수 있습니다. 블루-그린 업그레이드에 대해 자세히 알아보려면 블루-그린 업그레이드를 참조하세요.
기존 자동 프로비저닝된 노드 풀에 대한 노드 업그레이드 전략을 업데이트하려면 기존 노드 풀에 대한 일시 급증 업그레이드 설정 또는 해제 및 기존 노드 풀 블루-그린 업그레이드 전략 업데이트를 참조하세요.
아래 명령어에 사용되는 변수는 다음과 같습니다.
CLUSTER_NAME
: 노드 풀의 클러스터 이름입니다.COMPUTE_ZONE
: 클러스터의 영역입니다.NODE_POOL_NAME
: 노드 풀의 이름입니다.NUMBER_NODES
: 각 클러스터 영역의 노드 풀에 있는 노드 수입니다.BATCH_NODE_COUNT
: 블루 풀 드레이닝 단계 중 일괄 처리에서 드레이닝할 블루 노드 수입니다. 기본값은 1입니다. 0으로 설정하면 블루 풀 드레이닝 단계를 건너뜁니다.BATCH_PERCENT
: 블루 풀 드레이닝 단계 중 일괄 처리에서 드레이닝할 블루 노드의 비율입니다. 범위는 [0.0, 1.0] 이내여야 합니다.BATCH_SOAK_DURATION
: 각 일괄 드레이닝 이후 대기할 시간(초)입니다. 기본값은 0입니다.NODE_POOL_SOAK_DURATION
: 모든 일괄 처리의 드레이닝을 완료한 후 대기할 시간(초)입니다. 기본값은 3,600초입니다.
블루-그린 업그레이드의 기본 설정은 다음과 같습니다.
BATCH_NODE_COUNT
= 1BATCH_SOAK_DURATION
= 0초NODE_POOL_SOAK_DURATION
= 3,600초(1시간)
새 자동 프로비저닝된 노드 풀에 블루-그린 업그레이드를 사용하도록 클러스터 업데이트
다음 명령어는 gcloud container clusters
update
를 사용하여 새 자동 프로비저닝된 노드 풀에 대한 노드 업그레이드 전략을 업데이트합니다.
다음 경우에도 이러한 플래그를 사용할 수 있습니다.
gcloud container clusters create
명령어를 사용하여 자동 프로비저닝이 사용 설정된 노드로 클러스터 만들기gcoud container clusters update
명령어를 사용하여 노드 자동 프로비저닝 사용 설정
새 자동 프로비저닝된 노드 풀에 대한 기본 설정으로 블루-그린 업그레이드를 사용하도록 클러스터를 업데이트하려면 다음 명령어를 사용합니다.
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --enable-autoprovisioning-blue-green-upgrade
새 자동 프로비저닝된 노드 풀에 대한 특정 설정으로 블루-그린 업그레이드를 사용하도록 클러스터를 업데이트할 수 있습니다. 또한 이러한 명령어는 설정을 업데이트하는 --enable-autoprovisioning-blue-green-upgrade
플래그 없이 사용될 수 있습니다.
다음 명령어는 BATCH_NODE_COUNT
를 사용하여 절대 노드 수 배치 크기를 설정합니다.
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --enable-autoprovisioning-blue-green-upgrade \ --autoprovisioning-node-pool-soak-duration=NODE_POOL_SOAK_DURATION \ --autoprovisioning-standard-rollout-policy=batch-node-count=BATCH_NODE_COUNT,batch-soak-duration=BATCH_SOAK_DURATION
또한 BATCH_PERCENT
를 사용하여 백분율 기반 배치 크기를 설정할 수 있습니다. 마지막 명령어의 batch-node-count
는 batch-percent
로 바꾸고 0~1 사이의 숫자를 사용합니다(예: 25%는 0.25
). 백분율 기반 배치 크기의 설정 방법을 보려면 백분율 기반 배치 크기를 사용하여 블루/그린 업그레이드로 노드 풀 업데이트를 참조하세요.
커스텀 부팅 디스크
노드 자동 프로비저닝은 커스텀 부팅 디스크로 노드 풀 만들기를 지원합니다.
구성 파일을 사용하여 부팅 디스크 설정을 맞춤설정할 수 있습니다. GKE는 kubelet 함수용 노드 부팅 디스크의 일부를 예약합니다. 자세한 내용은 노드 부팅 디스크를 기반으로 하는 임시 스토리지를 참조하세요.
다음 YAML 구성을 사용하면 노드 자동 프로비저닝이 100GB SSD 디스크가 있는 노드 풀을 만듭니다.
diskSizeGb: 100 diskType: pd-ssd
다음 사항을 지정합니다.
diskSizeGb
: GB 단위로 지정된 디스크 크기입니다.diskType
: 디스크 유형이며 다음 값 중 하나일 수 있습니다.pd-balanced
(기본)pd-standard
pd-ssd
. GKE 버전 1.22 이하에서pd-ssd
를 지정하면 노드 풀을 만들 때 노드 자동 프로비저닝에서 N1 머신 유형만 고려합니다.
자동 프로비저닝 구성 파일을 사용하려면 다음 안내를 따르세요.
gcloud CLI에서 액세스할 수 있는 위치에 원하는 부팅 디스크 구성이 있는 파일을 만듭니다.
다음 명령어를 실행하여 클러스터에 구성을 적용합니다.
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
다음을 바꿉니다.
CLUSTER_NAME
: 클러스터의 이름입니다.FILE_NAME
: 구성 파일의 이름입니다.
워크로드에서 GKE 관리형 포드 분리
클러스터 관리자는 워크로드에서 GKE가 관리하는 포드를 분리할 수 있습니다. 이렇게 분리하면 시스템 포드가 실행 중인 클러스터에 사용률이 낮은 노드가 있는 경우 축소 문제를 방지하는 데 도움이 됩니다.
다음 예시에서는 노드 자동 프로비저닝과 Kubernetes taint 및 톨러레이션(toleration)을 함께 사용하여 워크로드에서 관리형 포드를 분리하는 방법을 보여줍니다.
기본 노드 풀이
e2-standard-2
VM인 클러스터를 만들고 이러한 노드에서 GKE 시스템 워크로드만 실행되도록 하는 노드 taint를 적용합니다.gcloud container clusters create test-cluster \ --machine-type=e2-standard-2 \ --node-taints=components.gke.io/gke-managed-components=true:NoSchedule
클러스터에 대해 노드 자동 프로비저닝을 사용 설정합니다.
gcloud container clusters update test-cluster \ --enable-autoprovisioning \ --min-cpu 1 \ --min-memory 1 \ --max-cpu 10 \ --max-memory 64
클러스터는 CPU 1개 및 1GB 메모리에서 최대 CPU 10개 및 64GB 메모리까지 총 클러스터 크기를 확장할 수 있습니다.
다음 샘플 매니페스트를
nginx.yaml
로 저장하여 이 구성을 테스트합니다.apiVersion: v1 kind: Pod metadata: name: nginx labels: env: test spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent tolerations: - key: dedicated operator: Equal value: ui-team effect: NoSchedule nodeSelector: dedicated: ui-team
이 매니페스트는 클러스터에
nodeSelector
라벨과dedicated: ui-team
노드 taint를 사용하여 테스트 워크로드 포드를 배포합니다. 노드 자동 프로비저닝이 없으면 적절한 라벨과 taint가 있는 노드 풀이 없으므로 이 워크로드 포드를 예약할 수 없습니다.클러스터에 매니페스트를 적용합니다.
kubectl apply -f nginx.yaml
출력은 다음과 비슷합니다.
pod/nginx created
ui-team
라벨에 맞는 새 노드 풀을 확인합니다.kubectl get node --selector=dedicated=ui-team
출력은 다음과 비슷합니다.
NAME STATUS ROLES AGE VERSION gke-test-nap-e2-medium-14b723z1-19f89fa8-jmhr Ready <none> 14s v1.21.11-gke.900
클러스터는 관리형 GKE 포드와 워크로드를 분리합니다.
자동 프로비저닝된 노드의 실행 시간 제한
GKE 버전 1.31.1-gke.1146000 이상에서는 cloud.google.com/gke-max-run-duration-seconds
노드 선택기를 사용하여 자동 프로비저닝된 노드의 런타임을 제한할 수 있습니다.
매니페스트에 다음 필드를 추가합니다.
spec:
nodeSelector:
cloud.google.com/gke-max-run-duration-seconds: "MAX_RUN_DURATION"
MAX_RUN_DURATION
을 자동 프로비저닝된 노드가 자동으로 종료되기 전에 실행할 기간(초)으로 바꿉니다.
제한사항에 대한 자세한 내용은 MaxRunDuration 제한사항을 참조하세요.
새롭게 자동 프로비저닝된 노드 풀에 가속기 사용
AI/ML 워크로드를 예약하는 데 필요한 용량이 보장되도록 노드 자동 프로비저닝을 사용 설정하고 GKE를 구성하여 GPU 또는 Cloud TPU 가속기를 자동으로 프로비저닝할 수 있습니다.
GPU 제한 구성
GPU와 함께 노드 자동 프로비저닝을 사용하는 경우 gcloud CLI 또는 Google Cloud 콘솔을 사용하여 클러스터의 GPU 유형에 최대 제한을 설정할 수 있습니다. GPU 제한 수는 최대 GPU 수입니다. 예를 들어 16개의 GPU가 있는 VM은 이 한도에서 1이 아닌 16으로 계산됩니다. 여러 유형의 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-t4
GPU 가속기 유형에 GPU 제한을 설정합니다.
gcloud container clusters update dev-cluster \ --enable-autoprovisioning \ --max-cpu 10 \ --max-memory 64 \ --min-accelerator type=nvidia-tesla-t4,count=1 \ --max-accelerator type=nvidia-tesla-t4,count=4
파일
구성 파일을 사용하여 여러 GPU 유형에 대한 제한을 로드할 수 있습니다. 다음 YAML 구성은 두 가지 GPU 유형을 구성합니다.
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 - resourceType: 'nvidia-tesla-t4' maximum: 4 - resourceType: 'nvidia-tesla-v100' maximum: 2
자동 프로비저닝 구성 파일을 사용하려면 다음 안내를 따르세요.
위 구성을 gcloud CLI에서 액세스할 수 있는 위치에 있는 파일에 복사합니다.
cpu
및memory
의 값을 수정합니다.resourceType
에 필요한 만큼 값을 추가합니다. 파일을 저장합니다.다음 명령어를 실행하여 클러스터에 구성을 적용합니다.
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
다음을 바꿉니다.
CLUSTER_NAME
: 클러스터의 이름입니다.FILE_NAME
: 구성 파일의 이름입니다.
자세한 내용은 gcloud container clusters update
문서를 참조하세요.
콘솔
GPU 리소스와 함께 노드 자동 프로비저닝을 사용 설정하려면 다음 단계를 수행합니다.
Google Cloud Console에서 Google Kubernetes Engine 페이지로 이동합니다.
클러스터 이름을 클릭합니다.
자동화 섹션의 노드 자동 프로비저닝에서
수정을 클릭합니다.노드 자동 프로비저닝 사용 설정 체크박스를 선택합니다.
클러스터의 최소 및 최대 CPU 및 메모리 사용량을 설정합니다.
리소스 추가를 클릭합니다.
추가할 GPU 유형(예: NVIDIA T4)을 선택합니다. 클러스터에 추가할 최소 및 최대 GPU 수를 설정합니다.
GKE의 GPU 제한에 동의합니다.
변경사항 저장을 클릭합니다.
설치할 드라이버 버전 선택
GKE 버전 1.29.2-gke.1108000 이상에서는 자동 프로비저닝된 GPU 노드에 자동으로 설치할 GKE용 GPU 드라이버 버전을 선택할 수 있습니다. 매니페스트에 다음 필드를 추가합니다.
spec:
nodeSelector:
cloud.google.com/gke-gpu-driver-version: "DRIVER_VERSION"
DRIVER_VERSION
을 다음 값 중 하나로 바꿉니다.
default
- 노드 GKE 버전의 기본 정식 드라이버입니다. 매니페스트에서 nodeSelector를 생략하는 경우 기본 옵션입니다.latest
- 노드 GKE 버전에 사용 가능한 최신 드라이버 버전입니다.
Cloud TPU 구성
TPU에서 노드 자동 프로비저닝이 작동하는 방식에 대한 자세한 내용은 지원되는 머신러닝 가속기를 참조하세요.
gcloud CLI를 사용하여 클러스터를 만들고 TPU 리소스를 사용하도록 포드를 구성합니다. 여러 유형의 TPU를 구성하려면 구성 파일을 사용해야 합니다.
gcloud
클러스터를 만들고 TPU 한도를 정의합니다.
gcloud container clusters create CLUSTER_NAME \ --enable-autoprovisioning \ [--min-cpu MINIMUM_CPU ] \ --max-cpu MAXIMUM_CPU \ [--min-memory MINIMUM_MEMORY ] \ --max-memory MAXIMUM_MEMORY \ [--min-accelerator=type=TPU_TYPE,count= MINIMUM_ACCELERATOR ] \ --max-accelerator=type=TPU_TYPE,count= MAXIMUM_ACCELERATOR
다음을 바꿉니다.
CLUSTER_NAME
: 클러스터의 이름입니다.MINIMUM_CPU
: 클러스터의 최소 vCPU 수입니다.MAXIMUM_CPU
: 클러스터의 최대 vCPU 수입니다.MINIMUM_MEMORY
: 클러스터의 최소 메모리 용량(GB)입니다.MAXIMUM_MEMORY
: 클러스터의 최대 메모리 용량(GB)입니다.TPU_TYPE
: 선택한 TPU 유형입니다.tpu-v4-podslice
를 사용하여 TPU v4를 선택합니다.ct5lp-
로 시작하는 머신 유형에서 TPU v5e를 선택하려면tpu-v5-lite-podslice
를 사용합니다.ct5l-
로 시작하는 머신 유형에서 TPU v5e를 선택하려면tpu-v5-lite-device
를 사용합니다.MINIMUM_ACCELERATOR
: 클러스터의 최소 TPU 칩 수입니다.count
가 슬라이스의 TPU 칩 수보다 작더라도MINIMUM_ACCELERATOR
를 사용하면 멀티 호스트 TPU 슬라이스 축소를 차단할 수 있습니다.
MAXIMUM_ACCELERATOR
: 클러스터의 최대 TPU 칩 수입니다.- 포드 구성에서 멀티 호스트 TPU 슬라이스를 요청하면 GKE는 이러한 슬라이스를 원자적으로 만듭니다. 지정된 토폴로지의 모든 TPU 칩을 프로비저닝할 수 있도록 개수 값을 충분히 높게 설정합니다. 각 TPU 슬라이스의 칩 수는 토폴로지의 곱과 같습니다. 예를 들어 멀티 호스트 TPU 슬라이스의 토폴로지가
2x2x2
이면 TPU 칩 수가8
와 같으므로MAXIMUM_ACCELERATOR
는 8보다 커야 합니다.
- 포드 구성에서 멀티 호스트 TPU 슬라이스를 요청하면 GKE는 이러한 슬라이스를 원자적으로 만듭니다. 지정된 토폴로지의 모든 TPU 칩을 프로비저닝할 수 있도록 개수 값을 충분히 높게 설정합니다. 각 TPU 슬라이스의 칩 수는 토폴로지의 곱과 같습니다. 예를 들어 멀티 호스트 TPU 슬라이스의 토폴로지가
다음 예시에서는
dev-cluster
클러스터의ct5lp-hightpu-1t
,ct5lp-hightpu-4t
,ct5lp-hightpu-8t
머신 유형에 TPU 한도를 설정합니다. 예를 들어 각각 TPU 칩 4개, vCPU 112개, 메모리 192GiB가 있는ct5lp-hightpu-4t
머신을 최대 10개까지 프로비저닝할 수 있습니다.gcloud container clusters create dev-cluster-inference \ --enable-autoprovisioning \ --min-cpu 0 \ --max-cpu 1120 \ --min-memory 0 \ --max-memory 1920 \ --min-accelerator=type=tpu-v5-lite-podslice,count=0 \ --max-accelerator=type=tpu-v5-lite-podslice,count=40
포드가 TPU 리소스를 요청하는 배포 사양을 만듭니다. 예를 들어 다음 매니페스트로 인해 GKE에서
ct5lp-hightpu-4t
노드 4개를 프로비저닝합니다.apiVersion: apps/v1 kind: Deployment metadata: name: tpu-workload labels: app: tpu-workload spec: replicas: 4 selector: matchLabels: app: nginx-tpu template: metadata: labels: app: nginx-tpu spec: nodeSelector: cloud.google.com/gke-tpu-accelerator: tpu-v5-lite-podslice cloud.google.com/gke-tpu-topology: 2x2 cloud.google.com/reservation-name: my-reservation containers: - name: nginx image: nginx:1.14.2 resources: requests: google.com/tpu: 4 limits: google.com/tpu: 4 ports: - containerPort: 80
nodeSelector
필드에서 TPU 유형, TPU 토폴로지, 가속기 수를 정의합니다. 각 항목의 의미는 다음과 같습니다.cloud.google.com/gke-tpu-accelerator
: TPU 유형 정의. 예를 들면tpu-v4-podslice
입니다.cloud.google.com/gke-tpu-topology
: TPU 토폴로지 정의(예:2x2x1
또는4x4x8
)
워크로드에 기존 예약을 사용하려면
nodeSelector
필드에 추가 라벨을 지정합니다. *cloud.google.com/reservation-name
: GKE가 노드를 자동 프로비저닝하는 데 사용하는 예약의 이름을 정의합니다.limits: google.com/tpu
에서 노드당 칩 수를 정의합니다.
파일
구성 파일을 사용하여 여러 유형의 TPU에 한도를 할당할 수 있습니다 다음 YAML 구성은 두 가지 TPU 유형을 구성합니다.
resourceLimits: - resourceType: 'cpu' maximum: 10000 - resourceType: 'memory' maximum: 10000 - resourceType: 'tpu-v4-podslice' maximum: 32 - resourceType: 'tpu-v5-lite' maximum: 64
자동 프로비저닝 구성 파일을 사용하려면 다음 안내를 따르세요.
위 구성을 gcloud CLI에서 액세스할 수 있는 위치에 있는 파일에 복사합니다.
resourceType
및maximum
의 값을 수정합니다.resourceType
에 필요한 만큼 값을 추가합니다. 파일을 저장합니다.다음 명령어를 실행하여 클러스터에 구성을 적용합니다.
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
다음을 바꿉니다.
CLUSTER_NAME
: 클러스터의 이름입니다.FILE_NAME
: 구성 파일의 이름입니다.
자세한 내용은 gcloud container clusters update
문서를 참조하세요.
노드 자동 프로비저닝 위치
노드 자동 프로비저닝이 새 노드 풀을 만들 수 있는 영역을 설정합니다. 리전 위치는 지원되지 않습니다. 영역은 클러스터와 동일한 리전에 속해야 하지만 클러스터 수준에서 정의된 노드 위치로 제한되지 않습니다. 노드 자동 프로비저닝 위치를 변경해도 기존 노드 풀에는 영향을 주지 않습니다.
노드 자동 프로비저닝이 새 노드 풀을 만들 수 있는 위치를 설정하려면 gcloud CLI 또는 구성 파일을 사용합니다.
gcloud
다음 명령어를 실행합니다.
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --autoprovisioning-locations=ZONE
다음을 바꿉니다.
CLUSTER_NAME
: 클러스터의 이름입니다.ZONE
: 노드 자동 프로비저닝이 새 노드 풀을 만들 수 있는 영역입니다. 여러 영역을 지정하려면 영역을 쉼표로 구분합니다(예:ZONE1, ZONE2,...
).
파일
노드 자동 프로비저닝이 새 노드 풀을 만들 수 있는 위치를 설정하려면 구성 파일을 사용하면 됩니다.
새 노드 풀 위치를 설정하는 다음 YAML 구성을 추가합니다.
autoprovisioningLocations:
- ZONE
ZONE
을 노드 자동 프로비저닝이 새 노드 풀을 만들 수 있는 영역으로 바꿉니다. 여러 영역을 지정하려면 목록에 영역을 더 추가합니다. 파일을 저장합니다.
자동 프로비저닝 구성 파일을 사용하려면 다음 안내를 따르세요.
gcloud CLI
가 액세스할 수 있는 위치에 구성 파일을 만듭니다.클러스터에 구성을 적용합니다.
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
다음을 바꿉니다.
CLUSTER_NAME
: 클러스터의 이름입니다.FILE_NAME
: 구성 파일의 경로입니다.
압축 배치로 물리적으로 더 가까운 노드
GKE 버전 1.25부터 노드 자동 프로비저닝에서 압축 배치 정책을 지원합니다. 압축 배치 정책을 사용하면 GKE에게 영역 내에서 서로 가까운 곳에 노드 풀을 만들라고 지시할 수 있습니다.
압축 배치 정책을 정의하려면 다음 키를 사용하여 포드 사양에 nodeSelector
를 추가합니다.
cloud.google.com/gke-placement-group
는 동일한 압축 배치 그룹에서 함께 실행해야 하는 포드 그룹에 할당하는 식별자입니다.cloud.google.com/machine-family
는 머신 계열 이름입니다. 자세한 내용은 압축 배치를 지원하는 머신 계열을 참조하세요.
다음 예시에서는 배치 그룹 식별자가 placement-group-1
이고 머신 계열이 c2
인 압축 배치 정책을 설정합니다.
apiVersion: v1
kind: Pod
metadata:
...
spec:
...
nodeSelector:
cloud.google.com/gke-placement-group: placement-group-1
cloud.google.com/machine-family: c2
자세한 내용은 GKE 노드를 위한 압축 배치 정의 방법을 참조하세요.
노드 자동 프로비저닝 사용 중지
클러스터의 노드 자동 프로비저닝을 사용 중지하면 노드 풀이 더 이상 자동으로 프로비저닝되지 않습니다.
gcloud
클러스터의 노드 자동 프로비저닝을 사용 중지하려면 다음 명령어를 실행합니다.
gcloud container clusters update CLUSTER_NAME \ --no-enable-autoprovisioning
CLUSTER_NAME
을 클러스터 이름으로 바꿉니다.
파일
Google Cloud 콘솔을 사용하여 노드 자동 프로비저닝을 사용 중지하려면 다음 단계를 따르세요.
Google Cloud Console에서 Google Kubernetes Engine 페이지로 이동합니다.
클러스터 이름을 클릭합니다.
노드 자동 프로비저닝의 자동화 섹션에서
수정을 클릭합니다.노드 자동 프로비저닝 사용 설정 체크박스를 선택 취소합니다.
변경사항 저장을 클릭합니다.
노드 풀을 자동 프로비저닝으로 표시
클러스터의 노드 자동 프로비저닝을 사용 설정한 후 어느 노드 풀을 자동 프로비저닝할지 지정할 수 있습니다. 자동 프로비저닝된 노드 풀은 워크로드에서 사용되지 않는 경우 자동으로 삭제됩니다.
노드 풀을 자동 프로비저닝으로 표시하려면 다음 명령어를 실행합니다.
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
을 노드 풀의 이름으로 바꿉니다.
커스텀 머신 계열 사용
매니페스트에서 다음 필드 중 하나를 설정하여 워크로드에 특정 Compute Engine 머신 시리즈(예: n2
또는 t2d
)를 선택할 수 있습니다.
cloud.google.com/machine-family
키,In
연산자, 원하는 머신 계열(예:n2
)에 해당하는 값으로 노드 어피니티를 설정합니다.cloud.google.com/machine-family
키와 원하는 머신 계열에 해당하는 값으로nodeSelector
를 추가합니다.
다음은 nodeAffinity
를 n2
의 머신 계열로 설정하는 예시입니다.
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: cloud.google.com/machine-family
operator: In
values:
- n2
변경사항을 적용한 후 노드 자동 프로비저닝은 지정된 머신 계열 내에서 머신 유형으로 최적의 노드 풀을 선택합니다. matchExpressions
에 대해 여러 항목을 지정하면 GKE는 지정된 항목에서 임의로 머신 시리즈를 선택합니다.
커스텀 컴퓨팅 클래스를 사용하여 노드 속성 제어
자동 프로비저닝된 노드 풀의 속성을 더 세부적으로 제어하려면 커스텀 컴퓨팅 클래스를 만들고 사용하세요. 커스텀 컴퓨팅 클래스를 사용하면 노드의 머신 유형이나 노드에서 워크로드를 통합하여 사용하지 않는 리소스를 확보하도록 트리거하는 특정 리소스 활용 임계값을 선택할 때 대체 우선순위와 같은 확장 동작을 구성할 수 있습니다. 커스텀 컴퓨팅 클래스는 GKE 버전 1.30.3-gke.1451000 이상에서 사용할 수 있습니다.
커스텀 컴퓨팅 클래스의 기능과 노드 자동 프로비저닝과 함께 커스텀 컴퓨팅 클래스를 사용하는 방법에 관한 자세한 내용은 커스텀 컴퓨팅 클래스 정보를 참조하세요.
최소 CPU 플랫폼
노드 자동 프로비저닝은 지정된 최소 CPU 플랫폼으로 노드 풀을 만들 수 있습니다. 워크로드 수준(권장)이나 클러스터 수준에서 최소 CPU 플랫폼을 지정할 수 있습니다.