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, comoavailabilityetype.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-podque usa o PVCmy-pvccriado anteriormente. Certifique-se de ajustar o nome do Pod e outros detalhes conforme necessário para o seu caso de uso específico.