Skip to main content

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, como availability e type.
  • provisioner: Especifica o provisionador que deve ser usado para provisionar volumes de armazenamento dinâmico.
warning

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.

info

Cada volume-type possui diferentes precificações, que podem ser consultadas em https://console.magalu.cloud/block-storage/new


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 como ReadWriteOnce.
  • storageClassName: Especifica o nome do StorageClass a ser usado para provisionar o volume.
  • resources.requests.storage: Define o tamanho do volume a ser provisionado.
danger

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.

    note

    Este YAML cria um Pod chamado my-pod que usa o PVC my-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.