Aide-mémoire CKAD

exemple YAML emptyDir k8s

Monter du stockage dans un conteneur. Même name dans volumes[] et volumeMounts[].

La sacoche part avec le vaisseau ; l’entrepôt de caisses reste. La sacoche part avec le vaisseau ; l’entrepôt de caisses reste.
emptyDir
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: {}
PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: data
  namespace: default
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
Pod + PVC
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
Inspecter
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

S’entraîner sur un cluster réel →