Autopilot 클러스터의 Balanced 및 Scale-Out ComputeClass 정보


Google Kubernetes Engine (GKE) Autopilot 클러스터에서 BalancedScale-Out ComputeClasses를 사용하여 추가 컴퓨팅 용량이나 특수 CPU 구성이 필요한 워크로드를 실행할 수 있습니다. 이 페이지는 기본 Autopilot 클러스터 구성에서 제공하는 것보다 더 유연한 컴퓨팅 옵션을 원하는 클러스터 관리자를 위해 작성되었습니다.

균형 및 스케일 아웃 ComputeClass 개요

기본적으로 GKE Autopilot 클러스터의 포드는 컨테이너 최적화 컴퓨팅 플랫폼에서 실행됩니다. 이 플랫폼은 웹 서버, 중간 강도 일괄 작업과 같은 범용 워크로드에 적합합니다. 컨테이너 최적화 컴퓨팅 플랫폼은 대부분의 워크로드 요구사항을 처리할 수 있는 안정적이고 확장 가능하며 비용 최적화된 하드웨어 구성을 제공합니다.

머신러닝 또는 AI 태스크 수행, 실시간 높은 트래픽 데이터베이스 실행, 특정 CPU 플랫폼 및 아키텍처 요구와 같은 고유한 하드웨어 요구사항이 있는 워크로드가 있으면 ComputeClasses를 사용하여 해당 하드웨어를 프로비저닝할 수 있습니다.

Autopilot 클러스터에서만 GKE는 기본 컨테이너 최적화 컴퓨팅 플랫폼보다 더 많은 유연성이 필요한 포드를 실행할 수 있는 선별된 ComputeClass를 제공합니다.

  • Balanced: 컨테이너에 최적화된 컴퓨팅 플랫폼보다 최대 CPU 및 메모리 용량이 더 높습니다.
  • Scale-Out: 동시 멀티스레딩 (SMT)을 사용 중지하고 수평 확장에 최적화되어 있습니다.

이러한 ComputeClass는 Autopilot 클러스터에서만 사용할 수 있습니다. 기본 컨테이너 최적화 컴퓨팅 플랫폼과 마찬가지로 Autopilot은 실행 중인 포드를 기준으로 노드 크기 및 리소스 할당을 관리합니다.

유연성을 강화하는 맞춤 ComputeClass

Autopilot 클러스터의 균형 또는 스케일 아웃 ComputeClass가 워크로드 요구사항을 충족하지 않는 경우 자체 ComputeClass를 구성할 수 있습니다. GKE가 클러스터에서 새 노드를 구성하는 데 사용하는 노드 속성 집합을 사용하여 ComputeClass Kubernetes 커스텀 리소스를 클러스터에 배포합니다. 예를 들어 이러한 맞춤 ComputeClass를 사용하면 GKE Autopilot 또는 Standard 클러스터에서 Balanced 또는 Scale-Out ComputeClass와 동일한 하드웨어에 워크로드를 배포할 수 있습니다. 자세한 내용은 GKE Standard의 Autopilot 모드 워크로드 정보를 참고하세요.

가격 책정

Balanced 또는 Scale-Out ComputeClass를 사용하는 포드는 다음 SKU에 따라 요금이 청구됩니다.

자세한 내용은 GKE 가격 책정을 참고하세요.

균형 및 스케일 아웃 기술 세부정보

이 섹션에서는 BalancedScale-Out 클래스의 머신 유형과 사용 사례를 설명합니다. 포드에서 ComputeClass를 요청하지 않으면 Autopilot에서 기본적으로 컨테이너 최적화 컴퓨팅 플랫폼에 포드를 배치합니다. 컨테이너 최적화 컴퓨팅 플랫폼을 사용하는 Autopilot 노드에서 노드 머신 시리즈가 ek로 표시되는 경우가 있습니다. EK 머신은 Autopilot 전용 E2 머신 유형입니다.

다음 표에서는 BalancedScale-Out ComputeClass에 대한 기술 개요를 보여줍니다.

균형 및 수평 확장 ComputeClass
Balanced

컨테이너 최적화 컴퓨팅 플랫폼 최댓값보다 더 많은 CPU 용량과 메모리 용량을 제공합니다. 추가 CPU 플랫폼을 제공하고 Intel Ice Lake 이상과 같이 포드에 최소 CPU 플랫폼을 설정하는 기능을 제공합니다.

  • 사용 가능한 CPU: AMD EPYC Rome, AMD EPYC Milan, Intel Ice Lake, Intel Cascade Lake
  • 사용 가능한 아키텍처: amd64
  • 머신 시리즈: N2(Intel CPU) 또는 N2D 머신 시리즈(AMD CPU)

다음과 같은 애플리케이션에는 Balanced 클래스를 사용합니다.

  • 웹 서버
  • 중대형 데이터베이스
  • 캐싱
  • 스트리밍 및 미디어 제공
  • Hyperdisk 처리량 및 익스트림 스토리지
Scale-Out

단일 코어당 스레드 컴퓨팅 및 수평 확장을 제공합니다.

  • 사용 가능한 CPU: Ampere Altra Arm 또는 AMD EPYC Milan
  • 사용 가능한 아키텍처: arm64 또는 amd64
  • 머신 시리즈: T2A (Arm) 또는 T2D (x86)
  • 추가 기능:
    • SMT가 사용 중지되어 vCPU 1개는 물리적 코어 1개에 해당합니다.
    • 최대 클럭 속도 3.5GHz

다음과 같은 애플리케이션에는 Scale-Out 클래스를 사용합니다.

  • 웹 서버
  • 컨테이너식 마이크로서비스
  • 데이터 로그 처리
  • 대규모 자바 앱
  • 하이퍼 디스크 처리량 스토리지

워크로드의 ComputeClass 선택

GKE 워크로드에 ComputeClass를 사용하려면 cloud.google.com/compute-class 라벨의 노드 선택기를 사용하여 워크로드 매니페스트에서 ComputeClass를 선택합니다.

다음 예시 배포 매니페스트는 ComputeClass를 선택합니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloweb
  labels:
    app: hello
spec:
  selector:
    matchLabels:
      app: hello
  template:
    metadata:
      labels:
        app: hello
    spec:
      nodeSelector:
        # Replace with the name of a compute class
        cloud.google.com/compute-class: COMPUTE_CLASS 
      containers:
      - name: hello-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
        ports:
        - containerPort: 8080
        resources:
          requests:
            cpu: "250m"
            memory: "4Gi"

COMPUTE_CLASS을 ComputeClass 이름(예: Balanced 또는 Scale-Out)으로 바꿉니다. 워크로드에서 ComputeClass는 최대 하나만 선택할 수 있습니다.

워크로드를 배포하면 GKE가 다음을 수행합니다.

  • 지정된 구성으로 지원되는 노드를 자동으로 프로비저닝하여 포드를 실행합니다.
  • 다른 포드가 이 노드에 예약되지 않도록 노드 라벨과 taint를 새 노드에 자동으로 추가합니다. taint는 각 ComputeClass마다 고유합니다. CPU 아키텍처도 선택하는 경우 GKE에서 해당 아키텍처에 고유한 별도의 taint를 추가합니다.
  • 적용된 taint에 해당하는 톨러레이션(toleration)을 배포된 포드에 자동으로 추가합니다. 그러면 GKE가 해당 포드를 새 노드에 배치할 수 있습니다.

예를 들어 포드에 대한 Scale-Out ComputeClass를 요청하는 경우 다음과 같이 처리됩니다.

  1. Autopilot에서 이 노드에서 Scale-Out에 해당하는 taint를 추가합니다.
  2. Autopilot이 해당 taint에 대한 톨러레이션(toleration)을 Scale-Out 포드에 추가합니다.

Scale-Out을 요청하지 않는 포드에는 톨러레이션(toleration)이 추가되지 않습니다. 그 결과, GKE가 Scale-Out 노드에서 이러한 포드를 예약하지 않습니다.

워크로드 사양에서 ComputeClass를 명시적으로 요청하지 않으면 Autopilot이 기본 컨테이너 최적화 컴퓨팅 플랫폼을 사용하는 노드에 포드를 예약합니다. 대부분의 범용 워크로드는 이 플랫폼에서 문제없이 실행할 수 있습니다.

CPU 아키텍처 요청 방법

일부 경우에는 Arm과 같은 특정 아키텍처에 따라 워크로드를 빌드할 수 있습니다. 수평 확장 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)로 바꿉니다. 워크로드에서 아키텍처를 최대 1개까지 선택할 수 있습니다. 선택한 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의 리소스 요청 및 한도를 참고하세요.

다음 단계