Aide-mémoire CKAD
exemple YAML emptyDir k8s
Monter du stockage dans un conteneur. Même name dans volumes[] et volumeMounts[].
apiVersion: v1
kind: Pod
metadata:
name: share
spec:
containers:
- name: writer
image: busybox:1.36
command: ["sh", "-c", "echo hi > /data/out; sleep 3600"]
volumeMounts:
- name: cache
mountPath: /data
- name: reader
image: busybox:1.36
command: ["sh", "-c", "cat /data/out; sleep 3600"]
volumeMounts:
- name: cache
mountPath: /data
volumes:
- name: cache
emptyDir: {}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data
namespace: default
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
apiVersion: v1
kind: Pod
metadata:
name: app
spec:
containers:
- name: app
image: nginx:1.27
volumeMounts:
- name: data
mountPath: /usr/share/nginx/html
volumes:
- name: data
persistentVolumeClaim:
claimName: data
kubectl get pvc,pv
kubectl describe pvc data
kubectl exec app -- ls /usr/share/nginx/html
Champs
- emptyDir
- Vit avec le Pod. Survit au crash d’un conteneur. Disparu avec le Pod.
- volumeMounts
- name doit égaler un volumes[].name. Une typo → montage vide.
- claimName
- Le nom du PVC, pas du PV.
Pièges
- volumes[].name doit égaler volumeMounts[].name. claimName est le PVC, pas le PV.
- emptyDir survit au crash d’un conteneur. Il est effacé quand le Pod quitte le nœud.
- Un PVC est namespacé. Omettre storageClassName pour prendre le StorageClass par défaut.
Doc officielle Volumes Persistent Volumes