Kubernetes: PersitentVolume frente a StorageClass

Kubernetes: PersitentVolume frente a StorageClass

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.

  1. Hasta donde yo entiendo el asunto que necesitascualquieraapersistentVolume oa storageClasspara satisfacer las necesidades de un PersistentVolumeClaim. Donde a PVes estático mientras que SCes dinámico. Entiendo uno/o como exclusivocualquieraunooel otro,no ambos(Creo que se llama NORen oposición a OR).
    Entonces no entiendo qué storageClaseNameestá haciendo a aquí. ¿Alguien puede ayudarme con la comprensión lógica?

  2. Creo type: localy path: "/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/datadirectorio de ese nodo.
    ¿Qué valor tendría que usar typesi 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:localconfiguració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

información relacionada