Autopilot의 컴퓨팅 클래스


이 페이지에서는 특정 하드웨어 요구사항이 있는 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
  • 포드는 언제든지 컴퓨팅 리소스에 액세스할 수 있음
  • 포드 메모리 또는 CPU 한도 없음

호환되는 GPU 유형은 다음과 같습니다.

  • nvidia-h100-80gb: NVIDIA H100(80GB)(가속기 컴퓨팅 클래스에서만 사용 가능)
  • nvidia-a100-80gb: NVIDIA A100(80GB)
  • nvidia-tesla-a100: NVIDIA A100(40GB)
  • nvidia-l4: NVIDIA L4
  • nvidia-tesla-t4: NVIDIA T4

  • GPU 중심 AI/ML 학습 및 추론
범용 컴퓨팅 클래스 최댓값 또는 특정 CPU 플랫폼보다 큰 CPU 또는 메모리 요청 Balanced
  • 사용 가능한 CPU: AMD EPYC Rome, AMD EPYC Milan, Intel Ice Lake, Intel Cascade Lake
  • 사용 가능한 아키텍처: amd64
  • 범용보다 더 큰 지원되는 리소스 요청
  • 'Intel Ice Lake 이상'과 같이 포드에 최소 CPU 플랫폼을 설정 가능

N2 머신 시리즈(Intel) 또는 N2D 머신 시리즈(AMD)가 지원됩니다.

  • 웹 서버
  • 중대형 데이터베이스
  • 캐싱
  • 스트리밍 및 미디어 제공
  • 하이퍼디스크 처리량 및 익스트림 스토리지
AI/ML 학습 또는 고성능 컴퓨팅(HPC)과 같은 CPU를 많이 사용하는 워크로드 Performance
  • 사용 가능한 아키텍처: amd64, arm64
  • 포드는 언제든지 컴퓨팅 리소스에 액세스할 수 있음
  • 포드 메모리 또는 CPU 한도 없음

성능 컴퓨팅 클래스와 함께 사용할 수 있는 Compute Engine 머신 시리즈 목록은 지원되는 머신 시리즈를 참조하세요.

  • CPU 중심 AI/ML 학습 및 추론
  • HPC 일괄 워크로드
  • 하이퍼디스크 균형, 처리량, 익스트림 스토리지
단일 코어당 스레드 컴퓨팅 및 수평 확장 Scale-Out
  • 사용 가능한 CPU: Ampere Altra ARM 또는 AMD EPYC Milan
  • Compute Engine 머신 계열: T2A(Arm), T2D(x86)
  • 사용 가능한 아키텍처: arm64 또는 amd64
  • SMT가 해제됩니다. vCPU 1개는 물리적 코어 1개에 해당합니다.
  • 최대 3.5GHz 클록

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 컴퓨팅 클래스를 요청하는 경우 다음과 같이 처리됩니다.

  1. Autopilot에서 이 노드에서 Scale-Out에 해당하는 taint를 추가합니다.
  2. 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의 리소스 요청 및 한도를 참조하세요.

다음 단계