Visão Geral
O gerenciamento de armazenamento de dados em um Cluster Kubernetes se baseia em alguns conceitos e recursos, como PersistentVolume (PV), PersistentVolumeClaim (PVC), StorageClasses, VolumeSnapshotClass e VolumeSnapshot (VS).
O PersistentVolume (PV) é um recurso de armazenamento no Cluster provisionado manualmente por um administrador ou provisionado dinamicamente pelo StorageClass. É a parte real de armazenamento (como um volume de disco físico em um servidor ou um volume na nuvem). O PV existe independentemente dos Pods que o utilizam. Se um Pod for excluído, o PV e os dados permanecem intactos. É um recurso de Cluster (gerenciado por uma pessoa administradora). Os usuários (pessoas desenvolvedoras) geralmente não criam PVs diretamente, mas os utilizam através de PVCs.
O PersistentVolumeClaim (PVC) é um pedido de armazenamento feito por uma pessoa usuária do Kubernetes. É a ponte que conecta o Pod ao armazenamento real (o PV), sendo a solicitação de por uma quantidade específica de armazenamento e modo de acesso, como, por exemplo, "Eu preciso de 5GB de armazenamento que possa ser montado como ReadWriteOnce". O PVC procura e se vincula a um PV disponível que atenda aos seus requisitos. Uma vez vinculado, o PVC e o PV formam um par exclusivo. Um Pod referencia um PVC em sua especificação, e o Kubernetes cuida de montar o PV subjacente no Pod.
O StorageClass é um recurso que permite às pessoas administradoras descrever "classes" de armazenamento que oferecem diferentes níveis de qualidade de serviço, backends de armazenamento ou políticas de backup. É a chave para o Provisionamento Dinâmico, sendo um blueprint para provisionar armazenamento sob demanda. Ele define o provisioner (o plugin que provisiona o volume) e parâmetros. Quando um PVC é criado e referencia um StorageClass, o Kubernetes não procura por um PV existente, mas sim cria um novo PV automaticamente que satisfaça o PVC, simplificando a vida de quem utiliza armazenamento de dados no Kubernetes, que só precisa especificar a "classe" de armazenamento desejada em seu PVC, em vez de se preocupar com os detalhes da infraestrutura.
O VolumeSnapshotClass serve como a definição de parâmetros necessários para a criação de VolumeSnapshot, utilizado para a criação de snapshot de um PersistentVolumeClaim específico.
No produto de Kubernetes da Magalu Cloud na versão de plataforma v3, os recursos de armazenamento são integrados com o serviço de Block Storage.
Na versão v1, o armazenamento é gerenciado por um serviço interno, sem visibilidade direta dos recursos (volumes).