이 페이지에서는 Google Kubernetes Engine(GKE) 클러스터에 있는 노드의 최소 CPU 플랫폼을 지정하는 방법을 보여줍니다.
최소 CPU 플랫폼을 선택해야 하는 이유
최소 CPU 플랫폼을 지정하면 높은 기본 주파수나 최적화된 전원 관리 기능과 같은 특정 CPU 기능 및 사양이 필요한 경우에 유용합니다.
그래픽, 게임, 애널리틱스 산업 부문의 일부 고급 컴퓨팅 집약적 워크로드는 AVX-2 및 AVX-512와 같은 여러 CPU 플랫폼 기능 집합을 통해 제공되는 특정 기능을 활용할 수 있습니다. 특정 CPU 플랫폼을 선택하면 실행 시간 및 성능에 있어서 상당한 이점을 얻을 수 있습니다. 최소 CPU 플랫폼을 지정함으로써 워크로드가 보다 예측 가능한 방식으로 이러한 이점을 실현하고, 노드에 해당 워크로드에 적합하지 않은 CPU 플랫폼이 사용되지 않도록 보장할 수 있습니다.
플랫폼을 선택하는 방법
다음 표에서는 GKE 사용 방식에 따라 최소 CPU 플랫폼을 선택하는 방법을 보여줍니다.
범위 | 설명 | 지원되는 클러스터 구성 |
---|---|---|
워크로드 수준(권장) | 포드 사양에서 최소 플랫폼을 선택합니다. GKE는 다음과 같이 이러한 포드를 예약합니다.
|
|
노드 및 클러스터 수준 | 새 Standard 모드 클러스터 또는 노드 풀을 만들 때 최소 CPU 플랫폼을 선택합니다. 이 설정은 노드 자동 프로비저닝을 지원하지 않습니다. 안내를 보려면 노드 풀 수준에서 최소 CPU 플랫폼 선택으로 건너뛰세요. | 새 Standard 클러스터 또는 노드 풀 |
가격 책정
추가 비용 없이 최소 CPU 플랫폼을 선택할 수 있습니다.
시작하기 전에
시작하기 전에 다음 태스크를 수행했는지 확인합니다.
- Google Kubernetes Engine API를 사용 설정합니다. Google Kubernetes Engine API 사용 설정
- 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우
gcloud components update
를 실행하여 최신 버전을 가져옵니다.
CPU 플랫폼 가용성 확인
사용 가능한 CPU 플랫폼은 노드가 실행되는 컴퓨팅 영역에 따라 다릅니다. Autopilot 클러스터 또는 리전 Standard 클러스터를 사용하더라도 영역에서 사용할 수 있는 CPU 플랫폼을 확인해야 합니다.
특정 영역에서 사용 가능한 플랫폼을 확인하려면 다음 명령어를 실행합니다.
gcloud compute zones describe COMPUTE_ZONE
COMPUTE_ZONE
을 영역 이름(예: us-central1-a
)으로 바꿉니다. 리전 클러스터 유형을 사용하는 경우 해당 리전의 영역 이름을 지정합니다.
출력은 다음과 비슷합니다.
availableCpuPlatforms:
- Intel Ice Lake
- Intel Cascade Lake
- Intel Skylake
- Intel Broadwell
- Intel Haswell
- Intel Ivy Bridge
- Intel Sandy Bridge
- AMD Milan
- AMD Rome
- Ampere Altra
- Intel Sapphire Rapids
이러한 값을 사용하여 최소 CPU 플랫폼을 요청할 때는 플랫폼 이름에서 공백을 밑줄로 바꿉니다. 예를 들면 AMD_Milan
입니다.
워크로드 수준에서 최소 CPU 플랫폼 선택
노드 자동 프로비저닝이 적용된 GKE Autopilot 클러스터 또는 GKE Standard 클러스터를 사용하는 경우 포드 사양에서 최소 CPU 플랫폼을 선택할 수 있습니다. 워크로드를 배포하면 GKE가 지정된 플랫폼 이상을 사용하는 노드에서만 이러한 포드를 예약합니다. 이 방법을 권장합니다.
Autopilot
Autopilot에서 최소 CPU 플랫폼 및 컴퓨팅 클래스를 요청합니다. 컴퓨팅 클래스가 CPU 플랫폼을 지원해야 합니다. Autopilot은 Balanced
컴퓨팅 클래스의 최소 CPU 플랫폼 선택을 지원합니다. 각 컴퓨팅 클래스에서 사용 가능한 CPU 플랫폼 목록은 특정 컴퓨팅 클래스를 사용해야 하는 경우를 참조하세요.
다음 매니페스트를 min-cpu.yaml
로 저장합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: min-cpu-platform
labels:
app: min-cpu
spec:
replicas: 3
selector:
matchLabels:
app: min-cpu
template:
metadata:
labels:
app: min-cpu
spec:
nodeSelector:
cloud.google.com/compute-class: "COMPUTE_CLASS"
supported-cpu-platform.cloud.google.com/PLATFORM: "true"
containers:
- name: hello-app
image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
ports:
- containerPort: 8080
resources:
requests:
cpu: 250m
다음을 바꿉니다.
PLATFORM
: CPU 플랫폼의 이름(예:AMD_Milan
)입니다. 플랫폼 이름은 대소문자를 구분하며 밑줄로 구분해야 합니다.COMPUTE_CLASS
: 컴퓨팅 클래스의 이름이며,Balanced
여야 합니다.
표준
노드 자동 프로비저닝이 사용 설정된 Standard 클러스터에서 Compute Engine 머신 계열과 함께 CPU 플랫폼을 요청합니다. 머신 계열이 CPU 플랫폼을 지원해야 합니다. 각 머신 계열에서 지원되는 플랫폼 목록은 Compute Engine CPU 플랫폼을 참조하세요.
다음 매니페스트를 min-cpu.yaml
로 저장합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: min-cpu-platform
labels:
app: min-cpu
spec:
replicas: 3
selector:
matchLabels:
app: min-cpu
template:
metadata:
labels:
app: min-cpu
spec:
nodeSelector:
cloud.google.com/machine-family: MACHINE_FAMILY
cloud.google.com/requested-min-cpu-platform: PLATFORM
containers:
- name: hello-app
image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
ports:
- containerPort: 8080
resources:
requests:
cpu: 250m
다음을 바꿉니다.
PLATFORM
: CPU 플랫폼의 이름(예:AMD_Milan
)입니다. 플랫폼 이름은 대소문자를 구분하며 밑줄로 구분해야 합니다.MACHINE_FAMILY
: 머신 계열의 이름(예:n2d
)입니다.
워크로드를 배포합니다.
kubectl apply -f min-cpu.yaml
지정된 CPU 플랫폼이 폐기되어 노드가 새 플랫폼에서 실행되지 않는 한 노드의 수명 주기 동안 동일 플랫폼이 유지됩니다.
노드 풀 수준에서 최소 CPU 플랫폼 선택
노드 자동 프로비저닝을 사용하지 않는 GKE Standard 클러스터의 경우 새 클러스터 또는 노드 풀을 만들 때 최소 CPU 플랫폼을 지정할 수 있습니다. 워크로드 수준 설정을 사용할 수 없는 경우에만 이 방법을 사용해야 합니다. 이 설정은 노드 자동 프로비저닝에는 영향을 미치지 않습니다.
gcloud
gcloud CLI를 사용하여 최소 CPU 플랫폼으로 새 노드 풀을 만들려면 --min-cpu-platform
플래그를 설정하고 CPU 플랫폼 이름을 지정합니다.
gcloud container node-pools create POOL_NAME \
--cluster CLUSTER_NAME \
--region COMPUTE_REGION \
--min-cpu-platform PLATFORM
다음을 바꿉니다.
POOL_NAME
: 새 노드 풀의 이름입니다.CLUSTER_NAME
: 클러스터 이름입니다.COMPUTE_REGION
: 클러스터의 리전입니다.PLATFORM
: 노드 풀에서 실행할 CPU 플랫폼(예:"Intel Broadwell"
)입니다.
콘솔
Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.
클러스터 목록에서 수정하려는 클러스터 이름을 클릭합니다.
add_box 노드 풀 추가를 클릭합니다.
노드 풀을 원하는 대로 구성합니다.
탐색창에서 노드를 클릭합니다.
머신 구성의
계열 드롭다운 목록에서 머신 유형을 선택합니다.
머신 유형 드롭다운 목록에서 커스텀을 선택합니다.
원하는 경우 코어와 메모리를 선택합니다.
expand_more CPU 플랫폼 및 GPU를 클릭합니다.
CPU 플랫폼 드롭다운 목록에서 원하는 플랫폼을 선택합니다.
만들기를 클릭합니다.
API
요청 본문에서 nodeConfig
필드의 일부로 minCpuPlatform
속성을 포함합니다. minCpuPlatform
값은 플랫폼 이름(예: Intel Haswell
, Intel Broadwell
, Intel Sandy Bridge
)이어야 합니다.
예를 들어 다음 요청은 Intel Broadwell 플랫폼을 실행하는 새 노드 풀을 만듭니다.
POST https://container.googleapis.com/v1/projects/PROJECT_ID/regions/COMPUTE_REGION/clusters/CLUSTER_NAME/nodePools
{
'nodePool': {
'name': 'POOL_NAME',
'nodeConfig': {
'minCpuPlatform': 'Intel Broadwell'
...
}
...
}
}
다음을 바꿉니다.
PROJECT_ID
: 프로젝트 ID입니다.COMPUTE_REGION
: 클러스터의 리전입니다.CLUSTER_NAME
: 클러스터 이름입니다.POOL_NAME
: 새 노드 풀의 이름입니다.
클러스터를 만들 때 플랫폼을 지정하면 최소 CPU 플랫폼 설정이 새 클러스터의 기본 노드 풀에 적용됩니다.
대안
GKE에서 다음 방법을 사용하여 최소 CPU 플랫폼을 선택할 수도 있습니다.
대안 | |
---|---|
클러스터 수준 플래그
|
제한사항
최소 CPU 플랫폼을 선택하는 모든 방법에 다음 제한사항이 적용됩니다.
- Compute Engine 최소 CPU 플랫폼의 모든 제한사항이 적용됩니다.
- 특정 CPU 플랫폼의 가용성은 영역마다 다릅니다.
- E2 머신 유형은 최소 CPU 플랫폼을 지원하지 않습니다. 다른 머신 유형을 선택해야 합니다.
- Autopilot 클러스터는 기본 또는
Scale-Out
컴퓨팅 클래스가 아닌Balanced
컴퓨팅 클래스에 대한 플랫폼 선택만 지원합니다. - Autopilot 워크로드가 80개를 초과하는 vCPU를 요청하는 경우 최소 CPU 플랫폼이 Intel Ice Lake 이상이어야 합니다. 상위 플랫폼을 지정하지 않으면 포드가
Pending
상태로 무기한 유지될 수 있습니다.
클러스터 또는 노드 풀 최소 CPU 플랫폼 설정에는 다음과 같은 제한사항이 적용됩니다.
영역의 기본 CPU 플랫폼보다 낮은 최소 CPU 플랫폼을 선택하거나 선택한 플랫폼을 더 이상 사용할 수 없는 경우 GKE가 동일 비용의 최신 플랫폼이 있는지 확인합니다. 동일 비용의 새 플랫폼이 존재하는 경우 GKE는 최신 플랫폼을 사용하여 노드를 만듭니다. 동일 비용의 최신 플랫폼이 없는 경우에는 클러스터 또는 노드 풀 만들기가 실패합니다.