최적의 성능으로 CPU 집약적인 워크로드 실행


이 페이지에서는 Google Kubernetes Engine(GKE)에 자체 노드에 노드의 모든 리소스에 대한 전체 액세스 권한을 보유한 각 포드를 배치하도록 지시하여 CPU 집약적인 워크로드를 성능에 맞게 최적화하는 방법을 보여줍니다. 이 포드 배치 모델을 사용하려면 Autopilot 워크로드에서 성능 컴퓨팅 클래스를 요청합니다.

성능 컴퓨팅 클래스의 이점

포드 전용 노드는 기본 가상 머신(VM)의 기능에 액세스해야 하는 대규모 CPU 집약적인 워크로드를 실행하는 경우에 적합합니다. 예를 들어 CPU 집약적인 AI/ML 학습 워크로드 또는 고성능 컴퓨팅(HPC) 일괄 워크로드가 있습니다.

이러한 전용 노드의 포드는 다음과 같은 이점이 있습니다.

  • 예측 가능한 성능: 언제든지 모든 노드 리소스에 액세스합니다.
  • 버스트 가능한 워크로드: 매니페스트에 리소스 한도를 설정하지 않으면 성능 클래스 포드는 Kubernetes 노드 압력이 사라질 위험을 최소화하면서 노드의 사용하지 않는 모든 용량으로 버스트할 수 있습니다.

성능 클래스 포드의 작동 방식

다음 특성을 지닌 포드를 배포합니다.

  • 성능 클래스 및 Compute Engine 머신 시리즈를 선택합니다.
  • 리소스 요청을 지정하며, 리소스 한도를 지정하지 않는 것이 좋습니다.

GKE는 다음을 수행합니다.

  • 배포된 포드가 최소한 컴퓨팅 클래스 용도의 최소 리소스를 요청하도록 합니다.
  • 배포된 포드와 클러스터에 있는 모든 DaemonSet의 총 리소스 요청을 계산합니다.
  • 선택한 머신 시리즈로 지원되는 노드를 프로비저닝합니다.
  • 포드가 자체 노드에서 실행되도록 하기 위해 노드 선택기 및 톨러레이션(toleration)의 조합으로 포드 매니페스트를 수정합니다.

다른 GKE 기능과의 호환성

성능 클래스 포드는 다음 GKE 기능 및 특성과 함께 사용할 수 있습니다.

Spot 포드 및 연장된 실행 시간 포드는 상호 배타적입니다. GKE는 워크로드 분리를 사용하는 성능 클래스 포드에 대해 더 높은 최소 리소스 요청을 적용하지 않습니다.

가격 책정

포드는 언제든지 전체 기본 VM과 연결된 하드웨어를 사용할 수 있으며, Compute Engine에 의해 이 하드웨어에 대한 요금이 청구되며 Autopilot 노드 관리와 확장성이 프리미엄으로 적용됩니다. 자세한 내용은 GKE 가격 책정을 참조하세요.

시작하기 전에

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우 gcloud components update를 실행하여 최신 버전을 가져옵니다.

클러스터에 연결

Google Cloud CLI를 사용하여 Autopilot 클러스터에 연결합니다.

gcloud container clusters get-credentials CLUSTER_NAME \
    --location=LOCATION

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터 이름
  • LOCATION: 클러스터의 Compute Engine 위치입니다.

성능 클래스 포드 배포

  1. 다음 매니페스트를 perf-class-pod.yaml로 저장합니다.

    apiVersion: v1
    kind: Pod
    metadata:
      name: performance-pod
    spec:
      nodeSelector:
        cloud.google.com/compute-class: Performance
        cloud.google.com/machine-family: MACHINE_SERIES
      containers:
      - name: my-container
        image: "k8s.gcr.io/pause"
        resources:
          requests:
            cpu: 20
            memory: "100Gi"
    

    MACHINE_SERIES을(를) 포드에 대한 Compute Engine 머신 시리즈로 바꿉니다(예: c3). 지원되는 값은 이 문서의 지원되는 머신 시리즈를 참조하세요.

  2. 포드를 배포합니다.

    kubectl apply -f perf-class-pod.yaml
    

성능 클래스 포드에서 로컬 SSD 사용

로컬 SSD를 포함하는 머신 시리즈를 선택하는 경우 성능 클래스 포드는 임시 스토리지로 로컬 SSD를 사용할 수 있습니다. GKE는 성능 클래스 포드의 노드를 프로비저닝할 때 임시 스토리지 요청을 고려합니다.

  1. 다음 매니페스트를 perf-class-ssd-pod.yaml로 저장합니다.

    apiVersion: v1
    kind: Pod
    metadata:
      name: performance-pod
    spec:
      nodeSelector:
        cloud.google.com/compute-class: Performance
        cloud.google.com/machine-family: MACHINE_SERIES
        cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
      containers:
      - name: my-container
        image: "k8s.gcr.io/pause"
        resources:
          requests:
            cpu: 12
            memory: "50Gi"
            ephemeral: "200Gi"
    

    MACHINE_SERIES을(를) 로컬 SSD도 지원하는 지원되는 머신 시리즈로 바꿉니다. 지정된 머신 시리즈에서 로컬 SSD를 지원하지 않으면 배포가 실패하고 오류가 표시됩니다.

  2. 포드를 배포합니다.

    kubectl apply -f perf-class-pod.yaml
    

지원되는 머신 시리즈

성능 컴퓨팅 클래스는 다음 머신 시리즈를 지원합니다.

이러한 머신 시리즈와 사용 사례를 비교하려면 Compute Engine 문서의 머신 시리즈 비교를 참조하세요.

GKE에서 머신 크기를 선택하는 방법

지정된 머신 시리즈에서 머신 크기를 선택하기 위해 GKE는 성능 클래스 포드 및 새 노드에서 실행되는 DaemonSet의 총 CPU, 총 메모리, 총 임시 스토리지 요청을 계산합니다. GKE는 이러한 값을 반올림하여 합계 용량을 모두 지원하는 가장 근접한 Compute Engine 머신 유형을 찾습니다.

  • 예시 1: C3 머신 시리즈를 선택하는 성능 클래스 포드를 생각해 보세요. DaemonSet를 포함한 총 리소스 요청은 다음과 같습니다.

    • 70개의 vCPU
    • 200 GiB의 메모리

    GKE는 88개의 vCPU와 352 GB의 메모리가 있는 c3-standard-88 머신 유형으로 지원되는 노드에 포드를 배치합니다.

  • 예시 2: C3D 머신 시리즈와 임시 스토리지로 로컬 SSD를 선택하는 성능 클래스 포드를 생각해 보세요. DaemonSet를 포함한 총 리소스 요청은 다음과 같습니다.

    • 12개의 vCPU
    • 50 GiBㅇ의 메모리
    • 200 GiB의 임시 스토리지

    GKE는 16개의 vCPU, 64 GiB의 메모리, 365 GiB의 로컬 SSD 용량을 보유한 c3d-standard-16-lssd 머신 유형을 사용하는 노드에 포드를 배치합니다.

다음 단계