이 가이드에서는 정적 프로비저닝을 사용하여 GKE Parallelstore CSI 드라이버로 기존 Parallelstore 인스턴스에 연결하는 방법을 설명합니다. 이렇게 하면 예측 가능하고 통제된 방식으로 기존의 완전 관리형 Parallelstore 인스턴스에 스테이트풀(Stateful) 워크로드의 볼륨으로 액세스할 수 있습니다.
시작하기 전에
시작하기 전에 다음 태스크를 수행했는지 확인합니다.
- Google Kubernetes Engine API를 사용 설정합니다. Google Kubernetes Engine API 사용 설정
- 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우
gcloud components update
를 실행하여 최신 버전을 가져옵니다.
- 제한사항 및 요구사항은 CSI 드라이버 개요를 참조하세요.
- 아직 만들지 않았다면 Parallelstore 인스턴스를 만듭니다.
- VPC 네트워크를 구성합니다.
- GKE Standard 클러스터를 사용하려면 CSI 드라이버를 사용 설정해야 합니다.
Parallelstore CSI 드라이버를 사용하여 기존 Parallelstore 인스턴스에 액세스
GKE 클러스터와 동일한 네트워크 내에 Parallelstore 인스턴스를 이미 프로비저닝한 경우 이 안내에 따라 인스턴스를 참조하는 PersistentVolume을 정적으로 프로비저닝할 수 있습니다.
다음 섹션에서는 Parallelstore CSI 드라이버를 사용하여 기존 Parallelstore 인스턴스에 액세스하는 일반적인 프로세스를 설명합니다.
- Parallelstore 인스턴스를 참조하는 PersistentVolume을 만듭니다..
- PersistentVolumeClaim을 사용하여 볼륨에 액세스합니다.
- (선택사항) 사이드카 컨테이너의 리소스를 구성합니다.
- 볼륨을 사용하는 워크로드를 만듭니다.
PersistentVolume 만들기
이 섹션에서는 기존 Parallelstore 인스턴스를 참조하는 PersistentVolume을 만드는 방법에 대한 예시를 보여줍니다.
다음 명령어를 실행하여 Parallelstore 인스턴스를 찾습니다.
gcloud beta parallelstore instances list \ --project=PROJECT_ID \ --location=LOCATION
다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트 ID
- LOCATION: 클러스터를 포함하는 Compute Engine 영역. Parallelstore CSI 드라이버에 지원되는 영역을 지정해야 합니다.
출력은 다음과 비슷하게 표시됩니다. 다음 단계로 진행하기 전에 Parallelstore 인스턴스 이름과 IP 액세스 포인트를 기록해 두세요.
NAME capacity DESCRIPTION CREATE_TIME UPDATE_TIME STATE network RESERVED_IP_RANGE ACCESS_POINTS projects/my-project/locations/us-central1-a/instances/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563 12000 2024-03-06T19:18:26.036463730Z 2024-03-06T19:24:44.561441556Z ACTIVE 10.51.110.2,10.51.110.4,10.51.110.3
parallelstore-pv.yaml
이라는 파일에 매니페스트를 저장합니다.apiVersion: v1 kind: PersistentVolume metadata: name: parallelstore-pv spec: storageClassName: "STORAGECLASS_NAME" capacity: storage: STORAGE_SIZE accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain volumeMode: Filesystem csi: driver: parallelstore.csi.storage.gke.io volumeHandle: "PROJECT_ID/LOCATION/INSTANCE_NAME/default-pool/default-container" volumeAttributes: accessPoints: ACCESS_POINTS network: NETWORK_NAME
다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트 ID
- LOCATION: Parallelstore 인스턴스의 영역 위치입니다. Parallelstore CSI 드라이버에 지원되는 영역을 지정해야 합니다.
- INSTANCE_NAME: Parallelstore 인스턴스의 이름입니다. 유효한
volumeHandle
값의 예는 다음과 같습니다."my-project/us-central1-a/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563/default-pool/default-container".
- ACCESS_POINTS: Parallelstore 인스턴스의 액세스 포인트입니다(예:
10.51.110.2,10.51.110.4,10.51.110.3
). - NETWORK_NAME: Parallelstore 인스턴스에 액세스할 수 있는 VPC 네트워크입니다.
- STORAGECLASS_NAME: StorageClass 이름입니다. 이 속성은 빈 문자열일 수 있지만 PersistentVolumeClaim의 사양과 일치해야 합니다.
- STORAGE_SIZE: 스토리지 크기입니다(예:
12000Gi
).
PersistentVolume 객체에서 지원되는 전체 필드 목록은 Parallelstore CSI 참조 문서를 참조하세요.
다음 명령어를 실행하여 PersistentVolume을 만듭니다.
kubectl apply -f parallelstore-pv.yaml
PersistentVolumeClaim을 사용하여 볼륨에 액세스
Parallelstore CSI 드라이버의 StorageClass를 참조하는 PersistentVolumeClaim 리소스를 만들 수 있습니다.
다음 매니페스트 파일에서는 앞에서 만든 StorageClass를 참조하는 ReadWriteMany
액세스 모드 에서 PersistentVolumeClaim을 만드는 방법에 대한 예시를 보여줍니다.
parallelstore-pvc.yaml
이라는 파일에 매니페스트를 저장합니다.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: parallelstore-pvc spec: accessModes: - ReadWriteMany storageClassName: STORAGECLASS_NAME volumeName: parallelstore-pv resources: requests: storage: STORAGE_SIZE
다음을 바꿉니다.
- STORAGECLASS_NAME: StorageClass 이름입니다. PersistentVolume의 사양과 일치해야 합니다.
- STORAGE_SIZE: 스토리지 크기입니다(예:
12000Gi
). PersistentVolume의 사양과 일치해야 합니다.
다음 명령어를 실행하여 PersistentVolumeClaim을 만듭니다.
kubectl create -f parallelstore-pvc.yaml
(선택사항) 사이드카 컨테이너 리소스 구성
Parallelstore 지원 볼륨을 사용하는 워크로드 포드를 만들면 CSI 드라이버가 볼륨이 Parallelstore 인스턴스 기반인지 확인합니다.
드라이버가 볼륨이 Parallelstore 기반임을 감지하거나 주석 gke-parallelstore/volumes: "true"
를 지정하면 CSI 드라이버는 gke-parallelstore-sidecar
라는 사이드카 컨테이너를 포드에 자동으로 삽입합니다. 이 사이드카 컨테이너는 Parallelstore 인스턴스를 워크로드에 마운트합니다.
기본적으로 사이드카 컨테이너는 다음 리소스 요청에 따라 구성되지만 리소스 한도에 제한이 없습니다.
- 250m CPU
- 512MiB 메모리
- 10MiB 임시 스토리지
이러한 값을 재정의하려면 다음 예시에 표시된 것처럼 gke-parallelstore/[cpu-request|memory-request|cpu-limit|memory-limit|ephemeral-storage-request]
주석을 선택적으로 지정할 수 있습니다.
apiVersion: v1
kind: Pod
metadata:
annotations:
gke-parallelstore/volumes: "true"
gke-parallelstore/cpu-request: 500m
gke-parallelstore/memory-request: 1Gi
gke-parallelstore/ephemeral-storage-request: 500Mi
gke-parallelstore/cpu-limit: 1000m
gke-parallelstore/memory-limit: 2Gi
gke-parallelstore/ephemeral-storage-limit: 1Gi
할당할 리소스 양을 결정할 때 다음 사항을 고려하세요.
- 요청 또는 한도 값 중 하나가 설정되고 다른 값은 설정되지 않은 경우 GKE는 두 값을 모두 지정된 동일한 값으로 설정합니다.
- 워크로드에 더 높은 처리량이 필요한 경우 사이드카 컨테이너에 더 많은 CPU를 할당합니다. CPU가 부족하면 I/O 제한이 발생합니다.
- '0' 값을 사용하여 Standard 클러스터의 리소스 한도를 설정 해제할 수 있습니다. 예를 들어
gke-parallelstore/memory-limit: "0"
는 사이드카 컨테이너의 메모리 한도를 삭제합니다. 이는 워크로드에 필요한gke-parallelstore-sidecar
리소스 양을 결정할 수 없고 사이드카가 노드에서 사용 가능한 모든 리소스를 사용할 수 있게 하려는 경우에 유용합니다.
볼륨을 사용하는 워크로드 만들기
이 섹션에서는 앞에서 만든 PersistentVolumeClaim 리소스를 사용하는 포드를 만드는 방법에 대한 예시를 보여줍니다.
포드 여러 개에서 같은 PersistentVolumeClaim 리소스를 공유할 수 있습니다.
my-pod.yaml
파일에 다음 매니페스트를 저장합니다.apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: nginx image: nginx volumeMounts: - name: parallelstore-volume mountPath: /data volumes: - name: parallelstore-volume persistentVolumeClaim: claimName: parallelstore-pvc
다음 명령어를 실행하여 매니페스트를 클러스터에 적용합니다.
kubectl apply -f my-pod.yaml
포드는 GKE에서 PersistentVolumeClaim을 프로비저닝할 때까지 기다린 후 실행을 시작합니다. 이 작업을 완료하는 데 몇 분이 소요될 수 있습니다.
Parallelstore CSI 드라이버 관리
이 섹션에서는 필요한 경우 Parallelstore CSI 드라이버를 사용 설정하고 중지하는 방법을 설명합니다.
새 클러스터에서 Parallelstore CSI 드라이버 사용 설정
새 Standard 클러스터를 만들 때 Parallelstore CSI 드라이버를 사용 설정하려면 Google Cloud CLI로 다음 명령어를 실행합니다.
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--network=NETWORK_NAME \
--addons=ParallelstoreCsiDriver \
--cluster-version=VERSION
다음을 바꿉니다.
- CLUSTER_NAME: 클러스터 이름
- LOCATION: 클러스터를 포함하는 Compute Engine 영역. Parallelstore CSI 드라이버에 지원되는 영역을 지정해야 합니다.
- NETWORK_NAME: VPC 네트워크 구성에서 만든 VPC 네트워크의 이름
- VERSION: GKE 버전 번호.
이 기능을 사용하려면 지원되는 버전 번호를 지정해야 합니다(예: GKE 버전 1.29 이상). 또는
--release-channel
플래그를 사용하고 출시 채널을 지정하면 됩니다.
기존 클러스터에서 Parallelstore CSI 드라이버 사용 설정
기존 GKE Standard 클러스터에서 드라이버를 사용 설정하려면 Google Cloud CLI로 다음 명령어를 실행합니다.
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--update-addons=ParallelstoreCsiDriver=ENABLED
다음을 바꿉니다.
- CLUSTER_NAME: 클러스터 이름
- LOCATION: 클러스터를 포함하는 Compute Engine 영역. Parallelstore CSI 드라이버에 지원되는 영역을 지정해야 합니다.
GKE 클러스터가 VPC 네트워크 구성에서 설정한 네트워크와 동일한 VPC 네트워크에서 실행되고 있는지 확인합니다. GKE 클러스터의 VPC 네트워크를 확인하려면 Google Cloud 콘솔에서 또는 gcloud container clusters describe $(CLUSTER) --format="value(networkConfig.network)" --location=$(LOCATION)
명령어를 통해 확인하면 됩니다.
Parallelstore CSI 드라이버 중지
Google Cloud CLI를 사용하여 기존 Autopilot 또는 Standard 클러스터에서 Parallelstore CSI 드라이버를 중지할 수 있습니다.
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--update-addons=ParallelstoreCsiDriver=DISABLED
다음을 바꿉니다.
- CLUSTER_NAME: 클러스터 이름
- LOCATION: 클러스터를 포함하는 Compute Engine 영역. Parallelstore CSI 드라이버에 지원되는 영역을 지정해야 합니다.
Parallelstore 볼륨에서 fsGroup 사용
Parallelstore CSI 드라이버는 마운트된 파일 시스템의 루트 수준 디렉터리 그룹 소유권을 변경하여 포드의 SecurityContext에 지정된 사용자 요청 fsGroup과 일치하도록 지원합니다. 이 기능은 GKE 클러스터 버전 1.29.5 이상 또는 버전 1.30.1 이상에서만 지원됩니다.
문제 해결
문제 해결 안내는 Parallelstore 문서의 문제 해결 페이지를 참조하세요.
다음 단계
- Parallelstore CSI 참고 문서 살펴보기
- Parallelstore 가로채기 라이브러리를 사용하여 워크로드 성능을 개선하는 방법 알아보기
- Cloud Storage에서 Parallelstore로 데이터를 전송하는 방법 알아보기
- GKE에서 Keras를 사용하여 TensorFlow 모델을 학습시키는 튜토리얼 사용해 보기