2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[IBMCloud] IKS(Kubernetes)へのFile Storageの接続

Last updated at Posted at 2024-07-14

目的

IKSへFileStorage for VPCのアドオンを有効化し、PODにストレージをマウント
複数のPODからファイルが参照できることを確認する

File Storage for VPC クラスター・アドオンはベータ版で使用可能です。

アドオンの有効化

IBMCloudのドキュメント
IBM Cloud File Storage for VPC クラスター・アドオンの有効化

現在のアドオン状態の確認

% ibmcloud ks cluster addon ls -c co9j451t0t7uthsxxxx
OK
名前                   バージョン   正常性の状態   正常性の状況
debug-tool             2.0.0        normal         Addon Ready. For more info: http://ibm.biz/addon-state (H1500)
vpc-block-csi-driver   5.1          normal         Addon Ready. For more info: http://ibm.biz/addon-state (H1500)

FileStorageアドオンとIKSのサポートバージョンの確認
IKS1.29までは、アドオンバージョン1.2がサポート対象であることがわかる

最新バージョンで2.0の新しいストレージクラスが追加されました。古いストレージクラスを使用する新しいファイル共有をプロビジョニングすることはできなくなります。 古いストレージ クラスを使用する既存のボリュームは引き続き機能しますが、古いクラスを使用して作成されたボリュームを拡張することはできません。

IKS1.30以上の場合は、2.0のadd onがサポートされているので2.0を入れることを推奨

% ibmcloud ks cluster addon versions --addon vpc-file-csi-driver
OK
名前                  バージョン      サポートされる Kubernetes 範囲   サポートされる OpenShift 範囲   Kubernetes デフォルト   OpenShift デフォルト
vpc-file-csi-driver   1.2             >=1.24.0 <1.31.0                 >=4.10.0 <4.16.0                -                       -
vpc-file-csi-driver   2.0 (default)   >=1.30.0 <1.31.0                 >=4.15.0 <4.16.0                -                       -

アドオンの有効化
FileStorageアドオン1.2をクラスタで有効化する

% ibmcloud ks cluster addon enable vpc-file-csi-driver --version 1.2 --cluster co9j451t0t7uths6xxxx
クラスター co9j451t0t7uths6xxxx のアドオン vpc-file-csi-driver(1.2) を有効にしています...
アドオンのデプロイが完了して利用可能になるには数分かかる場合があります。
OK

アドオンが有効化されたか確認

まだ有効化の最中

% ibmcloud ks cluster addon ls -c co9j451t0t7uths6xxxx
OK
名前                   バージョン   正常性の状態   正常性の状況
debug-tool             2.0.0        normal         Addon Ready. For more info: http://ibm.biz/addon-state (H1500)
vpc-block-csi-driver   5.1          normal         Addon Ready. For more info: http://ibm.biz/addon-state (H1500)
vpc-file-csi-driver    1.2          -              Enabling

有効化された状態
有効化まではおおよそ15分ほどかかった

% ibmcloud ks cluster addon ls -c co9j451t0t7uths6xxxx
OK
名前                   バージョン   正常性の状態   正常性の状況
debug-tool             2.0.0        normal         Addon Ready. For more info: http://ibm.biz/addon-state (H1500)
vpc-block-csi-driver   5.1          normal         Addon Ready. For more info: http://ibm.biz/addon-state (H1500)
vpc-file-csi-driver    1.2          normal         Addon Ready. For more info: http://ibm.biz/addon-state (H1500)

FileStorageの接続

ストレージクラスの確認

ストレージクラスの詳細は下記のページを確認
ストレージ・クラス・リファレンス

% kubectl get sc | grep vpc-file
ibmc-vpc-file-dp2                             vpc.file.csi.ibm.io    Delete          Immediate              true                   15m
ibmc-vpc-file-metro-dp2                       vpc.file.csi.ibm.io    Delete          WaitForFirstConsumer   true                   15m
ibmc-vpc-file-metro-retain-dp2                vpc.file.csi.ibm.io    Retain          WaitForFirstConsumer   true                   15m
ibmc-vpc-file-retain-dp2                      vpc.file.csi.ibm.io    Retain          Immediate              true                   15m

PVCの作成

storageClassNameは前の手順で確認したものを記載する

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc # Enter a name for your PVC.
spec:
  accessModes:
  - ReadWriteMany # The file share can be mounted on multiple nodes and pods.
  resources:
    requests:
      storage: 20Gi # Enter the size of the storage in gigabytes (Gi).
  storageClassName: ibmc-vpc-file-dp2 # Enter the name of the storage class that you want to use.

PVCをデプロイ

% kubectl apply -f filepvc.yaml
persistentvolumeclaim/my-pvc created

PVCが作成され、PVにバインドされたことを確認

% kubectl describe pvc my-pvc
Name:          my-pvc
Namespace:     default
StorageClass:  ibmc-vpc-file-dp2
Status:        Bound
Volume:        pvc-1b7d692a-f30e-4cf7-9c91-2c6d5b31126f
Labels:        <none>
Annotations:   pv.kubernetes.io/bind-completed: yes
               pv.kubernetes.io/bound-by-controller: yes
               volume.beta.kubernetes.io/storage-provisioner: vpc.file.csi.ibm.io
               volume.kubernetes.io/storage-provisioner: vpc.file.csi.ibm.io
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      20Gi
Access Modes:  RWX
VolumeMode:    Filesystem
Used By:       <none>
Events:
  Type    Reason                 Age                 From                                                                                                  Message
  ----    ------                 ----                ----                                                                                                  -------
  Normal  Provisioning           118s                vpc.file.csi.ibm.io_ibm-vpc-file-csi-controller-b4d689764-ws87f_abcddde2-d91b-4533-90fd-e311dbe7fac4  External provisioner is provisioning volume for claim "default/my-pvc"
  Normal  ExternalProvisioning   83s (x4 over 118s)  persistentvolume-controller                                                                           Waiting for a volume to be created either by the external provisioner 'vpc.file.csi.ibm.io' or manually by the system administrator. If volume creation is delayed, please verify that the provisioner is running and correctly registered.
  Normal  ProvisioningSucceeded  79s                 vpc.file.csi.ibm.io_ibm-vpc-file-csi-controller-b4d689764-ws87f_abcddde2-d91b-4533-90fd-e311dbe7fac4  Successfully provisioned volume pvc-1b7d692a-f30e-4cf7-9c91-2c6d5b31126f

PODへのマウント

デプロイメントを作成し、先ほど作成したPVCを参照しマウントする

nginxのPODを作成し、PVCをマウントする例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-nginx
  labels:
    app: nfs-nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: service
  template:
    metadata:
      labels:
        app: service
    spec:
      containers:
      - image: jp.icr.io/khoshina-cr/nginx:latest
        name: iks-nfs-nginx
        securityContext:
          runAsUser: 0
        volumeMounts:
        - name: volume
          mountPath: /data
      volumes:
      - name: volume
        persistentVolumeClaim:
          claimName: my-pvc
      imagePullSecrets:
        - name: myregistrykey

接続テスト

PODに接続する

% kubectl get pod
NAME                         READY   STATUS    RESTARTS   AGE
nfs-nginx-779f94779f-87d78   1/1     Running   0          68s
nfs-nginx-779f94779f-mshv4   1/1     Running   0          5m50s

% kubectl exec -it nfs-nginx-779f94779f-mshv4 -- /bin/bash

ディスクの使用状況を表示
デプロイメントで指定した通り、/dataにマウントされていることがわかる

root@nfs-nginx-779f94779f-mshv4:/# df -h
Filesystem                                           Size  Used Avail Use% Mounted on
overlay                                               98G   12G   82G  13% /
tmpfs                                                 64M     0   64M   0% /dev
tmpfs                                                1.9G     0  1.9G   0% /sys/fs/cgroup
10.244.128.27:/4d7d79dc_f318_4573_8611_da8b37aa9976   20G  320K   20G   1% /data
/dev/vda2                                             98G   12G   82G  13% /etc/hosts
shm                                                   64M     0   64M   0% /dev/shm
tmpfs                                                2.7G   16K  2.7G   1% /run/secrets/kubernetes.io/serviceaccount
tmpfs                                                1.9G     0  1.9G   0% /proc/acpi
tmpfs                                                1.9G     0  1.9G   0% /proc/scsi
tmpfs                                                1.9G     0  1.9G   0% /sys/firmware

ファイルを書き込み正しく書き込まれている

root@nfs-nginx-779f94779f-mshv4:/# cd /data
root@nfs-nginx-779f94779f-mshv4:/data# echo test > aaa.txt
root@nfs-nginx-779f94779f-mshv4:/data# cat aaa.txt
test

別のPODから同じファイルにアクセスできるか確認する
先ほど作成したaaa.txtが存在し、中身がtestであることを確認できる

% kubectl exec -it nfs-nginx-779f94779f-87d78 -- /bin/bash
root@nfs-nginx-779f94779f-87d78:/# df -h
Filesystem                                           Size  Used Avail Use% Mounted on
overlay                                               98G   12G   82G  13% /
tmpfs                                                 64M     0   64M   0% /dev
tmpfs                                                1.9G     0  1.9G   0% /sys/fs/cgroup
10.244.128.27:/4d7d79dc_f318_4573_8611_da8b37aa9976   20G  320K   20G   1% /data
/dev/vda2                                             98G   12G   82G  13% /etc/hosts
shm                                                   64M     0   64M   0% /dev/shm
tmpfs                                                2.7G   16K  2.7G   1% /run/secrets/kubernetes.io/serviceaccount
tmpfs                                                1.9G     0  1.9G   0% /proc/acpi
tmpfs                                                1.9G     0  1.9G   0% /proc/scsi
tmpfs                                                1.9G     0  1.9G   0% /sys/firmware

root@nfs-nginx-779f94779f-87d78:/# cat /data/aaa.txt 
test
2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?