Autopilot 포드의 컴퓨팅 클래스 선택


이 문서에서는 Google Kubernetes Engine(GKE) Autopilot 클러스터에서 고유한 하드웨어 요구사항이 있는 워크로드를 실행하기 위해 특정 컴퓨팅 클래스를 선택하는 방법을 보여줍니다. 이 문서를 읽기 전에 GKE Autopilot의 컴퓨팅 클래스 개념을 숙지하세요.

Autopilot 컴퓨팅 클래스 개요

Autopilot은 특정 하드웨어 요구사항이 있는 워크로드를 실행하도록 설계된 컴퓨팅 클래스를 제공합니다. 이러한 컴퓨팅 클래스는 머신러닝 및 AI 작업과 같은 워크로드나 트래픽이 많은 실시간 데이터베이스를 실행하는 데 유용합니다.

이 컴퓨팅 클래스는 Compute Engine 머신 시리즈의 하위 집합이며 기본 Autopilot 범용 컴퓨팅 클래스 이상의 유연성을 제공합니다. 예를 들어 Scale-Out 클래스는 동시 멀티 스레딩을 사용 중지하여 각 vCPU가 하나의 물리적 코어가 됩니다.

개별 포드 요구사항에 따라 일반 Autopilot 포드 또는 Spot 포드를 구성하여 이러한 컴퓨팅 클래스가 지원되는 노드를 요청할 수 있습니다. 또한 해당 아키텍처를 지원하는 컴퓨팅 클래스에서 ARM과 같은 특정 CPU 아키텍처를 요청할 수도 있습니다.

시작하기 전에

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

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

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 집약적인 워크로드 실행을 참조하세요.

Spot 포드에 대한 특정 컴퓨팅 클래스를 요청할 수도 있습니다.

리소스 요청 지정

컴퓨팅 클래스를 선택할 때는 선택한 클래스의 최소 및 최대 리소스 요청을 기준으로 포드에 대한 리소스 요청을 지정해야 합니다. 요청이 최솟값보다 적으면 Autopilot이 자동으로 요청을 확장합니다. 하지만 요청이 최댓값보다 크면 Autopilot은 포드를 배포하지 않고 오류 메시지를 표시합니다.

CPU 아키텍처 선택

일부 컴퓨팅 클래스는 여러 CPU 아키텍처를 지원합니다. 예를 들어 Scale-Out 클래스는 Arm 및 x86 아키텍처를 모두 지원합니다. 특정 아키텍처를 요청하지 않으면 Autopilot이 지정된 컴퓨팅 클래스의 기본 아키텍처가 있는 노드를 프로비저닝합니다. 포드가 다른 아키텍처를 사용해야 하는 경우 노드 선택기 또는 노드 어피니티 규칙에서 컴퓨팅 클래스 요청과 함께 해당 아키텍처를 요청합니다. 요청한 컴퓨팅 클래스는 지정된 CPU 아키텍처를 지원해야 합니다.

자세한 안내는 ARM 아키텍처에 Autopilot 포드 배포를 참조하세요.

다음 단계