머신 시리즈를 선택하여 Autopilot 포드 성능 최적화


이 페이지에서는 Google Kubernetes Engine(GKE) Autopilot 클러스터에서 워크로드 성능이 최적화될 수 있도록 특정 Compute Engine 머신 시리즈에 워크로드를 배치하는 방법을 보여줍니다.

다음 사항을 숙지해야 합니다.

머신 시리즈 선택 작동 방식

Autopilot에서 해당 포드에 특정 Compute Engine 하드웨어를 할당할 수 있도록 cloud.google.com/machine-family 노드 선택기를 포드 사양에 추가할 수 있습니다. 예를 들어 CPU 성능이 더 필요한 포드의 경우 C3 머신 시리즈를 선택하고 메모리가 더 필요한 포드의 경우 N1 머신 시리즈를 선택할 수 있습니다. Autopilot은 선택한 머신 시리즈에서 사전 정의된 머신 유형 중 하나를 프로비저닝하여 워크로드를 최적으로 실행합니다.

특정 머신 시리즈를 선택하면 최적의 포드 성능 외에도 다음과 같은 이점이 있습니다.

  • 효율적인 노드 사용률: 기본적으로 Autopilot은 각 노드에 같은 머신 시리즈를 요청하는 포드를 최대한 많이 예약하여 노드 리소스 사용량을 최적화합니다. 이 방법은 노드의 리소스 사용량을 최적화하여 가성비를 개선합니다. 워크로드가 노드의 모든 리소스에 액세스해야 하는 경우 노드마다 포드 하나를 요청하도록 워크로드를 선택적으로 구성할 수 있습니다.

  • 버스팅 가능한 워크로드: 리소스 한도를 요청보다 높게 설정하여 포드가 노드의 사용되지 않는 리소스 용량으로 버스팅하도록 구성할 수 있습니다. 자세한 내용은 GKE에서 포드 버스팅 구성을 참조하세요.

각 포드에 전용 노드 요청

모든 노드 리소스에 안정적으로 액세스해야 하는 CPU 집약적인 워크로드가 있는 경우 Autopilot이 자체 노드에 머신 시리즈를 요청하는 포드를 배치하도록 포드를 선택적으로 구성할 수 있습니다.

AI/ML 학습 워크로드 또는 고성능 컴퓨팅(HPC) 일괄 워크로드와 같이 CPU 집약적인 대규모 워크로드를 실행하는 경우 포드별 전용 노드를 사용하는 것이 좋습니다.

다중 포드 예약과 단일 포드 예약 중에서 선택

다음 안내를 수행하여 요구사항에 따라 포드 예약 동작을 선택합니다.

  • 다른 포드와 컴퓨팅 리소스를 공유할 수 있는 포드가 있거나 특수 하드웨어에서 포드를 실행하는 동안 비용을 최적화하려면 노드당 여러 포드의 기본 예약 동작을 사용합니다.
  • 전체 노드 리소스에 안정적으로 액세스해야 하는 포드가 있거나 컴퓨팅 리소스 공유로 인한 서비스 중단 가능성을 최소화하려면 각 포드에 전용 노드를 요청합니다.

가격 책정

Compute Engine에서 기본 VM과 연결된 하드웨어에 대한 요금과 Autopilot 노드 관리 및 확장성을 위한 프리미엄 요금을 청구합니다. 자세한 내용은 GKE 가격 책정을 참조하세요.

시작하기 전에

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

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우 gcloud components update를 실행하여 최신 버전을 가져옵니다.
  • 버전 1.30.1-gke.1396000 이상을 실행하는 기존 Autopilot 클러스터가 있는지 확인합니다. 새 클러스터를 만들려면 Autopilot 클러스터 만들기를 참조하세요.

머신 계열 선택

이 섹션에서는 포드에서 특정 Compute Engine 머신 시리즈를 선택하는 방법을 보여줍니다.

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

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

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

  2. 포드를 배포합니다.

    kubectl apply -f machine-series-pod.yaml
    

이 매니페스트를 사용하면 Autopilot에서 사용 가능한 용량이 있는 경우 같은 머신 시리즈를 선택하는 다른 포드를 같은 노드에 효율적으로 예약하여 노드 리소스 사용량을 최적화할 수 있습니다.

로컬 SSD 사용

로컬 SSD를 제공하는 머신 시리즈를 지정하면 머신 시리즈를 선택하는 포드는 임시 스토리지로 로컬 SSD를 사용할 수 있습니다. Autopilot은 포드의 Compute Engine 머신 유형을 선택할 때 임시 스토리지 요청을 고려합니다.

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

      apiVersion: v1
      kind: Pod
    metadata:
      name: local-ssd-pod
    spec:
      nodeSelector:
        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: 6
            memory: "25Gi"
            ephemeral: "100Gi"
          limits:
            cpu: 12
            memory: "50Gi"
            ephemeral: "200Gi"
    

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

  2. 포드를 배포합니다.

    kubectl apply -f local-ssd-pod.yaml
    

포드에 전용 노드 요청

포드에 모든 노드 리소스에 안정적으로 액세스해야 함과 같이 특정 성능 요구사항이 있으면 머신 시리즈 노드 선택기와 함께 cloud.google.com/compute-class: Performance 노드 선택기를 지정하여 기각 포드에 전용 노드를 요청할 수 있습니다. 이렇게 하면 Autopilot에서 지정된 머신 시리즈를 사용하고 해당 포드 전용인 새 노드에 포드를 배치합니다. 또한 이 노드 선택기를 사용하면 Autopilot이 해당 노드에서 다른 포드를 예약하지 못하게 할 수 있습니다.

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

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

    MACHINE_SERIES를 노드당 포드 하나 예약도 지원하는 지원되는 머신 시리즈로 바꿉니다. 지정된 머신 시리즈에서 노드당 포드 하나 예약을 지원하지 않으면 배포가 실패하고 오류가 표시됩니다.

  2. 포드를 배포합니다.

    kubectl apply -f dedicated-node-pod.yaml
    

이 매니페스트를 배포하면 Autopilot에서 다음을 수행합니다.

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

지원되는 머신 시리즈

machine-family 선택기는 다음 머신 시리즈를 지원합니다.

(항상 번들로 제공됨)

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

다른 GKE 기능과의 호환성

다음 GKE 기능과 함께 머신 시리즈를 선택하는 포드를 사용할 수 있습니다.

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

GKE에서 머신 유형을 선택하는 방법

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

  • 예 1: C3D 머신 시리즈를 선택하는 복제본 4개가 있는 배포를 생각해 보세요. 포드당 전용 노드를 요청하지 않습니다. 각 복제본의 리소스 요청은 다음과 같습니다.

    • 500m vCPU
    • 메모리 1GiB

    Autopilot은 vCPU 4개와 메모리 16GB가 있는 c3d-standard-4 머신 유형에서 지원하는 노드에 모든 포드를 배치합니다.

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

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

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

다음 단계