本文へジャンプします。

ニフクラ ユーザーガイド

クラウド トップ>Kubernetes Service Hatoba>ユーザーガイド>増設ディスクCSIドライバーで永続ボリュームを使用する

Kubernetes Service Hatoba:増設ディスクCSIドライバーで永続ボリュームを使用する

増設ディスクCSIドライバーで永続ボリュームを使用する方法を説明します。

ステップ1:クラスターへ増設ディスクCSIドライバーを導入

Kubernetesクラスターの増設ディスクCSIドライバーを設定します。なお、クラスター作成時など、既に「増設ディスクCSIドライバー」の項目を「有効」に設定済みの場合、この操作は不要です。

  1. クラスターの一覧画面で増設ディスクCSIドライバー設定をしたいクラスターを選択し、「選択したクラスターの操作」から「設定変更」を選択します。

    コンパネ-クラスター-設定変更

  2. 「01 基本設定」の「増設ディスクCSIドライバー」の項目を「有効」に設定します。

    コンパネ-クラスター-基本設定

  3. 「02 確認」タブで入力内容を確認し、「変更する」をクリックします。

    コンパネ-クラスター-確認

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

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

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

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

    $ kubectl apply -f secret.yaml
    secret/nifcloud-secret configured
  3. StorageClassを作成するために、下記のような storageclass.yaml を作成します。

    使用するディスクタイプは、type: で指定できます。設定可能な値はCreateDisk API仕様をご確認ください。

    ニフクラAPI (Kubernetes Service Hatoba: CreateDisk)

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: hatoba-disk-high-speed-flash-a
      annotations:
        storageclass.kubernetes.io/is-default-class: "true"
    provisioner: disk.csi.hatoba.nifcloud.com
    volumeBindingMode: WaitForFirstConsumer
    parameters:
      csi.storage.k8s.io/fstype: ext4
      type: high-speed-flash-a
    allowVolumeExpansion: true
  4. 作成した storageclass.yaml を適用します。

    $ kubectl apply -f storageclass.yaml
    storageclass.storage.k8s.io/hatoba-disk-high-speed-flash-a created
  5. 下記で適用したStorageClassを確認します。

    $ kubectl get storageclass
    NAME                                       PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
    hatoba-disk-high-speed-flash-a (default)   disk.csi.hatoba.nifcloud.com   Delete          WaitForFirstConsumer   true                   1m

永続ボリュームの作成

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

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

    下記のような statefulset.yaml を作成します。StatefulSetの volumeClaimTemplates: にて、作成済みのStorageClassを指定します。また、storage: でディスクサイズを指定しています。storage: に設定可能な値はCreateDisk API仕様をご確認ください。

    ニフクラAPI (Kubernetes Service Hatoba: CreateDisk)

    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: hatoba-disk-high-speed-flash-a
          resources:
            requests:
              storage: 100Gi
  2. 作成した statefulset.yml を適用します。

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

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

    $ kubectl get pv
    NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM               STORAGECLASS                     REASON   AGE
    pvc-5fdeaba2-943f-41b7-962a-189611e4c48e   100Gi      RWO            Delete           Bound    default/www-web-0   hatoba-disk-high-speed-flash-a            10m
    pvc-c0e1197c-87f6-42bb-bd0e-eff238b41025   100Gi      RWO            Delete           Bound    default/www-web-1   hatoba-disk-high-speed-flash-a            7m54s
  4. 作成したPodにアクセスすると、指定したパスにディスクがマウントされてることが確認できます。

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

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