--- title: "ブロックストレージ CSI のユースケース" slug: "k8s-k8sexamples-bscsi" updated: 2026-09-17T09:31:49Z published: 2026-09-17T09:31:49Z canonical: "guide.ncloud-docs.com/k8s-k8sexamples-bscsi" stale: true --- > ## Documentation Index > Fetch the complete documentation index at: https://guide.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # ブロックストレージ CSI のユースケース VPC環境で利用できます。 [ブロックストレージ CSI](/docs/ja/k8s-k8suse-bscsi)で説明した CSIの使い方を基に様々な方式でボリュームを割り当てるユースケースです。 ## Podに複数のボリュームを割り当て 新規ブロックストレージを2つ作成して Podにマウントし、各ボリュームに PersistentVolumeClaimをリクエストするユースケースは次の通りです。 ``` apiVersion: v1 kind: PersistentVolumeClaim metadata: name: csi-pod-1 spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: nks-block-storage --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: csi-pod-2 spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: nks-block-storage --- kind: Pod apiVersion: v1 metadata: name: my-csi-app spec: containers: - name: my-csi-app image: busybox volumeMounts: - mountPath: "/data/pod-1/" name: my-volume-1 - mountPath: "/data/pod-2/" name: my-volume-2 command: [ "sleep", "1000000" ] volumes: - name: my-volume-1 persistentVolumeClaim: claimName: csi-pod-1 - name: my-volume-2 persistentVolumeClaim: claimName: csi-pod-2 ``` ## Deploymentで PersistentVolumeを利用 PersistentVolumeClaimを作成して新しいボリュームの作成をリクエストする際、Deploymentの templateで claimNameを指定することで、作成されたボリュームをマウントするユースケースは、次の通りです。 ``` apiVersion: v1 kind: PersistentVolumeClaim metadata: name: csi-deployment-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: nks-block-storage --- apiVersion: apps/v1 kind: Deployment metadata: name: my-csi-app spec: selector: matchLabels: app: my-csi-app replicas: 1 template: metadata: labels: app: my-csi-app spec: containers: - name: my-frontend image: busybox volumeMounts: - mountPath: "/data" name: my-volume command: [ "sleep", "1000000" ] volumes: - name: my-volume persistentVolumeClaim: claimName: csi-deployment-pvc ``` ## StatefulSetで PersistentVolumeを利用 StatefulSetで volumeClaimTemplatesを定義し、各 replicaごとに新しい PersistentVolumeClaimを自動作成するユースケースは、次の通りです。 ``` apiVersion: apps/v1 kind: StatefulSet metadata: name: my-csi-app spec: serviceName: my-csi-app selector: matchLabels: app: my-csi-app replicas: 1 template: metadata: labels: app: my-csi-app spec: containers: - name: my-frontend image: busybox volumeMounts: - mountPath: "/data" name: my-volume command: [ "sleep", "1000000" ] volumeClaimTemplates: - metadata: name: my-volume spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 10Gi ``` ## 特定の Zoneにボリュームを割り当てる 注意 allowedTopologiesは Kubernetes 1.33バージョン以上で使用できます。 StorageClassの `allowedTopologies` 設定により、Multi-Zoneクラスタ環境においてボリュームが作成される Zoneを制限することができます。下記の例として使用した yamlコードを通じて、許可する Zoneを指定してブロックストレージボリュームを作成できます。 ``` kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: nks-block-storage-zone provisioner: blk.csi.ncloud.com volumeBindingMode: WaitForFirstConsumer reclaimPolicy: Delete allowVolumeExpansion: true parameters: type: CB1 allowedTopologies: - matchLabelExpressions: - key: topology.kubernetes.io/zone values: - "2" - "3" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: block-csi-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: nks-block-storage-zone --- kind: Pod apiVersion: v1 metadata: name: my-csi-app spec: containers: - name: my-frontend image: busybox volumeMounts: - mountPath: "/data" name: my-volume command: [ "sleep", "1000000" ] volumes: - name: my-volume persistentVolumeClaim: claimName: block-csi-pvc ``` | フィールド | 説明 | | --- | --- | | allowedTopologies.matchLabelExpressions.key | `topology.kubernetes.io/zone`を入力 | | allowedTopologies.matchLabelExpressions.values | ボリューム作成を許可する Zone番号入力(複数の Zoneを指定可能) | クラスタで使用可能な Zone番号を確認するには、以下のコマンドを実行します。 ``` kubectl get nodes -L topology.kubernetes.io/zone ``` 参考 `volumeBindingMode`が `WaitForFirstConsumer`の場合、Podがスケジューリングされたノードの Zoneが `allowedTopologies`に含まれている必要があります。当該 Zoneにノードが存在しない場合、Podは Pendingステータスで待機することがあります。 ## XFSファイルシステムタイプで PersistentVolumeを利用 参考 XFSファイルシステムは Kubernetes 1.33バージョン以上で使用できます。 NAVERクラウドプラットフォームは NAVIX環境で XFSファイルシステムの使用をお勧めします。次の例の StorageClassで XFSタイプのファイルシステムボリュームを作成できます。 ``` kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: nks-block-storage-xfs provisioner: blk.csi.ncloud.com volumeBindingMode: WaitForFirstConsumer reclaimPolicy: Delete allowVolumeExpansion: true parameters: type: CB1 csi.storage.k8s.io/fstype: xfs mountOptions: - nouuid --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: block-csi-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: nks-block-storage-xfs --- kind: Pod apiVersion: v1 metadata: name: my-csi-app spec: containers: - name: my-frontend image: busybox volumeMounts: - mountPath: "/data" name: my-volume command: [ "sleep", "1000000" ] volumes: - name: my-volume persistentVolumeClaim: claimName: block-csi-pvc ``` | フィールド | 説明 | | --- | --- | | `parameters.csi.storage.k8s.io/fstype` | XFS入力 | | `mountOptions` | マウントオプションを指定。XFSファイルシステムは `nouuid` オプションを使用して UUID重複問題を予防 |