GKE에서 일괄 워크로드 실행을 위한 권장사항


이 페이지에서는 Google Kubernetes Engine(GKE)을 사용하여 일괄 처리 플랫폼을 빌드하기 위한 권장사항을 소개합니다. GKE는 데이터 처리, 머신러닝 모델 학습, 과학 시뮬레이션 실행, 기타 고성능 컴퓨팅 워크로드와 같이 일괄 워크로드 조정을 위한 강력한 프레임워크를 제공합니다.

이 권장사항은 GKE에서 일괄 워크로드를 배포하는 데 관심이 있는 플랫폼 관리자, 클라우드 설계자, 운영 전문가를 대상으로 합니다.

일괄 워크로드 작동 방식

일괄 워크로드는 사용자 개입 없이 완료될 수 있는 태스크 그룹입니다. 태스크를 정의하려면 Kubernetes 작업 리소스를 사용합니다. 일괄 플랫폼은 작업을 수신하고 수신된 순서대로 큐에 추가합니다. 일괄 플랫폼의 큐는 우선순위, 할당량, 할당 가능한 리소스와 같은 처리 논리를 적용합니다. 일괄 처리 매개변수를 큐에 추가하고 맞춤설정하면 Kubernetes를 사용하여 사용 가능한 리소스 사용을 최적화하고, 예약된 작업의 유휴 시간을 최소화하고, 비용 절감을 극대화할 수 있습니다. 다음 다이어그램은 일괄 플랫폼의 일부가 될 수 있는 GKE 구성요소를 보여줍니다.

일괄 플랫폼 관리

일반적으로 일괄 플랫폼에는 두 가지 주요 사용자 캐릭터인 개발자 및 플랫폼 관리자가 있습니다.

  • 개발자는 프로그램, 처리할 데이터, 작업 요구사항을 지정하는 작업을 제출합니다. 그런 다음 개발자는 작업 제출 확인 및 고유 식별자를 받습니다. 작업이 완료되면 개발자에게 작업의 출력 또는 결과와 함께 알림이 전송됩니다.
  • 플랫폼 관리자는 효율적이고 안정적인 일괄 처리 플랫폼을 관리하고 개발자에게 제공합니다.

일괄 처리 플랫폼은 다음 요구사항을 충족해야 합니다.

  • 플랫폼 리소스가 올바르게 프로비저닝되어 사용자 개입이 거의 또는 전혀 없이 작업이 실행되도록 합니다.
  • 플랫폼 리소스는 조직의 보안 및 관측 가능성 권장사항에 따라 구성됩니다.
  • 플랫폼 리소스는 최대한 효율적으로 사용됩니다. 리소스 경합이 발생하면 가장 중요한 작업이 먼저 수행됩니다.

GKE에서 일괄 플랫폼 아키텍처 준비

GKE 환경은 그룹화되어 클러스터를 형성하는 Compute Engine 가상 머신(VM)인 노드로 구성됩니다.

다음 표에는 일괄 플랫폼 아키텍처를 계획하고 설계할 때의 주요 권장사항이 나와 있습니다.

권장사항 리소스
GKE 작업 모드 선택

GKE에는 다음과 같은 작업 모드가 있습니다.

  • Autopilot 모드를 사용하면 GKE가 노드, 확장, 보안, 기타 사전 구성된 설정을 포함한 클러스터 구성을 자동으로 관리하므로 워크로드에 집중할 수 있습니다. Autopilot 클러스터는 기본적으로 가용성이 높습니다.
  • Standard 모드에서는 노드, 확장, 보안, 기타 고급 설정을 포함한 클러스터 구성을 정의하고 관리합니다.

Autopilot과 Standard 모드 간의 개괄적 비교를 참조하세요.

노드의 머신 유형 선택

GKE는 다음과 같은 Compute Engine VM 시리즈를 지원합니다.

  • 비용 최적화(예: E2)
  • 균형(예: N2, N2D 또는 N1)
  • 수평 확장 최적화(예: Tau T2D, Tau T2A)
  • 메모리 최적화(예: M2 또는 M1)
  • 컴퓨팅 최적화(예: C2 또는 C2D)
  • 가속기 최적화(예: NVIDIA A100 GPU를 갖춘 A2, NVIDIA L4 GPU를 갖춘 G2, NVIDIA H100 GPU를 갖춘 A3(비공개 미리보기로 사용 가능))

각 머신 시리즈는 하나 이상의 CPU 플랫폼(예: Intel 및 AMD의 Arm 프로세서 및 x86 프로세서)과 연결되어 있습니다.

현재 워크로드에 사용 가능한 옵션 알아보기

노드에 하드웨어 가속기 사용

GKE에서 그래픽 처리 장치(GPU) 및 Tensor Processing Unit(TPU)과 같은 하드웨어 가속기를 사용할 수도 있습니다. 여러 컨테이너가 동일한 물리적 GPU에서 시간을 공유할 수 있는 GPU 시간 공유 전략을 고려해 보세요. 이 접근 방식은 요청이 적은 버스팅이 가능한 동종 GPU 워크로드에 유용합니다. 동시에 여러 컨테이너에서 단일 GPU 리소스를 공유하기 위해 GPU를 분할하는 멀티 인스턴스 GPU

Standard 클러스터에서 클러스터 자동 확장 처리 사용 설정

GKE는 워크로드의 수요를 기준으로 지정된 노드 풀의 노드 수를 자동으로 조절합니다. 수동으로 노드를 추가, 삭제하거나 노드 풀을 과도하게 프로비저닝할 필요가 없습니다. 대신 노드 풀의 최소 및 최대 크기만 지정합니다.

다음 구성으로 클러스터 자동 확장 처리를 설정하는 것이 좋습니다.

  • 사용하지 않는 노드를 균형 있는 프로필보다 최대 3배 빠르게 삭제하는 optimize-utilization 프로필을 사용합니다. 자세한 내용은 프로필 자동 확장을 참조하세요.
  • 위치 정책을 ANY로 설정합니다. GKE 클러스터 자동 확장 처리는 사용되지 않은 예약의 사용률에 우선 순위를 지정하고 리전의 사용 가능한 모든 영역에 노드를 만듭니다. 자세한 내용은 위치 정책을 참조하세요.
  • 노드 자동 프로비저닝을 사용 설정하여 인프라를 자동으로 관리하고 자동 확장합니다. 자동 프로비저닝을 사용하여 노드 풀이 생성되면 클러스터 자동 확장 처리가 노드 풀을 동적으로 확장할 수 있습니다. 자세한 내용은 노드 자동 프로비저닝 작동 방식을 참조하세요.

Autopilot 클러스터를 사용하면 노드 풀이 노드 자동 프로비저닝을 통해 자동으로 프로비저닝되고 워크로드 요구사항이 충족되도록 자동으로 확장되므로 노드 프로비저닝이나 노드 풀 관리에 신경을 쓰지 않아도 됩니다.

출시 채널에 클러스터 등록

GKE는 클러스터 버전과 업그레이드를 자동으로 관리할 수 있습니다. 출시 채택 모델에 따라 GKE 사용 가능한 채널에 클러스터를 등록할 수 있습니다.

자세한 내용은 클러스터에 가장 적합한 출시 채널을 선택하는 방법을 참조하세요.

클러스터에서 제외할 유지보수 범위 정의

업그레이드 범위 제외 기간을 정의하면 GKE는 장기 실행 일괄 워크로드가 완료될 때까지 유지보수로 인해 중단되지 않도록 합니다.

자세한 내용은 제외할 유지보수 범위를 참조하세요.

작업 수명 주기 관리

Kubernetes에서는 워크로드를 포드 집합에서 실행합니다. 포드는 공유 스토리지 및 네트워크 리소스가 있는 단일 또는 여러 컨테이너 그룹입니다. 포드는 Kubernetes 사양으로 정의됩니다.

작업은 포드를 한 개 이상 만들고 지정된 포드 수만큼 성공적으로 종료될 때까지 포드 실행을 계속 재시도합니다. 포드가 완료되면 작업이 성공적인 완료를 추적합니다. 지정된 완료 횟수에 도달하면 작업이 완료됩니다.

다음 표에는 작업을 설계하고 관리할 때의 주요 권장사항이 나와 있습니다.

권장사항 리소스
작업 완료 모드 선택 완료 모드Indexed로 지정합니다. 이 구성은 포드 색인을 기준으로 처리할 데이터 파티션을 할당할 때 유용합니다. 작업의 포드는 연결된 완료 색인을 가져옵니다. 작업을 삭제하면 생성된 포드가 삭제됩니다. 작업을 정지하면 작업이 다시 시작될 때까지 활성 포드가 삭제됩니다.
정기 예약 작업에 CronJob 설정 GKE용 CronJob을 사용하여 백업, 보고서 생성, 머신러닝 모델 예약 학습과 같은 정기 예약 작업을 수행합니다.
작업 실패 관리 Kubernetes 포드 실패 정책과 포드 백오프 실패 한도를 정의하여 작업에서 재시도 가능한 및 재시도 불가능한 실패를 처리합니다. 이 정의는 포드 중단으로 인한 불필요한 포드 재시도 및 작업 실패를 방지하여 클러스터 리소스 소비를 개선합니다. 예를 들어 NoExecute taint 효과에 대한 톨러레이션(toleration)이 없는 포드가 제거되는 선점, API 시작 제거 또는 taint 기반 제거를 구성할 수 있습니다. 포드 실패 정책으로 재시도 가능한 포드 실패와 재시도 불가능한 포드 실패를 처리하는 방법 알아보기
하나의 단위로 여러 작업 관리 JobSet API를 사용하여 하나의 드라이버(또는 조정자) 및 여러 작업자(예: MPIJob)와 같은 워크로드 패턴을 처리하기 위해 여러 작업을 하나의 단위로 관리하는 동시에 사용 사례에 따라 일반적인 패턴에 맞는 작업 기본값을 설정합니다. 예를 들어 기본적으로 색인 생성된 작업을 만들고 포드에 대해 예측 가능한 정규화된 도메인 이름(FQDN)의 헤드리스 서비스를 만들고 연결된 포드 실패 정책을 설정할 수 있습니다.
다시 시작을 허용하지 않는 포드의 실행 시간 연장 포드 사양에서 Kubernetes cluster-autoscaler.kubernetes.io/safe-to-evict 주석을 false로 설정합니다. 클러스터 자동 확장 처리는 포드에 설정된 제거 규칙을 따릅니다. 이러한 제한에 따라 cluster-autoscaler.kubernetes.io/safe-to-evict 주석이 있는 포드가 포함된 경우 자동 확장 처리가 노드를 삭제하지 못할 수 있습니다.

자세한 내용은 포드 예약 및 중단 고려를 참조하세요.

멀티테넌시 관리

GKE 클러스터 멀티테넌시는 단일 조직에서 테넌트라고 하는 여러 사용자 또는 워크로드별로 GKE 리소스를 관리하는 방법의 대안입니다. GKE 리소스 관리는 테넌트 격리, 할당량 및 한도 범위 또는 비용 할당과 같은 기준을 따를 수 있습니다.

다음 표에는 멀티테넌시를 관리할 때의 주요 권장사항이 나와 있습니다.

권장사항 리소스
네임스페이스를 사용하여 테넌트 격리 관리 각 테넌트와 해당 Kubernetes 리소스를 자체 네임스페이스로 분리할 수 있습니다.
정책을 사용하여 테넌트 격리 적용 정책을 정의하여 API 액세스 제한, 할당량 설정, 리소스 사용량 제한, 컨테이너에서 가능한 작업을 제한합니다. 이러한 정책은 네임스페이스별로 범위가 지정됩니다.
GKE 비용 할당 설정 GKE 비용 할당을 사용하여 네임스페이스별로 각 테넌트의 클러스터 리소스 요청에 대한 통계를 가져옵니다.

일괄 플랫폼 액세스 제어

GKE를 사용하면 클러스터에서 실행되는 워크로드의 액세스 권한을 미세 조정할 수 있습니다.

다음 표에는 액세스 및 보안을 관리할 때의 주요 권장사항이 나와 있습니다.

권장사항 리소스
GKE용 워크로드 아이덴티티 제휴 설정 GKE를 사용하면 GKE 클러스터의 워크로드가 Google Cloud 서비스에 액세스하기 위해 Identity and Access Management(IAM) 서비스 계정을 가장할 수 있습니다. GKE용 워크로드 아이덴티티 제휴를 사용하면 워크로드가 GKE 외부에 저장된 보안 비밀에 안전하게 액세스할 수 있습니다.

자세한 내용은 GKE용 워크로드 아이덴티티 제휴저장된 보안 비밀 액세스를 참조하세요.

클러스터 네트워크 격리 설정 제어 영역 엔드포인트와 워커 노드 모두 내부 IP 주소를 가질 수 있는 비공개 클러스터를 사용합니다. Private Service Connect를 사용하는 기존 공개 클러스터의 클러스터 격리를 변경할 수도 있습니다.

자세한 내용은 공개 클러스터클러스터 격리 변경을 참조하세요.

Shielded GKE Node 사용 GKE 노드의 보안을 강화하기 위해 강력하고 검증 가능한 노드 ID 및 무결성을 제공하도록 보안 GKE 노드를 구성합니다.
물리적 격리 보안상의 이유로 워크로드에 더 강력한 격리가 필요할 수 있습니다. 노드 taint 및 워크로드 톨러레이션(toleration)을 사용하여 노드 풀에서 테넌트를 물리적으로 분리하려면 노드 taint로 예약을 제어합니다. 이렇게 하면 해당 노드 풀에 적절한 워크로드만 예약할 수 있습니다.

큐 추가 및 공정 공유

리소스 소비를 제어하려면 각 테넌트의 리소스 할당량 한도를 할당하고, 수신되는 작업을 큐에 추가하고, 수신된 순서대로 작업을 처리합니다.

다음 표에는 일괄 워크로드 간의 큐 추가 및 공정 공유를 관리할 때의 주요 권장사항이 나와 있습니다.

권장사항 리소스
Kueue 사용

Kueue는 Kubernetes 클러스터의 일괄, 고성능 컴퓨팅, 머신러닝, 유사한 애플리케이션을 위한 Kubernetes 기반 작업 큐 시스템입니다. 테넌트 간에 클러스터 리소스가 공정하게 공유되도록 Kueue는 할당량과 작업이 리소스를 사용하는 방법을 관리합니다. Kueue는 다음과 같은 결정을 내립니다.

  • 작업이 대기해야 하는 경우
  • 작업을 시작하도록 수락해야 하는 경우(예: 포드 생성)
  • 작업을 선점해야 하는 경우(예: 포드 삭제)

작업 큐 시스템을 구현하는 방법을 알아보려면 GKE의 네임스페이스 간 할당량 공유로 작업 큐 시스템 구현을 참조하세요.

Kueue에 대한 자세한 내용은 Kueue 개념을 참조하세요.

스토리지, 성능, 비용 효율성

GKE 컴퓨팅 및 스토리지 리소스를 효율적으로 사용하면 비용을 절감할 수 있습니다. 한 가지 전략은 성능 저하 없이 일괄 처리 요구사항에 맞게 컴퓨팅 인스턴스의 크기를 적절하게 조정하고 구성하는 것입니다.

다음 표에는 스토리지를 설계 및 관리하고 성능을 최적화할 때의 주요 권장사항이 나와 있습니다.

권장사항 리소스
Compute Engine 영구 디스크 사용

다음 Compute Engine 영구 디스크 구성을 사용하는 것이 좋습니다.

  • 리전 영구 디스크를 사용하여 리전 내 모든 영역의 워커 노드가 내구성이 있는 동일한 기본 스토리지에 액세스할 수 있도록 합니다.
  • 고성능 스토리지가 필요한 워크로드의 경우 임시 데이터에 로컬 SSD를 사용하고 영구 데이터에 익스트림 영구 디스크를 사용합니다.
  • 하이퍼디스크 처리량 영구 디스크를 사용하면 일괄 워크로드에 최적화된 처리량과 용량을 독립적이며 동적으로 프로비저닝할 수 있습니다.
네트워크 연결 스토리지 사용

최적의 스토리지 성능을 위해 영구 디스크와 함께 다음 네트워크 연결 스토리지를 사용합니다.

  • 포드에 있는 모든 워커 노드가 동일한 스토리지 네임스페이스에 액세스하고 용량 확장을 허용하도록 Filestore를 사용합니다.
  • Cloud Storage FUSE를 사용하여 컨테이너에서 Cloud Storage에 로컬 POSIX 마운트로 직접 액세스합니다.
Pub/Sub 정의

일괄 워크로드가 데이터를 읽고 쓸 수도 있습니다. 예를 들어 Pub/Sub를 사용하고 결과와 대시보드를 업데이트하는 BigQuery와 같은 데이터 웨어하우스에 결과를 쓸 수 있습니다.

다음 스토리지 솔루션을 사용하는 것이 좋습니다.

  • 관리형 객체 스토리지의 경우 Cloud Storage를 사용합니다.
  • 관리형 네트워크 파일 스토리지의 경우 Filestore를 사용합니다.
  • 파일 시스템 시맨틱스가 필요한 워크로드의 경우 Cloud Storage FUSE CSI 드라이버를 사용합니다. 이 드라이버를 사용하면 Kubernetes 애플리케이션이 Cloud Storage 버킷을 로컬 파일 시스템으로 마운트할 수 있습니다.
워크로드의 미세 조정 매개변수 지정

다음 구성을 사용하는 것이 좋습니다.

  • 워크로드의 노드 시스템 구성을 맞춤설정합니다. 예를 들어 TCP 소켓 수신 버퍼의 최솟값, 기본값, 최댓값을 설정합니다. 노드 시스템 구성을 사용합니다.
  • 네트워크 프로필을 사용하여 비지 폴링을 사용 설정합니다. 네트워크 지연 시간에 민감한 일부 워크로드가 향상될 수 있습니다. 네트워크 프로필 사용
  • 고성능 애플리케이션에 권장되는 Compute Engine 전용으로 설계된 가상 네트워크 인터페이스인 Google Virtual NIC(gVNIC)를 사용 설정하여 GKE 노드의 네트워크 대역폭을 늘립니다.
  • 동시 멀티 스레딩을 사용 중지하려면 코어당 스레드 수를 지정합니다.
워크로드 네트워킹 및 지연 시간 최적화 GKE는 노드와 여기에서 실행되는 워크로드가 영역 내에서 물리적으로 서로 가까운 곳에 배치되도록 지정하는 노드 풀에 대한 압축 배치 정책을 지원합니다. 이는 워크로드를 구성하는 여러 프로세스 간의 짧은 지연 시간이 중요한 문제인 긴밀하게 결합된 고성능 워크로드에 특히 유용합니다. 자세한 내용은 압축 배치를 참조하세요.
Spot VM 사용

스팟 VM은 표준 Compute Engine VM보다 저렴하고 가용성을 보장하지 않는 Compute Engine 가상 머신(VM) 인스턴스입니다.

다음 솔루션을 사용하는 것이 좋습니다.

  • location_policy= "ANY"와 결합된 자동 확장 스팟 VM 노드 풀을 설정합니다. 이 정책에서 스팟 VM은 선점될 위험이 낮습니다. 이 조합을 사용하면 병렬 계산과 같이 개별 워커 노드의 선점에서 효력을 유지할 수 있는 워크로드에 특히 유용합니다.
  • 워크로드의 리소스 공간이 예측 가능한 경우 Google Cloud 예약약정 사용 할인을 결합하여 상당한 비용을 절감할 수 있습니다. 크기가 예약된 인스턴스 수로 설정된 노드 풀을 만들고 이 노드 풀의 포화도를 극대화하여 사용합니다.
이미지 스트리밍 사용

이미지 스트리밍을 사용하여 컨테이너 이미지를 가져옵니다. GKE는 요건을 충족하는 이미지에서 데이터를 스트리밍합니다. 이렇게 하면 전체 이미지가 다운로드될 때까지 기다리지 않고 워크로드를 초기화할 수 있으므로 초기화 시간이 크게 단축되고 비용 효율성이 향상됩니다.

모니터링

GKE는 클러스터의 안정성과 효율성을 모니터링하는 데 도움이 되는 관측 가능성 및 로깅 도구와 통합됩니다. 다음 표에는 GKE 관측 가능성 도구를 사용 설정하고 사용할 때의 주요 권장사항이 나와 있습니다.

권장사항 리소스
Prometheus 사용

GKE는 Google Cloud Observability와 통합됩니다. GKE가 Cloud Logging 및 Cloud Monitoring으로 전송하도록 원하는 측정항목을 맞춤설정합니다.

Google Cloud Managed Service for Prometheus는 기본적으로 GKE 클러스터에 대해 사용 설정됩니다. Prometheus 서버 설정 및 유지보수의 복잡성을 없애기 위해 관리형 컬렉션을 사용하는 것이 좋습니다.

자세한 내용은 Managed Service for Prometheus를 참조하세요.

Cloud Monitoring 대시보드 사용

GKE 모니터링 대시보드를 사용하면 클러스터 및 리소스 사용률에 대한 대략적인 개요를 확인하고 다양한 측정항목 및 측정기준을 상세히 살펴보고 필터링할 수 있습니다.

자세한 내용은 GKE 클러스터 관찰을 참조하세요.

다음 단계