NASボリューム CSI
    • PDF

    NASボリューム CSI

    • PDF

    Article Summary

    最新のコンテンツが反映されていません。早急にアップデート内容をご提供できるよう努めております。最新のコンテンツ内容は韓国語ページをご参照ください。

    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 Version1.181.191.201.211.221.23
    v1.0.xサポートサポートサポートサポートサポートサポート
    v2.0.x未サポート未サポート未サポート未サポートサポートサポート

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

    Service\Kubernetes Version1.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です。
    モード説明
    ImmediatePVCが作成される時点に動作
    WaitForFirstConsumerPodが作成される時点に動作
    • reclaimPolicy: 使用が終わった PVCを削除する際に、使用中であった PersistentVolumeを再確保または削除するようにポリシーを設定します。デフォルト値は Deleteです。
    ポリシー説明
    RetainPVCを削除する際に使用中の PVは再使用できる状態に変更し、NASボリューム内部のデータを維持
    DeletePVCを削除する際に使用中の 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をサポートします。
    モード説明
    ReadWriteOnce1つのノードでボリュームを読み取り-書き込みでマウント
    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ボリュームを例に挙げて説明します。

    1. 以下の 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
    
    1. 以下のコマンドを実行して 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を入力

        RegionZoneZoneNo
        韓国KR-12
        韓国KR-23
        シンガポールSGN-474
        シンガポールSGN-575
        日本JPN-484
        日本JPN-585

    この記事は役に立ちましたか?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.