Google Kubernetes Engine에서 Parallelstore 인스턴스로 지원되는 볼륨 만들기 및 사용


Parallelstore는 초대를 받아야만 사용 가능합니다. Google Cloud 프로젝트에서 Parallelstore에 대한 액세스 권한을 요청하려면 영업 담당자에게 문의하세요.

이 가이드에서는 동적 프로비저닝을 사용하여 GKE에서 Parallelstore CSI 드라이버가 지원하는 새 Kubernetes 볼륨을 만드는 방법을 설명합니다. 이렇게 하면 완전 관리형 Parallelstore 인스턴스에서 지원하는 스토리지를 주문형으로 만들고 상태 스테이트풀(Stateful) 워크로드의 볼륨으로 액세스할 수 있습니다.

시작하기 전에

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

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우 gcloud components update를 실행하여 최신 버전을 가져옵니다.

Parallelstore CSI 드라이버를 사용하여 새 볼륨 만들기

다음 섹션에서는 GKE에서 Parallelstore CSI 드라이버가 지원하는 Kubernetes 볼륨을 만드는 일반적인 프로세스를 설명합니다.

  1. (선택사항) StorageClass를 만듭니다.
  2. PersistentVolumeClaim을 사용하여 볼륨에 액세스합니다.
  3. (선택사항) 사이드카 컨테이너의 리소스를 구성합니다.
  4. 볼륨을 사용하는 워크로드를 만듭니다.

(선택사항) 스토리지 클래스 만들기

Parallelstore CSI 드라이버가 사용 설정되면 GKE는 Parallelstore 인스턴스를 프로비저닝할 수 있도록 parallelstore-rwx라는 StorageClass를 자동으로 만듭니다. 이 StorageClass는 CSI 드라이버가 최적의 I/O 성능을 보장하기 위해 GKE 클러스터와 동일한 리전에 Parallelstore 인스턴스를 프로비저닝하도록 지시합니다.

원하는 경우 특정 토폴로지로 커스텀 StorageClass를 만들 수 있습니다. 이렇게 하려면 다음 단계를 수행합니다.

  1. 다음 StorageClass 매니페스트를 parallelstore-class.yaml 파일에 저장합니다.

      apiVersion: storage.k8s.io/v1
      kind: StorageClass
      metadata:
        name: parallelstore-class
      provisioner: parallelstore.csi.storage.gke.io
      volumeBindingMode: Immediate
      reclaimPolicy: Delete
      allowedTopologies:
      - matchLabelExpressions:
        - key: topology.gke.io/zone
          values:
            LOCATION
    

    다음을 바꿉니다.

    • LOCATION: 클러스터를 포함하는 Compute Engine 영역. Parallelstore CSI 드라이버에 지원되는 영역을 지정해야 합니다.

    StorageClass에서 지원되는 필드의 전체 목록은 Parallelstore CSI 참고 문서를 참조하세요.

  2. 다음 명령어를 실행하여 StorageClass를 만듭니다.

    kubectl create -f parallelstore-class.yaml
    

PersistentVolumeClaim을 사용하여 볼륨에 액세스

Parallelstore CSI 드라이버의 StorageClass를 참조하는 PersistentVolumeClaim 리소스를 만들 수 있습니다.

다음 매니페스트 파일에서는 앞에서 만든 StorageClass를 참조하는 ReadWriteMany 액세스 모드 에서 PersistentVolumeClaim을 만드는 방법에 대한 예시를 보여줍니다.

  1. parallelstore-pvc.yaml이라는 파일에 매니페스트를 저장합니다.

      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: parallelstore-pvc
      spec:
        accessModes:
        - ReadWriteMany
        resources:
          requests:
            storage: STORAGE_SIZE
        storageClassName: parallelstore-class
    

    STORAGE_SIZE를 스토리지 크기로 바꿉니다(예: 12000Gi). 값은 12,000~100,000GiB(4,000GiB의 배수) 범위여야 합니다.

  2. 다음 명령어를 실행하여 PersistentVolumeClaim을 만듭니다.

      kubectl create -f parallelstore-pvc.yaml
    

(선택사항) 사이드카 컨테이너 리소스 구성

Parallelstore 지원 볼륨을 사용하는 워크로드 포드를 만들면 CSI 드라이버가 볼륨이 Parallelstore 인스턴스 기반인지 확인합니다.

드라이버가 볼륨이 Parallelstore 기반임을 감지하거나 주석 gke-parallelstore/volumes: "true"를 지정하면 CSI 드라이버는 gke-parallelstore-sidecar라는 사이드카 컨테이너를 포드에 자동으로 삽입합니다. 이 사이드카 컨테이너는 Parallelstore 인스턴스를 워크로드에 마운트합니다.

기본적으로 GKE는 다음 리소스 요청으로 사이드카 컨테이너를 구성하며 리소스 한도는 설정 해제됩니다.

  • 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

할당할 리소스 양을 결정할 때 다음 사항을 고려하세요.

  • 요청 또는 한도 값 중 하나가 설정되고 다른 하나는 설정되지 않은 경우 둘 다 지정된 같은 값으로 설정됩니다.
  • 워크로드에 더 높은 처리량이 필요한 경우 사이드카 컨테이너에 더 많은 CPU를 할당합니다. CPU가 부족하면 I/O 제한이 발생합니다.
  • '0' 값을 사용하여 Standard 클러스터의 리소스 한도를 설정 해제할 수 있습니다. 예를 들어 gke-parallelstore/memory-limit: "0"는 사이드카 컨테이너의 메모리 한도를 삭제합니다. 이는 워크로드에 필요한 gke-parallelstore-sidecar 리소스 양을 결정할 수 없고 사이드카가 노드에서 사용 가능한 모든 리소스를 사용할 수 있게 하려는 경우에 유용합니다.

볼륨을 사용하는 워크로드 만들기

이 섹션에서는 앞에서 만든 PersistentVolumeClaim 리소스를 사용하는 포드를 만드는 방법에 대한 예시를 보여줍니다.

포드 여러 개에서 같은 PersistentVolumeClaim 리소스를 공유할 수 있습니다.

  1. 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
    
  2. 다음 명령어를 실행하여 매니페스트를 클러스터에 적용합니다.

      kubectl apply -f my-pod.yaml
    

    포드는 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 문서의 문제 해결 페이지를 참조하세요.

다음 단계