La creación de múltiples volúmenes persistentes locales en el mismo nodo con la misma ruta funciona sin excepción

La creación de múltiples volúmenes persistentes locales en el mismo nodo con la misma ruta funciona sin excepción

Mientras realizaba pruebas de configuración en un clúster de Kubernetes de 2 nodos trabajadores usando kind (https://kind.sigs.k8s.io/docs/user/quick-start), se me ocurrió esto y no puedo encontrar información en ningún otro lugar.

Creé una carpeta en todos mis nodos trabajadores en /var/testpv y creé el siguiente PV:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pg-pv
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: fast-disks
  local:
    path: /var/testpv
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - fvi-worker2
          - fvi-worker

Funcionó bien así que creé un segundo:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pg-pv2
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: fast-disks
  local:
    path: /var/testpv
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - fvi-worker
          - fvi-worker2

(Mismo nombre, solo diferente)

Luego creé 2 PVC usando esta clase de almacenamiento:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: example-local-claim
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: fast-disks

y

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: example-local-claim2
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: fast-disks

Luego, finalmente dos pods que usan esos PVC:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: myfrontend
      image: nginx
      volumeMounts:
      - mountPath: "/var/www/html"
        name: mypd
  volumes:
    - name: mypd
      persistentVolumeClaim:
        claimName: example-local-claim

y

apiVersion: v1
kind: Pod
metadata:
  name: mypod2
spec:
  containers:
    - name: myfrontend
      image: nginx
      volumeMounts:
      - mountPath: "/var/www/html"
        name: mypd
  volumes:
    - name: mypd
      persistentVolumeClaim:
        claimName: example-local-claim2

Todo funciona bien, puedo ver los archivos creados en cada uno de esos pods yendo al almacenamiento correcto, cada pod en un nodo trabajador diferente.

Sin embargo, si intento crear un nuevo PV, PVC y pod, ¡no se producirá ningún error!

Peor aún, el PV se crea en la misma ubicación, por lo que puedo ver los archivos pod1 o pod2 (según).

Habría asumido que Kubernetes haría algún tipo de verificación de que realmente existiría un PV para el mismo host con el mismo, pero aparentemente no es así.

¿Me estoy perdiendo de algo? ¿Estoy haciendo algo mal? ¿O es muy necesario tener mucho cuidado al crear PV?

Gracias por cualquier idea,

Respuesta1

Sí, funciona porque es la única forma de compartir discos cuando se usa pv local. Este es el comportamiento esperado. En algunos casos, es posible que desee compartir archivos entre pods y esta es una forma de lograrlo.

información relacionada