Skip to main content
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

SAN 워크로드를 위해 Google Cloud NetApp Volumes 구성

기여자 joan-ing

Google Cloud NetApp Volumes에서 iSCSI 프로토콜을 사용하여 블록 스토리지 볼륨을 프로비저닝하도록 Trident를 구성할 수 있습니다. SAN 볼륨은 google-cloud-netapp-volumes-san 스토리지 드라이버를 사용하여 Flex Unified 스토리지 풀에서 프로비저닝됩니다.

참고 이 드라이버는 블록 워크로드 전용이며 NAS 프로토콜을 지원하지 않습니다.
참고 google-cloud-netapp-volumes-san 백엔드는 iSCSI 블록 볼륨을 프로비저닝하는 데 필요합니다. google-cloud-netapp-volumes 백엔드는 NAS 프로토콜만 지원하며 SAN 워크로드에는 사용할 수 없습니다.

개요

Trident는 google-cloud-netapp-volumes-san 드라이버를 사용하여 Google Cloud NetApp Volumes SAN(iSCSI) 워크로드를 지원합니다.

SAN 볼륨은 Flex Unified 스토리지 풀에서 프로비저닝되어 iSCSI 블록 디바이스로 Kubernetes 노드에 제공됩니다.

이는 다음 환경에 적용됩니다.

  • Trident 26.02 이상

  • Google Kubernetes Engine(GKE) 또는 Red Hat OpenShift

  • Google Cloud NetApp Volumes Flex 통합 스토리지 풀

  • iSCSI 기반 워크로드

Flex Unified 스토리지 풀

Flex Unified 스토리지 풀은 iSCSI 프로토콜을 사용하여 블록 스토리지를 제공하며 SAN 프로비저닝에 필요합니다.

  • Flex Unified REGIONAL 풀이 지원됩니다.

  • Flex Unified ZONAL 풀은 Trident 26.02.1부터 지원됩니다.

  • SAN 워크로드의 경우 Flex 서비스 레벨만 지원됩니다.

Trident SAN 백엔드를 구성합니다

apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: gcnv-san
  namespace: trident
spec:
  version: 1
  storageDriverName: google-cloud-netapp-volumes-san
  projectNumber: "<project-number>"
  location: "<region>"
  sdkTimeout: "600"
  storage:
  - labels:
      cloud: gcp
      performance: flex
    network: "<vpc-network>"
    serviceLevel: Flex

StorageClass 생성

SAN 백엔드를 구성한 후 google-cloud-netapp-volumes-san 드라이버를 참조하는 StorageClass를 생성합니다.

파일 시스템 유형은 백엔드가 아닌 StorageClass에서 정의됩니다.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: gcnv-san
provisioner: csi.trident.netapp.io
parameters:
  backendType: "google-cloud-netapp-volumes-san"
  fsType: "ext4"
allowVolumeExpansion: true

지원되는 파일 시스템 유형:

  • ext4 (기본값)

  • ext3

  • xfs

참고 SAN 드라이버는 Flex 서비스 레벨만 지원하며 exportRule, unixPermissions, nasType, snapshotDir, `nfsMountOptions`와 같은 NAS 관련 백엔드 매개변수나 티어링 관련 설정은 사용하지 않습니다.

블록 볼륨 프로비저닝

ReadWriteOnce(RWO)

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: gcnv-san-rwo
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Gi
  storageClassName: gcnv-san

ReadWriteOncePod(RWOP)

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: gcnv-san-rwop
spec:
  accessModes:
    - ReadWriteOncePod
  resources:
    requests:
      storage: 100Gi
  storageClassName: gcnv-san

ReadOnlyMany (ROX)

ROX에서 흔히 사용되는 패턴은 기존 ReadWriteOnce 볼륨을 복제하고 복제본을 읽기 전용으로 마운트하는 것입니다.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: gcnv-san-rox
spec:
  accessModes:
    - ReadOnlyMany
  resources:
    requests:
      storage: 100Gi
  storageClassName: gcnv-san
  dataSource:
    kind: PersistentVolumeClaim
    name: gcnv-san-rwo

ReadWriteMany (RWX) — 원시 블록 전용

ReadWriteMany는 `volumeMode: Block`인 경우에만 지원됩니다.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: gcnv-san-raw-rwx
spec:
  accessModes:
    - ReadWriteMany
  volumeMode: Block
  resources:
    requests:
      storage: 100Gi
  storageClassName: gcnv-san

블록 볼륨 동작

블록 볼륨은 iSCSI LUN으로 프로비저닝되고 Kubernetes 노드에 블록 디바이스로 제공됩니다.

블록 볼륨:

  • iSCSI 프로토콜 사용

  • 파일 시스템 및 원시 블록 프레젠테이션 지원

  • Trident에 의해 연결되고 관리됩니다

  • 여러 Kubernetes 액세스 모드 지원

액세스 모드

Trident에서 프로비저닝한 블록 볼륨은 다음과 같은 액세스 모드를 지원합니다.

  • ReadWriteOnce (RWO)

  • ReadOnlyMany (ROX)

  • ReadWriteOncePod (RWOP)

  • ReadWriteMany (RWX), 다음과 같은 경우에만 지원됩니다 volumeMode: Block

volumeMode 동작

`volumeMode` 필드는 블록 볼륨이 노출되는 방식을 제어합니다.
  • Filesystem Trident가 볼륨을 포맷하고 마운트합니다.

  • Block Trident는 장치를 연결하고 이를 원시 블록 장치로 노출합니다.

지원되는 작업

`google-cloud-netapp-volumes-san` 드라이버를 사용하여 프로비저닝된 블록 볼륨은 다음을 지원합니다:
  • 생성

  • 삭제

  • 클론

  • 스냅샷

  • 크기 조정

  • 가져오기

추가 GiB 오버프로비저닝 동작

Google Cloud NetApp Volumes 블록 볼륨에는 내부 메타데이터 오버헤드가 포함됩니다. 이 오버헤드로 인해 커널에서 인식되는 장치 크기가 프로비저닝된 용량보다 작아집니다.

테스트 결과:

  • 초기 생성 시 약 300 KiB의 오버헤드가 발생합니다

  • 크기 조정 후 최대 약 107MiB의 오버헤드

Google Cloud NetApp Volumes는 GiB 단위의 할당만 허용하므로 Trident는 다음과 같은 방법으로 사용 가능한 장치 크기가 항상 PVC 요청을 충족하거나 초과하도록 합니다.

  • 요청된 크기를 다음 정수 GiB로 올림합니다

  • 추가 1 GiB 버퍼 추가

예:

  • PVC 요청: 100 GiB

  • Google Cloud NetApp Volumes에 프로비저닝된 크기: 101 GiB

  • 애플리케이션에 표시되는 사용 가능한 공간: 최소 100 GiB

Pod 예

파일 시스템 마운트 블록 볼륨(RWO)

apiVersion: v1
kind: Pod
metadata:
  name: app-rwo
spec:
  containers:
  - name: app
    image: ubuntu:22.04
    command: ["sleep", "infinity"]
    volumeMounts:
    - name: data
      mountPath: /mnt/data
  volumes:
  - name: data
    persistentVolumeClaim:
      claimName: gcnv-san-rwo

원시 블록 디바이스(RWX)

apiVersion: v1
kind: Pod
metadata:
  name: app-raw-rwx
spec:
  containers:
  - name: app
    image: ubuntu:22.04
    command: ["sleep", "infinity"]
    volumeDevices:
    - name: data
      devicePath: /dev/xda
  volumes:
  - name: data
    persistentVolumeClaim:
      claimName: gcnv-san-raw-rwx

연결 및 마운트 동작

Google Cloud NetApp Volumes에서 프로비저닝된 SAN 볼륨의 경우:

  • Trident는 Flex Unified 스토리지 풀에 LUN(논리 유닛 번호)을 생성합니다.

  • 게시 중에 Trident는 LUN을 노드별 호스트 그룹에 매핑합니다.

  • 노드 스테이징 중에 Trident는 다음을 수행합니다.

    • iSCSI 타겟에 로그인합니다

    • LUN을 검색합니다

    • 다중 경로를 구성합니다

  • `volumeMode: Filesystem`Trident는 필요한 경우 장치를 포맷하고 마운트합니다.

  • `volumeMode: Block`인 경우 Trident는 포맷이나 마운트 없이 장치를 연결하고 Pod에 직접 노출합니다.

참고 SAN 블록 볼륨은 분산 잠금 또는 쓰기 조정을 제공하지 않습니다. 여러 노드에서 블록 볼륨에 액세스할 때(ReadWriteMany 사용 시 volumeMode: Block) 애플리케이션 또는 파일 시스템이 동시성을 관리해야 합니다.