Kubernetes – PersitentVolume vs StorageClass

Kubernetes – PersitentVolume vs StorageClass

Eu tenho este exemplo de um Volume Persistente deeste artigo sobre postgresql via 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"

Isso parece funcionar, mas tem problemas com a lógica.

  1. tanto quanto eu entendo o assunto que você precisaqualquerapersistentVolume oua storageClasspara atender às necessidades de a PersistentVolumeClaim. Onde a PVé estático enquanto SCé dinâmico. Eu entendo um/ou como exclusivoqualquerumouo outro,não ambos(Acredito que isso seja chamado NORem oposição a OR).
    Então eu não entendo o que storageClaseNameestá fazendo aqui. Alguém pode me ajudar com o entendimento lógico?

  2. Acredito type: locale path: "/var/data"quero dizer que o volume existe no sistema de arquivos local do nó e seu conteúdo pode ser encontrado no /var/datadiretório desse nó.
    Qual valor eu teria que usar typese quisesse usar outra coisa? como armazenamento fornecido por um provisionador (csi.vsphere.vmware.com no meu caso)?

Responder1

Espero ter acertado a pergunta.

Um persistenteVolumeClaim sempre se liga a um persistenteVolume, a ideia é ter uma declaração conectada a um disco para que o pod possa se conectar ao mesmo disco, independentemente do nó em que ele for implantado.

Um storageClass é um mecanismo automático de provisionamento de persistenteVolume, o que significa que se você especificar um persistenteVolumeClaim e houver um storageClass padrão configurado, ele criará um persistenteVolume e o anexará ao persistenteVolumeClaim.

Você também pode criar manualmente um persistenteVolume e ele será anexado ao persistenteVolumeClaim (independentemente de um storageClass), mas crie uma imagem de um grande ambiente com centenas de pvcs e mantendo um pv para cada pvc.

Você também pode especificar um pv ao qual anexar o pvc.

A type:localconfiguração é um volume local no nó que atua como um pv. No seu caso, o VMware cria um arquivo vmdk e o copia para o nó no qual o pod está implantado.

Espero que ajude.

Responder2

Question: So I do not understand what a storageClaseName is doing in here. Can anybody help me out with the logical understanding?

O storageClaseName deve especificar a classe de um volume persistente. Vou usar um caso de uso para explicar. Imagine que você deseja gerenciar o armazenamento de seus aplicativos críticos para produção em 3 categorias diferentes. Ouro, Prata e Bronze. Gold é para aplicativos críticos de nível de produção e o restante é para aplicativos menos críticos. Agora você pode atribuir facilmente o tipo de armazenamento que deseja atribuir a um aplicativo com base em seu nível de risco. Por exemplo, eu quero usar o armazenamento de classe Gold para meu serviço de streaming de vídeo, então terei que especificar um PVC com um storageClassName definido como classe gold. Agora o kubernetes encontrará (se disponível) um PV que pertence à categoria de classe ouro para satisfazer esta solicitação. Se existir um PV com tamanho suficiente para este PVC, mas que não pertença à classe Gold, então esse PV não será usado para satisfazer 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?

Consulte este link: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#types-of-persistent-volumes

informação relacionada