We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
In the previous post, we learned how to setup an NFS share on a Linux machine. Today, we are going to learn how to mount this share in a Kubernetes cluster.
The first thing we need to define is a PersistentVolume
:
persistent-volume.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-shared-folder-pv
labels:
usage: my-shared-folder-pv
spec:
capacity:
storage: 50Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Recycle
nfs:
server: my-other-server
path: /var/nfs/my_shared_folder
Then we can create a PersistentVolumeClaim
pointing to the volume:
persistent-volume-claim.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-shared-folder-pvc
annotations:
volume.beta.kubernetes.io/storage-class: ""
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 50Gi
selector:
matchLabels:
usage: my-shared-folder-pv
We can now deploy these to our Kubernetes cluster:
kubectl apply -f persistent-volume.yaml
kubectl apply -f persistent-volume-claim.yaml
To use it in a deployment, you can mount it now as a volume:
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-server
labels:
app: my-server
spec:
replicas: 1
selector:
matchLabels:
app: my-server
template:
metadata:
labels:
app: my-server
spec:
containers:
- name: my-server
image: "alpine:3.12"
command: ["/bin/sh"]
args: ["-c", "while true; do date >> /mnt/my_shared_folder/dates.txt; sleep 5; done"]
volumeMounts:
- name: my-shared-folder
mountPath: /mnt/my_shared_folder
volumes:
- name: my-shared-folder
persistentVolumeClaim:
claimName: my-shared-folder-pvc
If you also want to setup the NFS share itself inside the cluster, there are examples available showing you how to do that in the Kubernetes Example repository.
If this post was enjoyable or useful for you, please share it! If you have comments, questions, or feedback, you can email my personal email. To get new posts, subscribe use the RSS feed.