Criar volumes persistentes
1. Criando o StorageClass
Um StorageClass define as propriedades dos volumes de armazenamento dinâmico provisionados. Aqui está um exemplo de como criar um StorageClass do Cinder:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: cinder-storageclass-5k
parameters:
availability: nova
type: cloud_nvme5k
provisioner: cinder.csi.openstack.org
reclaimPolicy: Delete
volumeBindingMode: Immediate
name
: O nome do StorageClass, neste exemplo, écinder-storageclass-5k
.parameters
: Define os parâmetros específicos do Cinder, comoavailability
etype
.provisioner
: Especifica o provisionador que deve ser usado para provisionar volumes de armazenamento dinâmico.
A anotation storageclass.kubernetes.io/is-default-class: "true"
NÃO deve ser utilizada em mais de uma StorageClass para evitar que o Admission Controller se confunda hora de provisionar o volume. Caso seja usada, é necessário especificar o storageClassName
no PVC
1.1 Listando os Diferentes Tipos de Volumes
Para listar os diferentes tipos de StorageClass disponíveis no ambiente, você pode usar o seguinte comando na CLI MGC
mgc block-storage volume-types list
Este comando exibirá os tipos de volume suportados pelo seu provedor de armazenamento.
O resultado mostrará uma lista dos tipos de volume disponíveis, que você pode usar para configurar o seu StorageClass. O nome do volume type deve ser o valor a ser preenchido na propriedade parameters.type
do StorageClass.
Cada volume-type
possui diferentes precificações, que podem ser consultadas em Tipos de volumes
2. Criando o Persistent Volume Claim (PVC) utilizando o StorageClass
Agora que o StorageClass foi criado, podemos usar esse StorageClass para provisionar um PV e um PVC. Exemplo de Persistent Volume Claim (PVC):
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: cinder-storageclass-5k
resources:
requests:
storage: 1Gi
accessModes
: Define os modos de acesso ao volume. Neste exemplo, é definido comoReadWriteOnce
.storageClassName
: Especifica o nome do StorageClass a ser usado para provisionar o volume.resources.requests.storage
: Define o tamanho do volume a ser provisionado.
Sempre exclua os volumes persistentes antes de excluir um cluster. Siga os procedimentos descritos em Excluindo volumes persistentes
3. Criando o POD
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
volumeMounts:
- mountPath: "/data"
name: my-volume
volumes:
- name: my-volume
persistentVolumeClaim:
claimName: my-pvc
-
metadata.name
: Especifica o nome do Pod. -
spec.containers
: Define os containers no Pod. -
spec.containers.volumeMounts
: Define o ponto de montagem do volume no container. -
spec.volumes
: Define os volumes a serem montados no Pod. -
spec.volumes.persistentVolumeClaim.claimName
: Especifica o nome do PVC a ser montado no volume.noteEste YAML cria um Pod chamado
my-pod
que usa o PVCmy-pvc
criado anteriormente. Certifique-se de ajustar o nome do Pod e outros detalhes conforme necessário para o seu caso de uso específico.