目的
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