Anthos(GKE Enterprise):増設ディスクCSIドライバーで永続ボリュームを使用する
増設ディスクCSIドライバーとして nifcloud-additional-storage-csi-driverを組み込み、永続ボリュームを使用する方法を説明します。
ステップ1:増設ディスクCSIドライバーの設定
増設ディスクCSIドライバーに必要な各種yamlを作成します。
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>
作成した
secret.yaml
を適用します。$ kubectl apply -f secret.yaml secret/nifcloud-secret configured
Helmをインストールします。Helm: インストール手順を参考にしてください。
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
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
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
作成した
storageclass.yaml
を適用します。$ kubectl apply -f storageclass.yaml storageclass.storage.k8s.io/nifcloud-standard-flash-a created
下記で適用した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ドライバーを用いて、ディスクがマウントされるサンプルアプリケーションを作成します。
永続ボリュームを使う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
作成した
statefulset.yml
を適用します。適用すると、設定内容に従ってディスクが作成されます。ディスクの作成に伴う料金はクラスターとは別に発生するのでご注意ください。
$ kubectl apply -f statefulset.yaml statefulset.apps/web configured
下記で作成したディスクの情報が確認できます。
$ 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
作成した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