891a840aa6
Resizing is handled by the csi-resizer container, which needs to run in the provisioner Pod. In addition to the container, the StorageClass also needs to allow volume expansion. Signed-off-by: Niels de Vos <ndevos@redhat.com> |
||
---|---|---|
.. | ||
pod-rwop.yaml | ||
pod.yaml | ||
pvc-rwop.yaml | ||
pvc.yaml | ||
README.md | ||
rook-nfs.yaml | ||
storageclass.yaml |
Dynamic provisioning with NFS
The easiest way to try out the examples for dynamic provisioning with NFS, is to use Rook Ceph with CephNFS. Rook can be used to deploy a Ceph cluster. Ceph is able to maintain a NFS-Ganesha service with a few commands, making configuring the Ceph cluster a minimal effort.
Enabling the Ceph NFS-service
Ceph does not enable the NFS-service by default. In order for Rook Ceph to be able to configure NFS-exports, the NFS-service needs to be configured first.
In the Rook Toolbox, run the following commands:
ceph osd pool create nfs-ganesha
ceph mgr module enable rook
ceph mgr module enable nfs
ceph orch set backend rook
Create a NFS-cluster
In the directory where this README
is located, there is an example
rook-nfs.yaml
file. This file can be used to create a Ceph managed
NFS-cluster with the name "my-nfs".
$ kubectl create -f rook-nfs.yaml
cephnfs.ceph.rook.io/my-nfs created
The CephNFS resource will create a NFS-Ganesha Pod and Service with label
app=rook-ceph-nfs
:
$ kubectl get pods -l app=rook-ceph-nfs
NAME READY STATUS RESTARTS AGE
rook-ceph-nfs-my-nfs-a-5d47f66977-sc2rk 2/2 Running 0 61s
$ kubectl get service -l app=rook-ceph-nfs
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
rook-ceph-nfs-my-nfs-a ClusterIP 172.30.218.195 <none> 2049/TCP 2m58s
Create a StorageClass
The parameters of the StorageClass reflect mostly what CephFS requires to
connect to the Ceph cluster. All required options are commented clearly in the
storageclass.yaml
file.
In addition to the CephFS parameters, there are:
nfsCluster
: name of the Ceph managed NFS-cluster (heremy-nfs
)server
: hostname/IP/service of the NFS-server (here172.30.218.195
)
Edit storageclass.yaml
, and create the resource:
$ kubectl create -f storageclass.yaml
storageclass.storage.k8s.io/csi-nfs-sc created
TODO: next steps
- deploy the NFS-provisioner
- deploy the kubernetes-csi/csi-driver-nfs
- create the CSIDriver object