
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.
tanto quanto eu entendo o assunto que você precisaqualquera
persistentVolume
ouastorageClass
para atender às necessidades de aPersistentVolumeClaim
. Onde aPV
é estático enquantoSC
é dinâmico. Eu entendo um/ou como exclusivoqualquerumouo outro,não ambos(Acredito que isso seja chamadoNOR
em oposição aOR
).
Então eu não entendo o questorageClaseName
está fazendo aqui. Alguém pode me ajudar com o entendimento lógico?Acredito
type: local
epath: "/var/data"
quero dizer que o volume existe no sistema de arquivos local do nó e seu conteúdo pode ser encontrado no/var/data
diretório desse nó.
Qual valor eu teria que usartype
se 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:local
configuraçã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