GKE용 Cloud Storage FUSE CSI 드라이버 정보


이 개요에서는 Google Kubernetes Engine(GKE)에서 Cloud Storage 버킷을 로컬 파일 시스템으로 마운트하는 Cloud Storage FUSE CSI 드라이버를 소개합니다. 이 기능은 Cloud Storage에 학습 데이터, 모델, 체크포인트를 저장해야 하는 머신러닝 워크로드에 특히 유용합니다.

이 개요는 Kubernetes 애플리케이션에서 Cloud Storage에 저장된 학습 데이터, 추론 모델 가중치, 체크포인트에 액세스하거나 이를 저장하려는 개발자 및 데이터 과학자를 대상으로 작성되었습니다.

이 페이지를 읽기 전에 Kubernetes, GKE, Cloud Storage에 대하여 숙지해야 합니다.

작동 방식

이 드라이버는 컨테이너 스토리지 인터페이스(CSI) 표준을 사용하여, 포드에서 실행되는 애플리케이션이 Cloud Storage 버킷에 마치 마운트된 파일 시스템인 것처럼 원활하게 액세스할 수 있도록 합니다. 즉, 복잡한 구성이나 코드 변경 없이 Cloud Storage 버킷을 Kubernetes 애플리케이션의 영구적이고 확장 가능한 데이터 소스로 취급할 수 있습니다.

Cloud Storage FUSE CSI 드라이버는 오픈소스 Google Cloud Storage FUSE CSI 플러그인으로 구동되는 완전 관리형 환경을 제공합니다. CSI 드라이버를 사용하면 Kubernetes API를 사용하여 기존 Cloud Storage 버킷을 볼륨으로 사용할 수 있습니다. 애플리케이션은 Cloud Storage FUSE 파일 시스템 시맨틱스를 사용하여 객체를 업로드하고 다운로드할 수 있습니다.

사용자 공간의 파일 시스템(FUSE)은 파일 시스템을 Linux 커널로 내보내는 데 사용되는 인터페이스입니다. Cloud Storage FUSE를 사용하면 Cloud Storage 버킷을 파일 시스템으로 마운트하여 애플리케이션에서 클라우드 관련 API를 사용하지 않고도 일반적인 파일 I/O 작업(예: 열기, 읽기, 쓰기, 닫기)을 사용하여 버킷의 객체에 액세스할 수 있습니다.

드라이버는 Cloud Storage 지원 볼륨을 구성하는 다음 방법을 기본적으로 지원합니다.

  • CSI 임시 볼륨: 포드 사양에 따라 Cloud Storage 버킷을 지정합니다. Kubernetes 영구 볼륨에 대한 경험이 필요 없는 간소화된 포드 기반 인터페이스를 사용하려면 임시 CSI 볼륨을 사용하세요. 이 옵션을 사용하려면 Cloud Storage 버킷을 CSI 임시 볼륨으로 마운트를 참고하세요.
  • PersistentVolumes: 정적 프로비저닝을 사용하여 Cloud Storage 버킷을 참조하는 PersistentVolume 리소스를 만듭니다. 그런 다음 포드가 이 PersistentVolume에 바인딩된 PersistentVolumeClaim을 참조할 수 있습니다. 이미 PersistentVolume에 익숙하며 이 리소스 유형을 사용하는 기존 배포와 일관성을 유지하려는 경우에 이 옵션을 사용하세요. 이 옵션을 사용하려면 Cloud Storage 버킷을 영구 볼륨으로 마운트를 참고하세요.

사용 사례

Cloud Storage FUSE CSI 드라이버는 다음과 같은 시나리오에 적합합니다.

AI 및 머신러닝

  • 학습: Cloud Storage FUSE CSI 드라이버를 사용하여 Cloud Storage를 정보 소스로 사용하여 학습 데이터와 체크포인트 저장 모델을 읽을 수 있습니다. 예를 들어 PyTorch, JAX 또는 TensorFlow를 사용하여 GKE에서 모델을 학습할 때 드라이버는 Cloud Storage 버킷에 저장된 학습 데이터 세트에 대한 액세스를 제공할 수 있습니다.
  • 추론: Cloud Storage에 저장된 파일에서 결과를 추론하는 ML 추론 모델을 제공할 수 있습니다. Cloud Storage FUSE CSI를 사용하여 Cloud Storage에 저장된 모델 가중치를 미리 로드할 수 있습니다. 또한 파일 캐시와 함께 동시 다운로드를 사용하여 멀티스레드 다운로드에 사용할 Cloud Storage에서 대용량 파일을 더 빠르게 읽을 수 있습니다. 이 기능을 사용하면 특히 크기가 1GB를 초과하는 읽기의 경우 모델 로드 시간이 단축될 수 있습니다.

데이터 분석 파이프라인

Cloud Storage FUSE CSI 드라이버를 사용하면 애플리케이션이 Cloud Storage에 저장된 대규모 데이터 세트에 직접 액세스하고 이를 분석할 수 있으므로 데이터 처리 작업을 간소화할 수 있습니다. 예를 들어 GKE에서 실행되는 Spark 작업은 CSI 드라이버를 사용하여 먼저 다운로드하지 않고도 Cloud Storage에 저장된 데이터를 처리할 수 있습니다.

이점

CSI 드라이버를 사용하면 다음과 같은 이점이 있습니다.

  • 간편한 설정: Cloud Storage FUSE CSI 드라이버는 Standard 및 Autopilot 클러스터 모두에서 드라이버를 자동으로 배포하고 관리합니다. CSI 임시 볼륨을 사용하면 볼륨 구성 및 관리가 간소화됩니다. PersistentVolumeClaim 및 PersistentVolume 객체가 필요하지 않기 때문입니다.
  • 보안: Cloud Storage FUSE CSI 드라이버에는 액세스 권한이 필요하지 않습니다. 이렇게 하면 권한 액세스와 관련된 위험이 최소화되고 보안 상태가 개선됩니다. GKE용 워크로드 아이덴티티 제휴를 사용하여 포드에서 Cloud Storage 객체에 액세스하는 방법을 세밀하게 제어하면서 인증을 관리할 수 있습니다.
  • 성능: Cloud Storage FUSE CSI 드라이버는 최적화된 상호작용을 위한 사이드카, 더 빠른 데이터 액세스를 위한 병렬 다운로드, 읽기 성능을 개선하고 지연 시간을 줄이기 위한 메타데이터 및 파일 캐싱과 같은 기능을 통해 성능을 향상합니다. 이러한 기능에 대해 자세히 알아보려면 성능 조정 옵션 및 기능을 참고하세요.
  • 이동성 및 유연성: Cloud Storage FUSE CSI 드라이버를 사용하면 표준 파일 시스템 시맨틱스를 사용하여 Cloud Storage 버킷을 마운트하고 액세스할 수 있습니다. 이를 통해 ML 워크로드의 이식성을 개선하는 친숙한 인터페이스가 제공되며 광범위한 코드 또는 애플리케이션 변경이 필요하지 않습니다. 이 드라이버는 GPU 및 TPU를 비롯해 GKE에서 사용할 수 있는 모든 가속기에서 지원됩니다. Cloud Storage FUSE CSI 드라이버는 ReadWriteMany, ReadOnlyMany, ReadWriteOnce 액세스 모드를 지원합니다. 초기화 컨테이너에서 Cloud Storage FUSE 볼륨을 사용할 수 있습니다.
  • 관리 용이성: 드라이버를 사용하면 Cloud Storage FUSE를 설치하거나 관리할 필요 없이 백그라운드에서 실행할 수 있습니다. 파일 시스템, Cloud Storage, 파일 캐시 사용량을 비롯한 Cloud Storage FUSE의 측정항목 통계도 확인할 수 있습니다.

성능 조정 옵션 및 기능

Cloud Storage FUSE CSI 드라이버에는 포드가 Cloud Storage 버킷에 저장된 데이터에 액세스하는 방식을 최적화하기 위한 여러 성능 조정 옵션과 기능이 제공됩니다.

예를 들어 파일 캐싱을 사용 설정하고 요청 동시성을 조정하면 학습 데이터를 로드하는 데 걸리는 시간을 크게 줄여 학습 시간을 단축할 수 있습니다.

  • 네이티브 사이드카: Cloud Storage FUSE CSI 드라이버는 포드에 사이드카 컨테이너를 연결하여 Cloud Storage와의 상호작용을 관리합니다. 사이드카는 Cloud Storage와의 마운트 및 상호작용을 처리하므로 애플리케이션이 데이터에 원활하게 액세스할 수 있습니다. 사이드카 컨테이너의 CPU 및 메모리와 같은 리소스를 구성하거나 캐싱 및 버퍼링과 관련된 설정을 조정하여 성능을 미세 조정할 수 있습니다. Cloud Storage FUSE CSI 드라이버의 사이드카 컨테이너와 Istio는 포드에서 공존하고 동시에 실행될 수 있습니다.

  • 병렬 다운로드: GKE 버전 1.30.3-gke.1571000 및 파일 캐시가 사용 설정된 Cloud Storage FUSE v.2.4.0부터는 병렬 다운로드 기능을 사용하여 멀티스레드 다운로드를 위해 Cloud Storage에서 대용량 파일을 더 빠르게 읽을 수 있습니다. 이 기능을 사용하면 특히 크기가 1GB를 초과하는 읽기의 경우 모델 로드 시간을 단축할 수 있습니다(예: Llama 2 70B 로드 시 최대 2배 더 빠름).

  • 메타데이터 캐싱 지원: Cloud Storage FUSE CSI 드라이버는 크기, 수정 시간과 같은 파일 메타데이터를 캐싱하여 성능을 향상시킵니다. CSI 드라이버는 기본적으로 이 통계 캐시를 사용 설정하고 Cloud Storage에서 정보를 반복적으로 요청하는 대신 로컬에 정보를 저장하여 지연 시간을 줄입니다. 최대 크기와 데이터가 캐시에 유지되는 기간을 구성할 수 있습니다. 메타데이터 캐시를 미세 조정하면 Google Cloud Storage에 대한 API 호출을 줄여 네트워크 트래픽과 지연 시간을 최소화하여 애플리케이션 성능과 효율성을 개선할 수 있습니다.

  • 파일 캐싱 지원: 파일 캐싱과 함께 Cloud Storage FUSE CSI 드라이버를 사용하여 Cloud Storage 버킷에서 작은 파일을 처리하는 애플리케이션의 읽기 성능을 개선할 수 있습니다. Cloud Storage FUSE 파일 캐시 기능은 개발자가 선택한 캐시 스토리지에서 더 빠른 파일 반복 읽기를 제공하는 클라이언트 기반 읽기 캐시입니다 가격 대비 성능 요구에 따라 로컬 SSD, 영구 디스크 기반 스토리지, RAM 디스크 등 읽기 캐시를 위한 다양한 스토리지 옵션 중에서 선택할 수 있습니다.

  • 노드 다시 시작 지원: GKE 버전 1.33.1-gke.1959000부터 GCSFuse CSI 볼륨을 사용하는 포드는 GKE 노드 다시 시작 후 자동으로 복구할 수 있습니다. 이전 버전을 실행하는 클러스터의 경우 포드를 복구할 수 없으므로 다시 배포해야 합니다.

성능 조정 권장사항은 GKE 성능을 위해 Cloud Storage FUSE CSI 드라이버 최적화를 참고하세요.

제한사항

CSI 드라이버에는 다음과 같은 제한사항이 있습니다.

  • Cloud Storage FUSE 파일 시스템은 POSIX 파일 시스템과 비교하여 성능, 가용성, 액세스 승인, 시맨틱스에 있어서 차이가 있습니다.
  • Cloud Storage FUSE CSI 드라이버는 GKE Sandbox에서 지원되지 않습니다.
  • Cloud Storage FUSE CSI 드라이버는 볼륨 스냅샷, 볼륨 클론, 볼륨 확장을 지원하지 않습니다.
  • GKE용 워크로드 아이덴티티 제휴를 사용할 때 읽기 쓰기 워크로드에는 균일한 버킷 수준 액세스가 필요합니다.
  • Cloud Storage FUSE CSI 드라이버 GitHub 프로젝트에서 알려진 문제를 참고하세요.
  • Cloud Storage FUSE CSI 드라이버 GitHub 프로젝트에서 미해결 문제를 참고하세요.
  • Cloud Storage FUSE CSI 드라이버는 GKE용 워크로드 아이덴티티 제휴의 제한사항으로 인해 호스트 네트워크(hostNetwork: true)에서 실행되는 포드는 지원하지 않습니다.
  • 1.32.3-gke.1099000 이전 GKE 클러스터 버전에는 JSON 암호화 mountOption 문자열의 크기에 제한이 있습니다. 버킷 이름, 사용자가 제공한 마운트 옵션, 드라이버가 제공한 mountOptions의 조합은 500자(영문 기준) 미만이어야 합니다. GKE 클러스터 버전 1.32.3-gke.1099000 이상에서는 JSON 메시지의 기준이 5,000바이트로 증가했습니다.

요구사항

Cloud Storage FUSE CSI 드라이버를 사용하려면 클러스터가 다음 GKE 버전 요구사항을 충족해야 합니다.

Cloud Storage FUSE CSI 드라이버의 특정 기능을 사용하려면 다음 요구사항도 충족해야 합니다.

기능 GKE 버전 요구사항
사이드카 컨테이너의 비공개 이미지, 커스텀 쓰기 버퍼 볼륨, 사이드카 컨테이너 리소스 요청 1.27.10-gke.1055000, 1.28.6-gke.1369000, 1.29.1-gke.1575000 이상
파일 캐시, 볼륨 속성 1.27.12-gke.1190000, 1.28.8-gke.1175000, 1.29.3-gke.1093000 이상
init 컨테이너의 Cloud Storage FUSE 볼륨 1.29.3-gke.1093000 이상, 모든 노드가 GKE 버전 1.29 이상
병렬 다운로드 1.29.6-gke.1254000, 1.30.2-gke.1394000 이상
Cloud Storage FUSE 측정항목 1.31.1-gke.1621000 이상, 1.33.0-gke.2248000 이상에서 기본적으로 사용 설정됨
메타데이터 미리 가져오기 1.32.1-gke.1357001 이상
스트리밍 쓰기 1.32.1-gke.1753001 이상(1.33.2-gke.4655000 이상에서 기본적으로 사용 설정됨)
커널 미리 읽기 구성 1.32.2-gke.1297001 이상
노드 재시작 지원 1.33.1-gke.1959000 이상

다음 단계