Persistent volumes can be created and accessed across the entire cluster. When creating persistentVolumes, you must use kubectl create
, as kubectl apply will not work.
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-vol1
spec:
accessMode:
- ReadWriteOnce # other options - ReadOnlyMany, RadWriteMany (only NAS)
capacity:
storage: 1Gi
hostPath: #don't use this in the real world.
path: /tmp/data
#optional
claimRef:
name: myclaimref
To see the persistent volume:
kubectl get persistent volumes
A persistent volume claim binds a persistent volume. A claim can only be set to a single volume. (and a volume can only be assigned to a single claim).
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: myclaimref
spec:
#storageClassName: local-storage #Optional
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi
To see which volume a claim ha been bound to, run:
kubectl get persistentvolumeclaim
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: my-vol # name of volume
mountPath: /var/www/
volumes:
- name: my-vol #name of volume
persistentVolumeClaim:
claimName: myclaimref. #name of pvc
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: idapv-dev
labels:
UID: "13113"
GID: "602"
filepermission: "644"
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
nfs:
server: nasserver01.svr.us.jpmchase.net
path: /nasserver01_myapp_dev_01/myapp_dev_01/logs
claimRef:
namespace: ida-dev
name: idapvc-dev
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: idapvc-dev
namespace: ida-dev
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
---
apiVersion: v1
kind: Pod
metadata:
name: ida-pod-dev
namespace: ida-dev
spec:
securityContext:
fsGroup: 13113
runAsUser: 13113
runAsGroup: 602
volumes:
- name: 104387-idapvc-dev
persistentVolumeClaim:
claimName: idapvc-dev
containers:
- name: idapvc-dev
image: hellopython:v1
imagePullPolicy: IfNotFound
volumeMounts:
- name: idapvc-dev
mountPath: /logs
- name: idafluentbit-dev
image: fluentbit:v1.7.2
imagePullPolicy: IfNotFound
volumeMounts:
- name: 104387-idapvc-dev
mountPath: /logs