
Tengo este ejemplo de un volumen persistente deeste artículo sobre postgresql a través de kubernetes statefulset
kind: PersistentVolume
apiVersion: v1
metadata:
name: pgdata
labels:
app: postgres
type: local
spec:
storageClassName: sc001
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/var/data"
Esto parece funcionar pero tiene problemas con la lógica.
Hasta donde yo entiendo el asunto que necesitascualquieraa
persistentVolume
oastorageClass
para satisfacer las necesidades de unPersistentVolumeClaim
. Donde aPV
es estático mientras queSC
es dinámico. Entiendo uno/o como exclusivocualquieraunooel otro,no ambos(Creo que se llamaNOR
en oposición aOR
).
Entonces no entiendo quéstorageClaseName
está haciendo a aquí. ¿Alguien puede ayudarme con la comprensión lógica?Creo
type: local
ypath: "/var/data"
quiero decir que el volumen existe en el sistema de archivos local del nodo y su contenido se puede encontrar en el/var/data
directorio de ese nodo.
¿Qué valor tendría que usartype
si quisiera usar algo más? ¿Como almacenamiento proporcionado por un proveedor (csi.vsphere.vmware.com en mi caso)?
Respuesta1
Espero haber respondido bien a la pregunta.
Un persistenteVolumeClaim siempre se vincula a un persistenteVolume; la idea es tener un reclamo conectado a un disco de manera que el pod pueda conectarse al mismo disco independientemente del nodo en el que se implemente.
Una clase de almacenamiento es un mecanismo automático de aprovisionamiento de volumen persistente, lo que significa que si especifica un reclamo de volumen persistente y hay una clase de almacenamiento predeterminada configurada, creará un volumen persistente y lo adjuntará al reclamo de volumen persistente.
También puede crear manualmente un volumen persistente y se adjuntará a persistenteVolumeClaim (independientemente de una clase de almacenamiento), pero cree una imagen de un entorno grande con cientos de PVC y mantenga un pv para cada PVC.
También puede especificar un pv al que adjuntar el pvc.
La type:local
configuración es un volumen local en el nodo que actúa como pv. En su caso, vmware crea un archivo vmdk y lo copia en el nodo en el que está implementado el pod.
Espero que ayude.
Respuesta2
Question: So I do not understand what a storageClaseName is doing in here. Can anybody help me out with the logical understanding?
StorageClaseName sirve para especificar la clase de un volumen persistente. Utilizaré un caso de uso para explicarlo. Imagine que desea administrar el almacenamiento de sus aplicaciones críticas de producción en 3 categorías diferentes. Oro, Plata y Bronce. Gold es para aplicaciones críticas de grado de producción y el resto son para aplicaciones menos críticas. Ahora puede asignar fácilmente qué tipo de almacenamiento desea asignar a una aplicación según su nivel de riesgo. Por ejemplo, quiero usar almacenamiento de clase Gold para mi servicio de transmisión de video, luego tendré que especificar un PVC con un nombre de clase de almacenamiento establecido en clase Gold. Ahora Kubernetes encontrará (si está disponible) un PV que pertenezca a la categoría de clase Gold para satisfacer esta solicitud. Si existe un PV que es de tamaño suficiente para este PVC, pero que no pertenece a la clase Gold, entonces ese PV no se utilizará para satisfacer este requisito.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: gold-class-claim
spec:
accessModes:
- ReadWriteOnce
storageClassName: gold-class-storage
....
Question: What value would I have to use for type whether I wanted to use something else?
Por favor consulte este enlace: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#types-of-persistent-volumes