NASボリューム CSI

Prev Next

VPC環境で利用できます。

実行中のコンテナにファイルを新たに追加する場合、それらファイルはプロセスが終了するか、Kubernetes Liveness Probeのステータスチェックに失敗してコンテナが再起動する際にすべて削除されます。このとき、NASボリュームを使用して新たに追加されたファイルが、プロセスの終了またはコンテナの再起動の後にも維持されるように設定します。

Kubernetes NASボリュームコンテナをリリース時、PersistentVolumeClaim(PVC)を作成して追加できます。

NAVERクラウドプラットフォームの Ncloud Kubernetes Serviceは、ボリュームドライバとして Container Storage Interface(CSI)を提供します。このドライバは Kubernetesと連携して NASボリュームの作成、削除、リサイズなどの操作をサポートします。

サポートするバージョンと容量

サポートするバージョンおよび容量情報を説明します。

サポートされるバージョン

NAVERクラウドプラットフォームで提供する NAS CSIバージョンと互換 Kubernetesバージョンは、次の通りです。

Ncloud NAS CSI Driver\Kubernetes Version 1.18 1.19 1.20 1.21 1.22 1.23+
v1.0.x サポート サポート サポート サポート サポート サポート
v2.0.x 未サポート 未サポート 未サポート 未サポート サポート サポート
v2.1.x 未サポート 未サポート 未サポート 未サポート サポート サポート
v2.2.x 未サポート 未サポート 未サポート 未サポート サポート サポート

Kubernetesバージョンでサポートするストレージサービスは、次の通りです。

Service\Kubernetes Version 1.18+ 1.22+
ボリューム作成 サポート サポート
ボリューム削除 サポート サポート
ボリューム拡張(リサイズ) サポート サポート
サーバにボリューム割り当て サポート サポート
サーバにボリューム解除 サポート サポート
スナップショット作成 未サポート 未サポート
スナップショットの削除 未サポート 未サポート
サブディレクトリ作成 未サポート サポート

割り当て可能な容量

Kubernetes NASボリュームは CSIを通じて100GB単位で容量を割り当てられます。ボリュームの容量を別途定義しない場合、デフォルト値の500GBで NASボリュームを作成します。割り当て可能な最小容量と最大容量は、次の通りです。

  • 最小: 500 GB
  • 最大: 10,000 GB

NAS CSIドライバーインストール(既存の未インストールクラスタ用)

NAS CSIドライバは、Kubernetesをインストールする際にデフォルトでリリースします。この節は既存の未インストールクラスタで NAS CSIをインストールする方法について説明します。NAS CSIが既にインストールされている場合は、以下のタスクを実行しません。

NAS CSI Driverリリース

以下のファイルは最新の安定バージョンを指します。インストール中に問題が発生する場合、kubectl apply -fコマンドを再実行して漏れリソースが再反映できるようにします。

  • 韓国リージョン
# kubernetes version >= 1.22
$ kubectl --kubeconfig=$KUBE_CONFIG apply -f https://kr.object.ncloudstorage.com/nks-download/nas-csi/pub/kr/v2.2.0/nas-csi.yaml

# kubernetes version < 1.22
$ kubectl --kubeconfig=$KUBE_CONFIG apply -f https://kr.object.ncloudstorage.com/nks-download/nas-csi/pub/kr/v1.0.2/nas-csi.yaml
  • シンガポールリージョン
# kubernetes version >= 1.22
$ kubectl --kubeconfig=$KUBE_CONFIG apply -f https://kr.object.ncloudstorage.com/nks-download/nas-csi/pub/sgn/v2.2.0/nas-csi.yaml

# kubernetes version < 1.22
$ kubectl --kubeconfig=$KUBE_CONFIG apply -f https://kr.object.ncloudstorage.com/nks-download/nas-csi/pub/sgn/v1.0.2/nas-csi.yaml
  • 日本リージョン
# kubernetes version >= 1.22
$ kubectl --kubeconfig=$KUBE_CONFIG apply -f https://kr.object.ncloudstorage.com/nks-download/nas-csi/pub/jpn/v2.2.0/nas-csi.yaml

NAS CSIドライバの詳細

StorageClass

StorageClassは、各ストレージのポリシーとタイプを設定したオブジェクトです。NAVERクラウドプラットフォームは NASボリュームを使用する StorageClassを提供します。
NASボリュームの StorageClassオブジェクトを確認するには、nks-nas-csiという名前を持つオブジェクトを確認します。以下のように表示されます。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: nks-nas-csi
mountOptions:
- hard
- nolock
- nfsvers=3
parameters:
  csi.storage.k8s.io/provisioner-secret-name: mount-options
  csi.storage.k8s.io/provisioner-secret-namespace: kube-system
provisioner: nas.csi.ncloud.com
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
  • volumeBindingMode: ボリュームバインディングと動的プロビジョニングが動作する時点を設定します。デフォルト値は Immediateです。
モード 説明
Immediate PVCが作成される時点に動作
WaitForFirstConsumer Podが作成される時点に動作
  • reclaimPolicy: 使用が終わった PVCを削除する際に、使用中であった PersistentVolumeを再確保または削除するようにポリシーを設定します。デフォルト値は Deleteです。
ポリシー 説明
Retain PVCを削除する際に使用中であった PVは再使用できるステータスに変更され、NASボリューム内部のデータを維持
Delete PVCを削除する際に使用中であった PVを一緒に削除し、NASボリュームを返却
  • allowVolumeExpansion: 値を trueに設定して PersistentVolumeClaimを拡張できます。
参考

Retainポリシーを通じて再確保した NASボリュームは、NAVERクラウドプラットフォームコンソールや APIを通じて返却できます。

  • parameters.subDir: 1つの NASボリューム内にサブディレクトリを作成し、複数の PVCが同じ NASボリュームを共有できるように、NFS共有パス下のサブディレクトリパスを設定できます。指定しない場合、PV名でサブディレクトリが作成されます。[NAS CSI v2.2.0+]

parameters.subDir 値に以下のパターンを使用すると、PVC/PVメタデータに自動的に置換されます。

パターン 置換される値
${pvc.metadata.name} PVC名
${pvc.metadata.namespace} PVCの名前空間
${pv.metadata.name} PV名
注意

parameters.subDir 値に **#**文字は使用できません。

  • parameters.deleteOnlySubdir: PVCを削除する際、サブディレクトリのみ削除有無を設定できます。デフォルト値は falseです。[NAS CSI v2.2.0+]
参考

parameters.deleteOnlySubdirは reclaimPolicyが Deleteの場合にのみ有効です。
NASボリュームとサブディレクトリをすべて保持するには、StorageClassの reclaimPolicyを Retainに設定してください。

Default Storage Classの変更

作成した StorageClassオブジェクトのデフォルト Storage Classの内容を変更するには、Changing the default StorageClassをご参照ください。

CSI Controller

CSI Controllerとは、ボリュームの作成、削除、割り当て、割り当て解除、スナップショットなどの各種制御と管理を担当するインターフェースです。

NAS CSI Controllerを確認するには、以下のコマンドを通じて名前空間 kube-system内の関連 Podを確認します。

$ kubectl --kubeconfig $KUBE_CONFIG get pods -n kube-system -l app=nks-nas-csi-controller

CSI Node

CSIノードは、Kubernetesのワーカーノードごとに1つずつ動作するノードであり、ボリュームのフォーマット、マウント、アンマウントなどの動作を担当します。

NAS CSI Nodeを確認するには、以下のコマンドを通じて名前空間 kube-system内の関連 Podを確認します。

$ kubectl --kubeconfig $KUBE_CONFIG  get pods -n kube-system -l app=nks-nas-csi-node

NAS-CSIドライバ使用

NAS-CSIドライバー使用に関するユースケースは、NASボリューム CSI のユースケースをご参照ください。