🙌

NFSサーバをStorageClassとして利用する手順

2023/11/26に公開

概要

KuberntersClusterからNFSを使いたい。
また、PVを定義しNFSサーバを指定することもできるが、StorageClassを利用することで動的にプロビジョニングができるようになるので、これを使いたい。
NFS用のProvisionerがあるので、こちらを使うとさっくりと導入することができる。

手順

インストール

nfs.serverはNFSサーバのIPアドレス、nfs.pathはNFSサーバのexportfsに設定している共有ディレクトリを指定する

helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
    --set nfs.server=10.0.1.16 \
    --set nfs.path=/home/nfsshare

テスト用マニフェスト

test_pvc.yaml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: test-claim
  annotations:
    nfs.io/storage-path: "test-path" # not required, depending on whether this annotation was shown in the storage class description
spec:
  storageClassName: nfs-client
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Mi

Apply

kubectl apply -f test_pvc.yaml

確認

kubectl describe pvc test-claim

出力結果

Name:          test-claim
Namespace:     default
StorageClass:  nfs-client
Status:        Bound
Volume:        pvc-f593a11d-0b82-4a0a-a26c-2051c85fa7a9
Labels:        <none>
Annotations:   nfs.io/storage-path: test-path
               pv.kubernetes.io/bind-completed: yes
               pv.kubernetes.io/bound-by-controller: yes
               volume.beta.kubernetes.io/storage-provisioner: cluster.local/nfs-subdir-external-provisioner
               volume.kubernetes.io/storage-provisioner: cluster.local/nfs-subdir-external-provisioner
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      1Mi
Access Modes:  RWX
VolumeMode:    Filesystem
Used By:       <none>
Events:
  Type    Reason                 Age   From                                                                                                                                 Message
  ----    ------                 ----  ----                                                                                                                                 -------
  Normal  ExternalProvisioning   14s   persistentvolume-controller                                                                                                          Waiting for a volume to be created either by the external provisioner 'cluster.local/nfs-subdir-external-provisioner' or manually by the system administrator. If volume creation is delayed, please verify that the provisioner is running and correctly registered.
  Normal  Provisioning           14s   cluster.local/nfs-subdir-external-provisioner_nfs-subdir-external-provisioner-5ffd5c9f69-h2l97_9693cd1a-8cac-4097-bb07-49606c3a33e2  External provisioner is provisioning volume for claim "default/test-claim"
  Normal  ProvisioningSucceeded  14s   cluster.local/nfs-subdir-external-provisioner_nfs-subdir-external-provisioner-5ffd5c9f69-h2l97_9693cd1a-8cac-4097-bb07-49606c3a33e2  Successfully provisioned volume pvc-f593a11d-0b82-4a0a-a26c-2051c85fa7a9

参考

https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner

Discussion