---
title: Read Write ManyなPVが作れないKubernetes環境でRead Write ManyなPVを作れるようにするメモ
tags: ["Kubernetes", "kind", "NFS", "NFS Ganesha server and external provisioner"]
categories: ["Dev", "CaaS", "Kubernetes", "NFS"]
date: 2023-09-05T05:34:29Z
updated: 2023-09-05T05:34:29Z
---

Kindなど、Read Write ManyなPVが作れないKubernetes環境でRead Write ManyなPVを作れるようにするメモ。


[NFS Ganesha server and external provisioner](https://github.com/kubernetes-sigs/nfs-ganesha-server-and-external-provisioner)はInternal NFS Server兼NFS Provisionerとして利用できます。
このNFS Provisionerを使ってRead Write ManyでPVを作成できます。

Helmでインストールします。

```
helm repo add nfs-ganesha-server-and-external-provisioner https://kubernetes-sigs.github.io/nfs-ganesha-server-and-external-provisioner/

helm upgrade nfs-server-provisioner nfs-ganesha-server-and-external-provisioner/nfs-server-provisioner \
  --set persistence.enabled=true \
  --set persistence.size=10Gi \
  --install \
  -n nfs \
  --create-namespace \
  --wait
```

次のPodが作成されます。

```
$ kubectl get pod -n nfs
NAME                       READY   STATUS    RESTARTS   AGE
nfs-server-provisioner-0   1/1     Running   0          33s
```

`nfs`というStorageClassも作成されます。

```
$ kubectl get sc
NAME                 PROVISIONER                            RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
nfs                  cluster.local/nfs-server-provisioner   Delete          Immediate              true                   1m19s
standard (default)   rancher.io/local-path                  Delete          WaitForFirstConsumer   false                  25h
```

次のようなPVCを作成します。

```yaml
kubectl apply -f- << EOF
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: test-dynamic-volume-claim
spec:
  storageClassName: "nfs"
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
---
EOF
```

RWXでPVを作成できました。

```
$ kubectl get pvc
NAME                        STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
test-dynamic-volume-claim   Bound    pvc-1f062a6f-3955-427a-ae6e-8b25ff17e670   1Gi        RWX            nfs            31s
```

確認できたらPVCを削除します。

```
kubectl delete pvc test-dynamic-volume-claim
```
