이 가이드에서는 비공개 이미지, 맞춤 쓰기 버퍼, 맞춤 읽기 캐시 볼륨 설정을 비롯하여 Cloud Storage FUSE CSI 드라이버 사이드카 컨테이너의 리소스를 구성하는 방법을 보여줍니다. 일반적으로 이 설정은 변경할 필요가 없습니다.
Cloud Storage FUSE CSI 드라이버는 맞춤설정 가능한 사이드카 컨테이너를 사용하여 Cloud Storage 버킷을 효율적으로 마운트하고 액세스합니다. 사이드카를 구성하면 애플리케이션 성능과 리소스 사용량을 미세 조정할 수 있으므로 데이터 액세스 속도가 빨라지고 처리 시간이 단축되며 애플리케이션의 전반적인 리소스 소비가 줄어들 수 있습니다.
이 가이드는 GKE와 상호작용하는 애플리케이션의 성능, 보안, 효율성을 최적화하려는 개발자, 관리자, 설계자를 대상으로 합니다.
이 페이지를 읽기 전에 Cloud Storage, Kubernetes, 컨테이너화 개념의 기본사항을 숙지해야 합니다.
사이드카 컨테이너 작동 방식
Cloud Storage FUSE CSI 드라이버는 사이드카 컨테이너를 사용하여 Cloud Storage 버킷을 마운트하여 Kubernetes 애플리케이션에서 로컬 파일 시스템으로 액세스할 수 있도록 합니다. 이름이 gke-gcsfuse-sidecar
인 이 사이드카 컨테이너는 동일한 포드 내에서 워크로드 컨테이너와 함께 실행됩니다. 드라이버가 포드 사양에서 gke-gcsfuse/volumes: "true"
주석을 감지하면 사이드카 컨테이너를 자동으로 삽입합니다. 이러한 사이드카 컨테이너 접근 방식은 보안을 강화하고 리소스를 효과적으로 관리하는 데 도움이 됩니다.
사이드카 컨테이너는 Cloud Storage 버킷 마운트의 복잡성을 처리하고 Cloud Storage FUSE 런타임을 직접 관리할 필요 없이 애플리케이션에 파일 시스템 액세스를 제공합니다. gke-gcsfuse/cpu-limit
및 gke-gcsfuse/memory-limit
와 같은 주석을 사용하여 사이드카 컨테이너의 리소스 한도를 구성할 수 있습니다. 또한 사이드카 컨테이너 모델은 Cloud Storage FUSE 인스턴스가 워크로드 수명 주기에 연결되도록 하여 불필요하게 리소스를 소비하지 않도록 합니다. 즉, 워크로드 컨테이너가 종료되면 사이드카 컨테이너가 자동으로 종료됩니다(특히 RestartPolicy
이 Never
인 작업 워크로드 또는 포드에서).
Istio 호환성
Cloud Storage FUSE CSI 드라이버의 사이드카 컨테이너와 Istio는 Pod에서 공존하고 동시에 실행될 수 있습니다. Istio의 사이드카 프록시가 네트워크 트래픽을 관리하고 CSI 사이드카가 스토리지 액세스를 최적화하므로 애플리케이션이 향상된 성능과 관찰 가능성으로 Google Cloud Storage와 효율적으로 상호작용할 수 있습니다.
커스텀 쓰기 버퍼 구성
Cloud Storage FUSE는 로컬 디렉터리에 쓰기를 스테이징한 후 close
또는 fsync
작업에서 Cloud Storage에 업로드합니다. 쓰기 버퍼링은 기본적으로 사용 설정되지 않습니다.
이 섹션에서는 Cloud Storage FUSE 쓰기 버퍼링을 위해 커스텀 버퍼 볼륨을 구성하는 방법을 설명합니다. 이 시나리오는 Cloud Storage FUSE가 쓰기 작업에서 파일을 스테이징하기 위해 기본 emptyDir
볼륨을 바꿔야 하는 경우에 적용될 수 있습니다. 이는 Autopilot 클러스터에서 10GiB가 넘는 파일을 기록해야 할 때 유용합니다.
로컬 SSD, Persistent Disk 기반 스토리지, RAM 디스크 (메모리)와 같이 Cloud Storage FUSE CSI 드라이버에서 지원하는 모든 유형의 스토리지를 파일 캐싱에 지정할 수 있습니다. GKE는 파일 쓰기 버퍼링을 위해 지정된 볼륨을 사용합니다. 이러한 옵션에 대한 자세한 내용은 파일 캐시 백업을 위한 저장용량 선택을 참고하세요.
커스텀 버퍼 볼륨을 사용하려면 0이 아닌 fsGroup
를 지정해야 합니다.
다음 예에서는 사전 정의된 PersistentVolumeClaim을 버퍼 볼륨으로 사용하는 방법을 보여줍니다.
apiVersion: v1
kind: Pod
metadata:
annotations:
gke-gcsfuse/volumes: "true"
spec:
securityContext:
fsGroup: FS_GROUP
containers:
...
volumes:
- name: gke-gcsfuse-buffer
persistentVolumeClaim:
claimName: BUFFER_VOLUME_PVC
다음을 바꿉니다.
- FS_GROUP: fsGroup ID입니다.
- BUFFER_VOLUME_PVC: 사전 정의된 PVC 이름입니다.
맞춤 읽기 캐시 볼륨 구성
이 섹션에서는 Cloud Storage FUSE 읽기 캐싱을 위해 커스텀 캐시 볼륨을 구성하는 방법을 설명합니다.
이 시나리오는 Cloud Storage FUSE가 읽기 작업에서 파일을 캐시하기 위해 기본 emptyDir
볼륨을 바꿔야 하는 경우에 적용될 수 있습니다. PersistentVolumeClaim과 같이 GKE에서 지원되는 스토리지 유형을 지정할 수 있으며, GKE는 파일 캐싱을 위해 지정된 볼륨을 사용합니다. 이는 Autopilot 클러스터에서 10GiB가 넘는 파일을 캐시해야 할 때 유용합니다. 커스텀 캐시 볼륨을 사용하려면 0이 아닌 fsGroup
을 지정해야 합니다.
다음 예에서는 사전 정의된 PersistentVolumeClaim을 캐시 볼륨으로 사용하는 방법을 보여줍니다.
apiVersion: v1
kind: Pod
metadata:
annotations:
gke-gcsfuse/volumes: "true"
spec:
securityContext:
fsGroup: FS_GROUP
containers:
...
volumes:
- name: gke-gcsfuse-cache
persistentVolumeClaim:
claimName: CACHE_VOLUME_PVC
다음을 바꿉니다.
- FS_GROUP:
fsGroup
ID입니다. - CACHE_VOLUME_PVC: 사전 정의된 PersistentVolumeClaim 이름입니다.
사이드카 컨테이너의 비공개 이미지 구성
이 섹션에서는 비공개 Container Registry에서 호스팅하는 경우 사이드카 컨테이너 이미지를 사용하는 방법을 설명합니다. 이 시나리오는 보안 목적으로 비공개 노드를 사용해야 하는 경우에 적용될 수 있습니다.
비공개 사이드카 컨테이너 이미지를 구성하고 사용하려면 다음 단계를 따르세요.
- 이 GKE 호환성 표를 참고하여 호환되는 공개 사이드카 컨테이너 이미지를 찾습니다.
- 로컬 환경으로 가져와 비공개 컨테이너 레지스트리에 푸시합니다.
매니페스트에서 이미지 필드만 있는
gke-gcsfuse-sidecar
라는 컨테이너를 지정합니다. GKE는 지정된 사이드카 컨테이너 이미지를 사용하여 사이드카 컨테이너 삽입을 준비합니다.예를 들면 다음과 같습니다.
apiVersion: v1 kind: Pod metadata: annotations: gke-gcsfuse/volumes: "true" spec: containers: - name: gke-gcsfuse-sidecar image: PRIVATE_REGISTRY/gcs-fuse-csi-driver-sidecar-mounter:PRIVATE_IMAGE_TAG - name: main # your main workload container.
다음을 바꿉니다.
PRIVATE_REGISTRY
: 비공개 Container Registry입니다.PRIVATE_IMAGE_TAG
: 비공개 사이드카 컨테이너 이미지 태그입니다.
다음 단계
- Cloud Storage FUSE CSI 드라이버의 성능을 최적화하는 방법을 알아봅니다.
- GitHub에서 CSI 드라이버 사용을 위한 추가 샘플 살펴보기
- Cloud Storage Fuse 자세히 알아보기