Skip to content

Commit

Permalink
Add example for NFS server
Browse files Browse the repository at this point in the history
Signed-off-by: Mayank Shah <mayankshah1614@gmail.com>
  • Loading branch information
mayankshah1607 committed Oct 9, 2020
1 parent 7fdf127 commit 4f9f2ab
Show file tree
Hide file tree
Showing 4 changed files with 122 additions and 0 deletions.
18 changes: 18 additions & 0 deletions examples/kubernetes/nfs-provisioner/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Set up a NFS Server on a Kubernetes cluster

> Note: This example is for development perspective only. Because the NFS server is sticky to the node it is scheduled on, data shall be lost if the pod is rescheduled on another node.
To create a NFS provisioner on your Kubernetes cluster, run the following command

```bash
kubectl create -f https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/examples/kubernetes/nfs-provisioner/nfs-server.yaml
```

After deploying, a new service `nfs-server` is created. The file share path is accessible at `nfs-server.default.svc.cluster.local/nfsshare`.


To obtain a public IP for the service, run the following command instead

```bash
kubectl create -f https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/examples/kubernetes/nfs-provisioner/nfs-server-lb.yaml
```
42 changes: 42 additions & 0 deletions examples/kubernetes/nfs-provisioner/nfs-server-lb.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
kind: Service
apiVersion: v1
metadata:
name: nfs-server
labels:
app: nfs-server
spec:
type: LoadBalancer
selector:
app: nfs-server
ports:
- port: 2049
name: nfs-server
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: nfs-server
spec:
replicas: 1
selector:
matchLabels:
app: nfs-server
template:
metadata:
name: nfs-server
labels:
app: nfs-server
spec:
containers:
- name: nfs-server
image: gcr.io/kubernetes-e2e-test-images/volume/nfs:1.0
ports:
- containerPort: 2049
volumeMounts:
- mountPath: /nfsshare
name: data-volume
volumes:
name: data-volume
hostPath: /nfsshare-volume
type: DirectoryOrCreate
42 changes: 42 additions & 0 deletions examples/kubernetes/nfs-provisioner/nfs-server.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
kind: Service
apiVersion: v1
metadata:
name: nfs-server
labels:
app: nfs-server
spec:
type: ClusterIP # use "LoadBalancer" to get a public ip
selector:
app: nfs-server
ports:
- port: 2049
name: nfs-server
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: nfs-server
spec:
replicas: 1
selector:
matchLabels:
app: nfs-server
template:
metadata:
name: nfs-server
labels:
app: nfs-server
spec:
containers:
- name: nfs-server
image: gcr.io/kubernetes-e2e-test-images/volume/nfs:1.0
ports:
- containerPort: 2049
volumeMounts:
- mountPath: /nfsshare
name: data-volume
volumes:
name: data-volume
hostPath: /nfsshare-volume
type: DirectoryOrCreate
20 changes: 20 additions & 0 deletions examples/kubernetes/nfs-provisioner/pv-nfs-csi.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nfs
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
mountOptions:
- vers=3.0
csi:
driver: nfs.csi.k8s.io
readOnly: false
volumeHandle: unique-volumeid # make sure it's a unique id in the cluster
volumeAttributes:
server: nfs-server.default.svc.cluster.local
share: /nfsshare

0 comments on commit 4f9f2ab

Please sign in to comment.