Google Kubernetes Engine(GKE) Autopilot 클러스터에서는 Balanced 및 Scale-Out ComputeClasses를 사용하여 추가 컴퓨팅 용량이나 특수 CPU 구성이 필요한 워크로드를 실행할 수 있습니다. 이 페이지는 기본 Autopilot 클러스터 구성보다 더 유연한 컴퓨팅 옵션이 필요한 클러스터 관리자들을 위한 안내입니다.
Balanced 및 Scale-Out ComputeClass 개요
기본적으로 GKE Autopilot 클러스터의 포드는 컨테이너 최적화 컴퓨팅 플랫폼에서 실행됩니다. 이 플랫폼은 웹 서버나 중간 강도의 배치 작업과 같은 범용 워크로드에 적합합니다. 컨테이너 최적화 컴퓨팅 플랫폼은 대부분의 워크로드 요구사항을 충족할 수 있는 신뢰성 있고 확장 가능하며 비용이 최적화된 하드웨어 구성을 제공합니다.
워크로드에 머신러닝 또는 AI 태스크 수행, 실시간 높은 트래픽 데이터베이스 실행, 특정 CPU 플랫폼 및 아키텍처 요구와 같은 특수한 하드웨어 요구사항이 있는 경우, ComputeClasses를 사용하여 해당 하드웨어를 프로비저닝할 수 있습니다.
Autopilot 클러스터에서만 GKE는 기본 컨테이너 최적화 컴퓨팅 플랫폼보다 더 높은 유연성이 필요한 포드를 실행할 수 있도록 다음과 같은 선정된 ComputeClass를 제공합니다.
Balanced: 컨테이너 최적화 컴퓨팅 플랫폼보다 더 높은 최대 CPU 및 메모리 용량을 제공합니다.Scale-Out: 동시 멀티스레딩(SMT)을 사용 중지하며, 수평 확장에 최적화되어 있습니다.
이러한 ComputeClass는 Autopilot 클러스터에서만 사용할 수 있습니다. 기본 컨테이너 최적화 컴퓨팅 플랫폼과 마찬가지로 Autopilot은 실행 중인 포드를 기반으로 노드 크기 조정과 리소스 할당을 관리합니다.
추가 유연성을 위한 커스텀 ComputeClass
Autopilot 클러스터의 Balanced 또는 Scale-Out ComputeClass가 워크로드 요구사항을 충족하지 못하는 경우 사용자 정의 ComputeClass를 구성할 수 있습니다.
클러스터에 ComputeClass Kubernetes 커스텀 리소스를 배포하면, GKE는 해당 리소스에 정의된 노드 속성을 사용해 클러스터 내 새 노드를 구성합니다. 예를 들어 이러한 커스텀 ComputeClass를 사용하면 GKE Autopilot 또는 Standard 클러스터 어디에서든 Balanced 또는 Scale-Out ComputeClass와 동일한 하드웨어에서 워크로드를 배포할 수 있습니다. 자세한 내용은 GKE Standard의 Autopilot 모드 워크로드 정보를 참조하세요.
가격 책정
Balanced 또는 Scale-Out ComputeClass를 사용하는 포드는 다음 SKU에 따라 요금이 청구됩니다.
자세한 내용은 GKE 가격 책정을 참조하세요.
Balanced 및 Scale-Out 기술 세부정보
이 섹션에서는 Balanced 및 Scale-Out ComputeClass의 머신 유형과 사용 사례를 설명합니다. 포드에서 ComputeClass를 요청하지 않으면 Autopilot은 기본적으로 해당 포드를 컨테이너 최적화 컴퓨팅 플랫폼에서 실행합니다. 컨테이너 최적화 컴퓨팅 플랫폼을 사용하는 Autopilot 노드에서는 종종 ek라는 머신 시리즈가 표시될 수 있습니다. EK 머신은 Autopilot 전용 E2 머신 유형입니다.
다음 표에서는 Balanced 및 Scale-Out ComputeClass의 기술적 개요를 보여줍니다.
| Balanced 및 Scale-Out ComputeClass | ||
|---|---|---|
Balanced |
컨테이너 최적화 컴퓨팅 플랫폼의 최댓값보다 더 높은 CPU 및 메모리 용량을 제공합니다. 또한 Intel Ice Lake 이상과 같이 포드에 대해 추가 CPU 플랫폼 또는 최소 CPU 플랫폼을 설정할 수 있습니다.
|
|
Scale-Out |
코어당 단일 스레드 컴퓨팅을 제공하며, 수평 확장에 최적화되어 있습니다.
|
|
워크로드에서 ComputeClass 선택
GKE 워크로드에서 ComputeClass를 사용하려면 워크로드 매니페스트에서 cloud.google.com/compute-class 라벨에 대한 노드 선택기를 사용해 ComputeClass를 선택해야 합니다.
다음 예시 배포 매니페스트는 ComputeClass를 선택하는 방법을 보여줍니다.
COMPUTE_CLASS를 Balanced 또는 Scale-Out과 같은 ComputeClass 이름으로 바꿉니다. 워크로드에서는 최대 하나의 ComputeClass만 선택할 수 있습니다.
워크로드를 배포하면, GKE는 다음 작업을 수행합니다.
- 지정된 구성에 따라 포드를 실행할 수 있는 노드를 자동으로 프로비저닝합니다.
- 다른 포드가 해당 노드에 예약되지 않도록 새 노드에 노드 라벨과 taint를 자동으로 추가합니다. taint는 ComputeClass마다 고유합니다. CPU 아키텍처도 선택하는 경우 GKE에서 해당 아키텍처에 고유한 별도의 taint를 추가합니다.
- 적용된 taint에 해당하는 톨러레이션(toleration)을 배포된 포드에 자동으로 추가합니다. 그러면 GKE가 해당 포드를 새 노드에 배치할 수 있습니다.
예를 들어 포드에 대해 Scale-Out ComputeClass를 요청하는 경우:
- Autopilot은 해당 노드에 대해
Scale-Out에 고유한 taint를 추가합니다. - Autopilot이 해당 taint에 대한 톨러레이션(toleration)을
Scale-Out포드에 추가합니다.
Scale-Out을 요청하지 않는 포드에는 톨러레이션(toleration)이 추가되지 않습니다. 그 결과, GKE가 Scale-Out 노드에서 이러한 포드를 예약하지 않습니다.
워크로드 사양에서 ComputeClass를 명시적으로 요청하지 않으면 Autopilot은 포드를 기본 컨테이너 최적화 컴퓨팅 플랫폼을 사용하는 노드에 예약합니다. 대부분의 범용 워크로드는 이 플랫폼에서 문제없이 실행될 수 있습니다.
CPU 아키텍처 요청 방법
일부 경우에는 Arm과 같은 특정 아키텍처에 따라 워크로드를 빌드할 수 있습니다. Scale-Out ComputeClass는 여러 CPU 아키텍처를 지원합니다. 다음 예시에서와 같이 노드 선택기 또는 노드 어피니티 규칙에 라벨을 지정하여 ComputeClass 요청과 함께 특정 아키텍처를 요청할 수 있습니다.
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)로 바꿉니다. 워크로드에서는 최대 하나의 아키텍처만 선택할 수 있습니다. 선택한 ComputeClass는 지정한 아키텍처를 지원해야 합니다.
아키텍처를 명시적으로 요청하지 않으면 Autopilot은 해당 ComputeClass의 기본 아키텍처를 사용합니다.
Autopilot의 ARM 아키텍처
Autopilot은 ARM CPU 아키텍처를 사용하는 노드에 대한 요청을 지원합니다. ARM 노드는 유사한 x86 노드보다 비용 효율적이며 성능 개선도 제공합니다. ARM 노드를 요청하는 방법은 ARM 아키텍처에 Autopilot 워크로드 배포를 참조하세요.
배포에서 올바른 이미지를 사용 중인지 확인합니다. 포드에서 Arm 이미지를 사용하고 Arm 노드를 요청하지 않으면 Autopilot이 x86 노드에 포드를 예약하고 포드가 충돌합니다. 마찬가지로 실수로 x86 이미지를 사용하지만 포드에 Arm 노드를 요청하면 포드가 충돌합니다.
기본, 최소, 최대 리소스 요청
Autopilot 워크로드용 ComputeClass를 선택할 때는, 해당 ComputeClass의 최소 및 최대 리소스 요청 요건을 충족하는 리소스 요청 값을 지정해야 합니다. 기본 리소스 요청뿐 아니라 각 ComputeClass의 최소 및 최대 리소스 요청에 대한 자세한 내용은 GKE Autopilot의 리소스 요청 및 한도를 참조하세요.