diff --git a/deploy/kubernetes/csi-nfs-node.yaml b/deploy/kubernetes/csi-nfs-node.yaml index c4a29ba8..7381ba8b 100644 --- a/deploy/kubernetes/csi-nfs-node.yaml +++ b/deploy/kubernetes/csi-nfs-node.yaml @@ -14,6 +14,8 @@ spec: labels: app: csi-nfs-node spec: + hostNetwork: true # original nfs connection would be broken without hostNetwork setting + dnsPolicy: ClusterFirstWithHostNet containers: - name: node-driver-registrar image: quay.io/k8scsi/csi-node-driver-registrar:v1.0.2 diff --git a/examples/kubernetes/nfs-provisioner/nfs-server.yaml b/examples/kubernetes/nfs-provisioner/nfs-server.yaml deleted file mode 100644 index 25d83505..00000000 --- a/examples/kubernetes/nfs-provisioner/nfs-server.yaml +++ /dev/null @@ -1,39 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - name: nfs-service -spec: - clusterIP: 10.0.171.239 - selector: - role: nfs - ports: - - name: tcp-2049 - port: 2049 - protocol: TCP - - name: udp-111 - port: 111 - protocol: UDP - ---- -kind: Pod -apiVersion: v1 -metadata: - name: nfs-server-pod - labels: - role: nfs -spec: - containers: - - name: nfs-server-container - image: itsthenetwork/nfs-server-alpine:latest - env: - - name: SHARED_DIRECTORY - value: "/exports" - volumeMounts: - - mountPath: /exports - name: nfs-vol - securityContext: - privileged: true - volumes: - - name: nfs-vol - emptyDir: {} ---- \ No newline at end of file diff --git a/examples/kubernetes/nfs-provisioner/README.md b/examples/kubernetes/nfs-server/README.md similarity index 69% rename from examples/kubernetes/nfs-provisioner/README.md rename to examples/kubernetes/nfs-server/README.md index 1101308f..2269cfb9 100644 --- a/examples/kubernetes/nfs-provisioner/README.md +++ b/examples/kubernetes/nfs-server/README.md @@ -8,11 +8,7 @@ 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-service` is created. The file share path is accessible at `10.0.171.239`. Verify if the NFS Server pod is running - -```bash -$ kubectl get po nfs-server-pod -``` +- After deploying, a new service `nfs-server` is created, nfs share path is`nfs-server.default.svc.cluster.local:/`. - To check if the server is working, we can statically create a `PersistentVolume` and a `PersistentVolumeClaim`, and mount it onto a sample pod: @@ -23,6 +19,12 @@ kubectl create -f https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nf Verify if the newly create deployment is Running: ```bash -$ kubectl get deploy nfs-busybox +# kubectl exec -it nfs-busybox-8cd8d9c5b-sf8mx sh +/ # df -h +Filesystem Size Used Available Use% Mounted on +... +nfs-server.default.svc.cluster.local:/ + 123.9G 15.2G 108.6G 12% /mnt +... ``` diff --git a/examples/kubernetes/nfs-provisioner/app.yaml b/examples/kubernetes/nfs-server/deployment.yaml similarity index 79% rename from examples/kubernetes/nfs-provisioner/app.yaml rename to examples/kubernetes/nfs-server/deployment.yaml index 0334efaf..d377e03e 100644 --- a/examples/kubernetes/nfs-provisioner/app.yaml +++ b/examples/kubernetes/nfs-server/deployment.yaml @@ -12,9 +12,13 @@ spec: mountOptions: - hard - nfsvers=4.1 - nfs: - path: / - server: 10.0.171.239 + 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: / --- kind: PersistentVolumeClaim apiVersion: v1 @@ -25,7 +29,7 @@ spec: - ReadWriteMany resources: requests: - storage: 2Gi + storage: 10Gi volumeName: pv-nfs storageClassName: "" --- @@ -58,4 +62,4 @@ spec: volumes: - name: nfs persistentVolumeClaim: - claimName: nfs \ No newline at end of file + claimName: nfs diff --git a/examples/kubernetes/nfs-server/nfs-server.yaml b/examples/kubernetes/nfs-server/nfs-server.yaml new file mode 100644 index 00000000..419e60e1 --- /dev/null +++ b/examples/kubernetes/nfs-server/nfs-server.yaml @@ -0,0 +1,59 @@ +--- +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: + - name: tcp-2049 + port: 2049 + protocol: TCP + - name: udp-111 + port: 111 + protocol: UDP +--- +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: + nodeSelector: + "kubernetes.io/os": linux + containers: + - name: nfs-server + image: itsthenetwork/nfs-server-alpine:latest + env: + - name: SHARED_DIRECTORY + value: "/exports" + volumeMounts: + - mountPath: /exports + name: nfs-vol + securityContext: + privileged: true + ports: + - name: tcp-2049 + containerPort: 2049 + protocol: TCP + - name: udp-111 + containerPort: 111 + protocol: UDP + volumes: + - name: nfs-vol + hostPath: + path: /nfs-vol # modify this to specify another path to store nfs share data + type: DirectoryOrCreate