Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add example for NFS provisioner #56

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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.

Comment on lines +3 to +4
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @msau42 , I have made the edit here mentioning that the example is for development only

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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: is there any special meaning of 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
mayankshah1607 marked this conversation as resolved.
Show resolved Hide resolved
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