本文へジャンプします。

【重要なお知らせ】サービス統合に基づくサービス名称の読み替えのお願い(2024年4月1日)

2024年4月1日をもって、「ニフクラ」は、「FJcloud-V」に統合し、名称を変更しました。
「ニフクラ」「NIFCLOUD」「nifcloud」は、「FJcloud-V」に読み替えていただきますようお願いいたします。

ニフクラ ユーザーガイド

クラウド トップ>Catalog>ユーザーガイド>Anthos(GKE Enterprise) 増設ディスクCSIドライバーで永続ボリュームを使用する

Anthos(GKE Enterprise):増設ディスクCSIドライバーで永続ボリュームを使用する

増設ディスクCSIドライバーとして nifcloud-additional-storage-csi-driverを組み込み、永続ボリュームを使用する方法を説明します。

ステップ1:増設ディスクCSIドライバーの設定

増設ディスクCSIドライバーに必要な各種yamlを作成します。

  1. Secretを作成するために、下記のような secret.yaml を作成します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: nifcloud-additional-storage-csi-secret
      namespace: kube-system
    stringData:
      access_key_id: <NIFCLOUD Access Key ID>
      secret_access_key: <NIFCLOUD Secret Access Key>
  2. 作成した secret.yaml を適用します。

    $ kubectl apply -f secret.yaml
    secret/nifcloud-secret configured
  3. Helmをインストールします。Helm: インストール手順を参考にしてください。

  4. Helmリポジトリに nifcloud-additional-storage-csi-driver を追加します。

    $ helm repo add nifcloud-additional-storage-csi-driver https://nifcloud.github.io/nifcloud-additional-storage-csi-driver/
    $ helm repo update
  5. HelmチャートをKubernetesクラスターにデプロイします。チャートに設定可能な値はnifcloud-additional-storage-csi-driver: valuesを参考にしてください。

    $ helm upgrade --install nifcloud-additional-storage-csi-driver nifcloud-additional-storage-csi-driver/nifcloud-additional-storage-csi-driver \
      --namespace kube-system \
      --set nifcloud.region=<REGION> \
      --set nifcloud.accessKeyId.secretName=nifcloud-additional-storage-csi-secret \
      --set nifcloud.accessKeyId.key=access_key_id \
      --set nifcloud.secretAccessKey.secretName=nifcloud-additional-storage-csi-secret \
      --set nifcloud.secretAccessKey.key=secret_access_key
  6. StorageClassを作成するために、下記のような storageclass.yaml を作成します。type: でディスクタイプを指定しています。type: に設定可能な値はnifcloud-additional-storage-csi-driver: typeをご確認ください。

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: nifcloud-standard-flash-a
      annotations:
        storageclass.kubernetes.io/is-default-class: "true"
    provisioner: additional-storage.csi.nifcloud.com
    parameters:
      type: standard-flash-a
    allowVolumeExpansion: true
  7. 作成した storageclass.yaml を適用します。

    $ kubectl apply -f storageclass.yaml
    storageclass.storage.k8s.io/nifcloud-standard-flash-a created
  8. 下記で適用したStorageClassを確認します。

    $ kubectl get storageclass
    NAME                                       PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
    nifcloud-standard-flash-a (default)   additional-storage.csi.nifcloud.com   Delete          Immediate   true                   1m

ステップ2:永続ボリュームの作成

今回はStatefulSetを作成し、増設ディスクCSIドライバーを用いて、ディスクがマウントされるサンプルアプリケーションを作成します。

  1. 永続ボリュームを使うStatefulSetのyaml作成

    下記のような statefulset.yaml を作成します。StatefulSetの volumeClaimTemplates: にて、作成済みのStorageClassを指定します。storage: でディスクサイズを指定しています。

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: web
    spec:
      serviceName: "nginx"
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: k8s.gcr.io/nginx-slim:0.8
            ports:
            - containerPort: 80
              name: web
            volumeMounts:
            - name: www
              mountPath: /usr/share/nginx/html
      volumeClaimTemplates:
      - metadata:
          name: www
        spec:
          accessModes: [ "ReadWriteOnce" ]
          storageClassName: nifcloud-standard-flash-a
          resources:
            requests:
              storage: 100Gi
  2. 作成した statefulset.yml を適用します。

    適用すると、設定内容に従ってディスクが作成されます。ディスクの作成に伴う料金はクラスターとは別に発生するのでご注意ください。

    $ kubectl apply -f statefulset.yaml
    statefulset.apps/web configured
  3. 下記で作成したディスクの情報が確認できます。

    $ kubectl get pv | grep nifcloud-standard-flash-a
    pvc-3a12afaa-fa38-467e-90a9-39c1d2f2331c   100Gi      RWO            Delete           Bound       default/www-web-1   nifcloud-standard-flash-a            7h16m
    pvc-8c6a6d97-f027-47da-a187-3dac22a1b86c   100Gi      RWO            Delete           Bound       default/www-web-0   nifcloud-standard-flash-a            7h17m
  4. 作成したPodにアクセスすると、指定したパスにディスクがマウントされてることが確認できます。

    $ kubectl exec -it web-0 -- df -h
    Filesystem      Size  Used Avail Use% Mounted on
    overlay          98G  1.8G   92G   2% /
    tmpfs            64M     0   64M   0% /dev
    /dev/sda4        27G  3.9G   22G  16% /etc/hosts
    /dev/sdb1        98G  1.8G   92G   2% /etc/hostname
    shm              64M     0   64M   0% /dev/shm
    /dev/sdc         98G  2.1M   98G   1% /usr/share/nginx/html
    tmpfs            13G   12K   13G   1% /run/secrets/kubernetes.io/serviceaccount
    tmpfs           7.8G     0  7.8G   0% /proc/acpi
    tmpfs           7.8G     0  7.8G   0% /proc/scsi
    tmpfs           7.8G     0  7.8G   0% /sys/firmware
  • ※本ページ記載の金額は、すべて税抜表示です。
  • ※本ページ記載の他社製品名および会社名などは、各社の商標または登録商標です。
  • ※本ページの内容は、2024年5月14日時点の情報です。

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