本文へジャンプします。

ニフクラ ユーザーガイド

クラウド トップ>ユーザーガイド>Hatoba(β)>ニフクラNASを使った永続化ボリューム

Hatoba(β):ニフクラNASを使った永続化ボリューム

ニフクラNASで作成したNAS領域(NFS)を永続化ボリュームとして使用する方法を説明します。

今回作成する環境は、下記の設定とします。

設定項目 設定値
プライベートLANのIP範囲 192.168.0.0/16
クラスターのプライベートIP範囲 192.168.1.0/24
NASのプライベートIP 192.168.100.1
nfs-client-provisionerを作成するnamespace default

※この手順は、2019/5/28以降に作成されたクラスターでのみ利用可能です。

ステップ1:NAS領域(NFS)の作成

  1. ニフクラNASでNAS領域(NFS)を作成します。今回はHatobaクラスターと同一プライベートLAN上に作成します。

    NAS領域の作成

ステップ2:NASファイアウォールルール設定

  1. NAS領域のNASファイアウォール上、クラスターの各ノードからの接続を許可します。

    NASファイアウォールルール設定

ステップ3:ファイアウォールルール設定

  1. Hatoba側のファイアウォールルールを設定します。NASへの接続(NFS) に記載のルールを解放する必要があります。

    下記のように指定のOUTルールを追加するか、OUTルールを設定しないようにすれば、疎通できるようになります。

    ファイアウォールルール設定

ステップ4:Kubernetes NFS-Client Provisioner設定

Kubernetes NFS-Client Provisioner の手順を参考に、クラスターへデプロイします。

Helmを使う場合
  1. nfs-client-provisioner インストール

    NASのIPなどの設定値は環境に合わせて適宜修正してください。

    $ helm install stable/nfs-client-provisioner --set nfs.server=192.168.100.1 --set nfs.path=/ --set storageClass.name=nifcloud-nas-nfs
Helmを使わない場合

Helmを使わずに適用する手順です。

  1. RBAC作成

    RBACを作成します。今回は default namespaceに適用しますが、別のnamespaceにnfs-client-provisionerを作成したい場合は、yamlの書き換えが必要なことに注意してください。

    $ wget https://raw.githubusercontent.com/kubernetes-incubator/external-storage/master/nfs-client/deploy/rbac.yaml
    $ kubectl create -f rbac.yaml
  2. Deployment用 yaml作成

    下記のファイルを deployment.yml として作成します。NASのIPなどは環境に合わせて修正してください。

    ---
    kind: Deployment
    apiVersion: extensions/v1beta1
    metadata:
      name: nfs-client-provisioner
    spec:
      replicas: 1
      strategy:
        type: Recreate
      template:
        metadata:
          labels:
            app: nfs-client-provisioner
        spec:
          serviceAccountName: nfs-client-provisioner
          containers:
            - name: nfs-client-provisioner
              image: quay.io/external_storage/nfs-client-provisioner:latest
              volumeMounts:
                - name: nfs-client-root
                  mountPath: /persistentvolumes
              env:
                - name: PROVISIONER_NAME
                  value: nifcloud-nas-nfs
                - name: NFS_SERVER
                  value: 192.168.100.1
                - name: NFS_PATH
                  value: /
          volumes:
            - name: nfs-client-root
              nfs:
                server: 192.168.100.1
                path: /
  3. StorageClass用 yaml作成

    StorageClassを作成するymlを storageclass.yml として用意します。設定値は必要に応じて書き換えてください。

    ---
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      annotations:
        storageclass.kubernetes.io/is-default-class: "true"
      name: nifcloud-nas-nfs
    provisioner: nifcloud-nas-nfs
    parameters:
      archiveOnDelete: "false"
  4. Deployment/StorageClass作成

    上記で作成した deployment.ymlstorageclass.yml を適用します。

    $ kubectl create -f deployment.yml
    $ kubectl create -f storageclass.yml

ステップ5:永続化ボリューム作成

  1. PVC用 yaml作成

    下記のような pvc.yml を作成します。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: test-claim
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 1Mi
      storageClassName: nifcloud-nas-nfs
  2. PVC作成

    上記の pvc.yml を適用します。

    $ kubectl create -f pvc.yml
  3. 確認

    下記のように永続化ボリュームが作成出来ていることが確認できます。

    $ kubectl get pv
    NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                STORAGECLASS       REASON   AGE
    pvc-835c4157-7bbc-11e9-9142-e817fc08abf3   1Mi        RWX            Delete           Bound    default/test-claim   nifcloud-nas-nfs            1m

推奨画面サイズ 1024×768 以上