本文へジャンプします。

ニフクラ ユーザーガイド

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

Kubernetes Service 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-subdir-external-provisionerを作成するnamespace default

ステップ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 Subdir External Provisioner設定

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

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

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

    $ helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-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-subdir-external-provisionerを作成したい場合は、yamlの書き換えが必要なことに注意してください。

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

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

    ---
    kind: Deployment
    apiVersion: apps/v1
    metadata:
      name: nfs-client-provisioner
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nfs-client-provisioner
      strategy:
        type: Recreate
      template:
        metadata:
          labels:
            app: nfs-client-provisioner
        spec:
          serviceAccountName: nfs-client-provisioner
          containers:
            - name: nfs-client-provisioner
              image: k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2
              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-800082f0-554b-42d4-85b5-919593428f2c   1Mi        RWX            Delete           Bound    default/test-claim   nifcloud-nas-nfs            6m27s
  • ※本ページ記載の金額は、すべて税抜表示です。
  • ※本ページ記載の他社製品名および会社名などは、各社の商標または登録商標です。
  • ※本ページの内容は、2021年9月17日時点の情報です。

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