![La creación de múltiples volúmenes persistentes locales en el mismo nodo con la misma ruta funciona sin excepción](https://rvso.com/image/747335/La%20creaci%C3%B3n%20de%20m%C3%BAltiples%20vol%C3%BAmenes%20persistentes%20locales%20en%20el%20mismo%20nodo%20con%20la%20misma%20ruta%20funciona%20sin%20excepci%C3%B3n.png)
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.