이 페이지에서는 특정 하드웨어 요구사항이 있는 Google Kubernetes Engine(GKE) Autopilot 워크로드를 실행하는 데 사용할 수 있는 컴퓨팅 클래스를 설명합니다. 자세한 내용은 특정 컴퓨팅 클래스에서 Autopilot 포드 실행을 참조하세요.
Autopilot 컴퓨팅 클래스 개요
기본적으로 GKE Autopilot 포드는 웹 제공 및 중간 강도 일괄 작업과 같은 범용 워크로드에 최적화된 컴퓨팅 플랫폼에서 실행됩니다. 이 범용 플랫폼은 대부분의 워크로드 요구사항을 처리할 수 있는 안정적이고 비용 최적화된 하드웨어 구성을 제공합니다.
머신러닝 또는 AI 태스크 수행, 실시간 높은 트래픽 데이터베이스 실행, 특정 CPU 플랫폼 및 아키텍처 요구와 같은 고유한 하드웨어 요구사항이 있는 워크로드가 있으면 Autopilot이 컴퓨팅 클래스를 제공합니다. 이러한 컴퓨팅 클래스는 Compute Engine 머신 시리즈의 하위 집합이며 기본 Autopilot 컴퓨팅 클래스 이상의 유연성을 제공합니다. 예를 들어 Scale-Out
컴퓨팅 클래스는 동시 다중 스레딩을 해제하고 수평 확장에 최적화된 VM을 사용합니다.
각 워크로드의 요구사항에 따라 특정 컴퓨팅 클래스가 지원되는 노드를 요청할 수 있습니다. 기본 범용 컴퓨팅 클래스와 마찬가지로 Autopilot은 실행 중인 포드를 기준으로 요청된 컴퓨팅 클래스의 크기 및 리소스 할당을 관리합니다. 각 포드의 요구사항에 가장 적합한 옵션을 선택하여 포드 수준에서 컴퓨팅 클래스를 요청하여 비용 효율성을 최적화할 수 있습니다.
특정 CPU 아키텍처 선택
특정 CPU 플랫폼 또는 아키텍처를 위해 설계된 워크로드의 원한다면 포드 사양에서 이러한 플랫폼 또는 아키텍처를 선택할 수 있습니다. 예를 들어 ARM 아키텍처를 사용하는 노드에서 포드를 실행하려면 Scale-Out
컴퓨팅 클래스에서 arm64
를 선택하면 됩니다.
가격 책정
GKE Autopilot 포드는 포드가 예약된 노드를 기준으로 가격이 책정됩니다. 특정 컴퓨팅 클래스의 범용 워크로드 및 Spot 포드의 가격 책정 정보와 약정 사용 할인에 대한 자세한 내용은 Autopilot 모드 가격 책정을 참조하세요.
범용 또는 특수 컴퓨팅 클래스의 Spot 포드는 약정 사용 할인 대상이 아닙니다.
특정 컴퓨팅 클래스를 사용해야 하는 경우
다음 표에서는 Autopilot에서 지원하는 컴퓨팅 클래스에 대한 기술 개요와 각 플랫폼에서 실행되는 포드 사용 사례를 보여줍니다. 컴퓨팅 클래스를 요청하지 않으면 Autopilot에서 대부분의 워크로드를 최적으로 실행하도록 설계된 범용 컴퓨팅 플랫폼에 포드를 배치합니다.
워크로드 요구사항 | 컴퓨팅 클래스 | 설명 | 사용 사례 예시 |
---|---|---|---|
특정 하드웨어가 필요하지 않은 워크로드 | 범용 |
포드 사양에서 컴퓨팅 클래스를 명시적으로 요청하지 않으면 Autopilot에서 범용 컴퓨팅 플랫폼을 사용합니다. 사양에서 범용 플랫폼을 명시적으로 선택할 수 없습니다. E2 머신 시리즈에서 지원됩니다. |
|
GPU가 필요한 워크로드 | Accelerator |
호환되는 GPU 유형은 다음과 같습니다.
|
|
범용 컴퓨팅 클래스 최댓값 또는 특정 CPU 플랫폼보다 큰 CPU 또는 메모리 요청 | Balanced |
N2 머신 시리즈(Intel) 또는 N2D 머신 시리즈(AMD)가 지원됩니다. |
|
AI/ML 학습 또는 고성능 컴퓨팅(HPC)과 같은 CPU를 많이 사용하는 워크로드 | Performance |
성능 컴퓨팅 클래스와 함께 사용할 수 있는 Compute Engine 머신 시리즈 목록은 지원되는 머신 시리즈를 참조하세요. |
|
단일 코어당 스레드 컴퓨팅 및 수평 확장 | Scale-Out |
Tau T2A 머신 시리즈(Arm) 또는 Tau T2D 머신 시리즈(x86)가 지원됩니다. |
|
Autopilot에서 컴퓨팅 클래스를 선택하는 방법
자세한 안내는 Autopilot 포드의 컴퓨팅 클래스 선택을 참조하세요.
특정 컴퓨팅 클래스에 포드를 배치하도록 Autopilot에 지시하려면 다음 예시와 같이 nodeSelector 또는 노드 어피니티 규칙에서cloud.google.com/compute-class
라벨을 지정합니다.
nodeSelector
apiVersion: apps/v1 kind: Deployment metadata: name: hello-app spec: replicas: 3 selector: matchLabels: app: hello-app template: metadata: labels: app: hello-app spec: nodeSelector: cloud.google.com/compute-class: "COMPUTE_CLASS" containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 resources: requests: cpu: "2000m" memory: "2Gi"
Scale-Out
과 같이 사용 사례에 따라 COMPUTE_CLASS
를 컴퓨팅 클래스 이름으로 바꿉니다.
Accelerator
을 선택하는 경우 호환되는 GPU도 지정해야 합니다. 자세한 내용은 Autopilot에서 GPU 워크로드 배포를 참조하세요. Performance
을(를) 선택하는 경우 노드 선택기에서 Compute Engine 머신 시리즈도 선택해야 합니다. 자세한 내용은 최적의 성능으로 CPU 집약적인 워크로드 실행을 참조하세요.
nodeAffinity
apiVersion: apps/v1 kind: Deployment metadata: name: hello-app spec: replicas: 3 selector: matchLabels: app: hello-app template: metadata: labels: app: hello-app spec: terminationGracePeriodSeconds: 25 containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 resources: requests: cpu: "2000m" memory: "2Gi" ephemeral-storage: "1Gi" affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: cloud.google.com/compute-class operator: In values: - "COMPUTE_CLASS"
Scale-Out
과 같이 사용 사례에 따라 COMPUTE_CLASS
를 컴퓨팅 클래스 이름으로 바꿉니다. Accelerator
을 선택하는 경우 호환되는 GPU도 지정해야 합니다. 자세한 내용은 Autopilot에서 GPU 워크로드 배포를 참조하세요. Performance
을(를) 선택하는 경우 노드 선택기에서 Compute Engine 머신 시리즈도 선택해야 합니다. 자세한 내용은 최적의 성능으로 CPU 집약적인 워크로드 실행을 참조하세요.
워크로드를 배포하면 Autopilot이 다음을 수행합니다.
- 지정된 구성으로 지원되는 노드를 자동으로 프로비저닝하여 포드를 실행합니다.
- 다른 포드가 이 노드에 예약되지 않도록 taint를 새 노드에 자동으로 추가합니다. taint는 컴퓨팅 클래스마다 고유합니다. CPU 아키텍처도 선택하는 경우 GKE에서 해당 아키텍처에 고유한 별도의 taint를 추가합니다.
- 적용된 taint에 해당하는 톨러레이션(toleration)을 배포된 포드에 자동으로 추가합니다. 그러면 GKE가 해당 포드를 새 노드에 배치할 수 있습니다.
예를 들어 포드에 대한 Scale-Out
컴퓨팅 클래스를 요청하는 경우 다음과 같이 처리됩니다.
- Autopilot에서 이 노드에서
Scale-Out
에 해당하는 taint를 추가합니다. - Autopilot이 해당 taint에 대한 톨러레이션(toleration)을
Scale-Out
포드에 추가합니다.
Scale-Out
을 요청하지 않는 포드에는 톨러레이션(toleration)이 추가되지 않습니다. 그 결과, GKE가 Scale-Out
노드에서 이러한 포드를 예약하지 않습니다.
워크로드 사양에서 컴퓨팅 클래스를 명시적으로 요청하지 않으면 Autopilot이 기본 범용 컴퓨팅 클래스를 사용하는 노드에 포드를 예약합니다. 대부분의 워크로드는 범용 컴퓨팅 클래스에서 노드 없이 실행될 수 있습니다.
CPU 아키텍처 요청 방법
일부 경우에는 Arm과 같은 특정 아키텍처에 따라 워크로드를 빌드할 수 있습니다. 균형 또는 수평 확장과 같은 일부 컴퓨팅 클래스는 여러 CPU 아키텍처를 지원합니다. 다음 예시에서와 같이 노드 선택기 또는 노드 어피니티 규칙에 라벨을 지정하여 컴퓨팅 클래스 요청과 함께 특정 아키텍처를 요청할 수 있습니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-arm
spec:
replicas: 3
selector:
matchLabels:
app: nginx-arm
template:
metadata:
labels:
app: nginx-arm
spec:
nodeSelector:
cloud.google.com/compute-class: COMPUTE_CLASS
kubernetes.io/arch: ARCHITECTURE
containers:
- name: nginx-arm
image: nginx
resources:
requests:
cpu: 2000m
memory: 2Gi
ARCHITECTURE
를 원하는 CPU 아키텍처(예: arm64
또는 amd64
)로 바꿉니다.
아키텍처를 명시적으로 요청하지 않으면 Autopilot이 지정된 컴퓨팅 클래스의 기본 아키텍처를 사용합니다.
Autopilot의 ARM 아키텍처
Autopilot은 ARM CPU 아키텍처를 사용하는 노드에 대한 요청을 지원합니다. ARM 노드는 유사한 x86 노드보다 비용 효율적이며 성능 개선도 제공합니다. ARM 노드를 요청하는 방법은 ARM 아키텍처에 Autopilot 워크로드 배포를 참조하세요.
배포에서 올바른 이미지를 사용 중인지 확인합니다. 포드에서 Arm 이미지를 사용하고 Arm 노드를 요청하지 않으면 Autopilot이 x86 노드에 포드를 예약하고 포드가 충돌합니다. 마찬가지로 실수로 x86 이미지를 사용하지만 포드에 Arm 노드를 요청하면 포드가 충돌합니다.
Autopilot의 컴퓨팅 클래스 워크로드 검증
Autopilot은 워크로드 매니페스트를 검증하여 노드 선택기 또는 노드 어피니티 규칙의 컴퓨팅 클래스와 아키텍처 요청이 올바른 형식인지 확인합니다. 다음 규칙이 적용됩니다.
- 컴퓨팅 클래스가 1개 이하여야 합니다.
- 지원되지 않는 컴퓨팅 클래스가 없어야 합니다.
- GKE 버전이 컴퓨팅 클래스를 지원해야 합니다.
- 선택한 아키텍처가 1개 이하여야 합니다.
- 컴퓨팅 클래스가 선택한 아키텍처를 지원해야 합니다.
워크로드 매니페스트가 검증을 통과하지 못하면 Autopilot이 워크로드를 거부합니다.
컴퓨팅 클래스 리전 가용성
다음 표에서는 특정 컴퓨팅 클래스 및 CPU 아키텍처를 사용할 수 있는 리전에 대해 설명합니다.
컴퓨팅 클래스 가용성 | |
---|---|
범용 | 모든 리전 |
Balanced |
모든 리전 |
Performance |
지원되는 머신 시리즈가 포함된 모든 리전 |
Scale-Out |
해당 Compute Engine 머신 시리즈가 포함된 모든 리전입니다. 특정 머신 시리즈 가용성을 보려면 사용 가능한 리전 및 영역의 필터를 사용합니다. |
컴퓨팅 클래스를 특정 리전에서 사용할 수 있는 경우 하드웨어를 해당 리전의 2개 이상 영역에서 사용할 수 있습니다.
기본, 최소, 최대 리소스 요청
Autopilot 워크로드의 컴퓨팅 클래스를 선택할 때 해당 컴퓨팅 클래스의 최소 및 최대 요청을 충족하는 리소스 요청을 지정해야 합니다. 각 컴퓨팅 클래스의 최소 및 최대 요청과 함께 기본 요청에 대한 자세한 내용은 GKE Autopilot의 리소스 요청 및 한도를 참조하세요.