- 印刷する
- PDF
NASボリューム CSI
- 印刷する
- PDF
最新のコンテンツが反映されていません。早急にアップデート内容をご提供できるよう努めております。最新のコンテンツ内容は韓国語ページをご参照ください。
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 | 未サポート | 未サポート | 未サポート | 未サポート | サポート | サポート |
Kubernetesバージョンでサポートするストレージサービスは、次の通りです。
Service\Kubernetes Version | 1.18+ |
---|---|
ボリューム作成 | サポート |
ボリューム削除 | サポート |
ボリューム拡張(リサイズ) | サポート |
サーバにボリューム割り当て | サポート |
サーバにボリューム解除 | サポート |
スナップショット作成 | 未サポート |
スナップショット削除 | 未サポート |
割り当て可能な容量
Kubernetes NASボリュームは CSIを通じて100GB単位で容量を割り当てます。ボリュームの容量を別途定義しない場合、デフォルト値の500GBで NASボリュームを作成します。割り当て可能な最小容量と最大容量は、次の通りです。
- 最小: 500GB
- 最大: 10,000GB
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.0.1/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.0.1/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.0.1/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
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を通じて返却できます。
Default Storage Classの変更
作成した StorageClassオブジェクトの基本 Storage Classの内容を変更するには、Changing the default StorageClassをご参照ください。
CSI Controller
CSI Controllerは、ボリュームの作成、削除、割り当て、割り当て解除、スナップショットなどの各種制御と管理を担当するインタフェースです。
NAS CSI Controllerを確認するには、以下のコマンドを通じて Namespace kube-system
内の Deploymentオブジェクトを確認してください。
$ kubectl --kubeconfig $KUBE_CONFIG get deployment -n kube-system
CSI Node
CSIノードは、Kubernetesのワーカーノードごとに1つずつ動作するノードであり、ボリュームのフォーマット、マウント、アンマウントなどの動作を担当します。
NAS CSI Nodeを確認するには、以下のコマンドを通じて Namespace kube-system
内の DaemonSetリソースを確認してください。
$ kubectl --kubeconfig $KUBE_CONFIG get daemonset -n kube-system
CSIドライバー使用
NASボリューム追加
NAS CSIドライバーを用いて NASボリュームを追加するには、以下の yamlコードを通じて PersistentVolumeClaim(PVC)をリクエストしてください。NAS CSIドライバーがその PVCを確認して必要な PersistentVolume(PV)を自動で作成します。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nas-csi-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 500Gi
storageClassName: nks-nas-csi
AccessMode
: NAS CSIでは様々な AccessModeをサポートします。
モード | 説明 |
---|---|
ReadWriteOnce | 1つのノードでボリュームを読み取り-書き込みでマウント |
ReadOnlyMany | 複数のノードでボリュームを読み取り専用でマウント |
ReadWriteMany | 複数のノードでボリュームを読み取り-書き込みでマウント |
Resources
: 作成するストレージの容量です。デフォルト値は500GBであり、最小500GBから最大10,000GBの間で100GB単位でGi
を使って入力できます。
Podに単一新規ボリュームを割り当て
新しい NASボリュームを作成してマウントするには、以下の yamlコードを使用してください。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nas-csi-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 500Gi
storageClassName: nks-nas-csi
---
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: nas-csi-pvc
Pod
spec.container
:volumeMounts
にマウントするストレージ名を入力し、mountPath
にマウントパスを入力します。spec.volumes
: コンテナにマウントされるストレージを定義するために作成されたPersistentVolumeClaim
の名前をpersistentVolumeClaim.claimName
に入力します。
NASボリュームを Podにマウントした状態でクラスタを削除すると、NASボリュームは自動で削除されません。 この場合は NAVERクラウドプラットフォームコンソールや APIを通じて返却する必要があります。
既に作成済みの NASボリュームを Podにマウント
NASで、NFSプロトコルでボリュームを作成します。
NASボリュームが作成されたら、マウント情報の IPアドレスと PATH情報を確認します。
既に作成済みの NASボリュームを使用して StorageClassを作成した後 Podにマウントするには、以下の yamlコードを使用してください。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: static-nks-nas-csi
provisioner: nas.csi.ncloud.com
parameters:
server: __NAS_IP__
share: __NAS_PATH__
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
mountOptions:
- hard
- nolock
- nfsvers=3
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: static-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 500Gi
storageClassName: static-nks-nas-csi
---
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: static-pvc
kind: StorageClass
既に存在する NASボリュームを Kubernetesクラスタで使用できるように情報を入力します。provisioner
: NAVERクラウドプラットフォーム NASボリュームの Provisionerであるnas.csi.ncloud.com
を入力します。parameters.server
: 既に作成した NASボリュームのマウント情報の IPアドレスを入力します。parameters.path
: 既に作成した NASボリュームのマウント情報の PATHを入力します。reclaimPolicy
: 使用が終了した PVCが削除される時に NASボリュームが削除されないように必ずRetain
で設定します。
kind: PersistentVolumeClaim
作成した PersistentVolumeとバインドするPersistentVolumeClaim
を作成します。resources.storage
: 必須入力項目として、既に作成済みの NASボリュームの容量を入力します。ただし、PVCのサイズは NASボリュームの容量により決まるため、入力する値に意味はありません。storageClassname
: NASストレージクラス名のstatic-nks-nas-csi
を入力します。volumeName
: 作成したPersistentVolume
の名前を入力します。
kind: Pod
ボリュームリクエストのPersistentVolumeClaim
を指定して使用するボリュームをマウントします。volumes.persistentVolumeClaim.claimName
: 指定するPersistentVolumeClaim
の名前を入力します。
PersistentVolumeClaimの削除
Kubernetesの PersistentVolumeClaim
は、Deployment、StatefulSet、ReplicaSet、Podなどリクエストされたリソースを削除しても一緒に削除されません。そのため、削除するには別途コマンドが必要です。
PersistentVolumeClaim
を確認して削除するには、以下のコマンドをそれぞれ使用してください。
- PVCの照会
$ kubectl --kubeconfig $KUBE_CONFIG get pvc
- PVCの削除
$ kubectl --kubeconfig $KUBE_CONFIG delete pvc static-pvc
返却保護を設定している NASボリュームの場合、PersistentVolumeClaimは削除しますが、実際のボリュームは保持します。実際の NASボリュームは NASコンソールで削除します。
ボリュームリサイズ
NAVERクラウドプラットフォームの NASボリュームは、既に作成済みのボリュームに対するリサイズ機能を提供します。
NASボリュームをリサイズする方法は、次の通りです。以下では、500GB容量の NASボリュームを例に挙げて説明します。
- 以下の yamlコードを使用して500GB容量の新規ブロックストレージボリュームの作成をリクエストします。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: csi-deployment-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 500Gi
storageClassName: nks-nas-csi
---
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
- 以下のコマンドを実行して
PersistentVolumeClaim
の Volume Request容量を500GBから600GBに調整します。
kubectl --kubeconfig $KUBE_CONFIG patch pvc csi-deployment-pvc -p '{"spec":{"resources":{"requests":{"storage":"600Gi"}}}}'
Zone番号が明示された StorageClassを使用
Zone番号が明示された StorageClassは NAS CSIのバージョン2.0.1以上から使用できます。
NAS CSIドライバーは Kubernetesと同じ Zoneに NASボリュームを作成します。しかし StorageClassが zoneNoを明示して同じ Regionの特定 Zoneに NASボリュームが作成できます。下記の例として使用した yamlコードを通じて ZoneNoを指定して NASボリュームが作成できます。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nks-nas-csi-kr-2
mountOptions:
- hard
- nolock
- nfsvers=3
provisioner: nas.csi.ncloud.com
parameters:
zoneNo: "3"
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nas-csi-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 500Gi
storageClassName: nks-nas-csi-kr-2
---
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: nas-csi-pvc
kind: StorageClass
parameters.zoneNo
: NASボリュームを作成する ZoneNoを入力Region Zone ZoneNo 韓国 KR-1 2 韓国 KR-2 3 シンガポール SGN-4 74 シンガポール SGN-5 75 日本 JPN-4 84 日本 JPN-5 85