Pular para o conteúdo principal

💾 Storage

O disco de um container é temporário: quando o pod é recriado, tudo o que estava nele se perde. Para guardar dados que precisam sobreviver (banco de dados, uploads, arquivos), o Kubernetes usa discos persistentes.

TermoO que éAnalogia
StorageClassO tipo de disco disponível (por exemplo, SSD)O catálogo de discos
PVC (PersistentVolumeClaim)O pedido de um disco, com tamanhoO pedido de compra
PV (PersistentVolume)O disco em si, criado automaticamente a partir do pedidoO disco entregue

Na prática, você só cria o PVC. O cluster cria o disco sozinho.

informação

O PVC é criado com o kubectl. O disco criado pode ser consultado também no Painel Nuvion (passo 6).


🚀 Antes de começar​

🚀 1. Ver os tipos de disco disponíveis​

kubectl get storageclass

Anote o nome da classe marcada com (default). Ela é usada quando você não escolhe uma.

🚀 2. Pedir um disco (criar o PVC)​

Crie o arquivo pvc-dados.yaml:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-dados
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
kubectl apply -f pvc-dados.yaml
dica

Se a lista do passo 1 não tiver nenhuma classe (default), adicione a linha storageClassName: NOME-DA-CLASSE dentro de spec.

O ReadWriteOnce significa que o disco pode ser usado por um node por vez.

🚀 3. Verificar o pedido​

kubectl get pvc pvc-dados

O STATUS deve ser Bound (disco entregue). Em alguns clusters o status fica Pending até que um pod use o disco, e isso é normal. Siga para o passo 4.

🚀 4. Usar o disco em um pod​

Crie o arquivo pod-storage.yaml. Cada vez que o pod inicia, ele anota a data e a hora no arquivo /dados/historico.txt:

apiVersion: v1
kind: Pod
metadata:
name: pod-storage
spec:
containers:
- name: app
image: busybox
command: ["sh", "-c", "date >> /dados/historico.txt; sleep 3600"]
volumeMounts:
- name: dados
mountPath: /dados
volumes:
- name: dados
persistentVolumeClaim:
claimName: pvc-dados
kubectl apply -f pod-storage.yaml
kubectl get pvc pvc-dados
kubectl exec pod-storage -- cat /dados/historico.txt

O PVC passa a Bound e o arquivo mostra uma linha com a data.

🚀 5. Provar que os dados sobrevivem​

Exclua o pod e crie de novo:

kubectl delete pod pod-storage
kubectl apply -f pod-storage.yaml
kubectl exec pod-storage -- cat /dados/historico.txt

Agora o arquivo mostra duas linhas: a de antes e a nova. O pod foi recriado, mas o disco manteve os dados.

🚀 6. Ver o disco criado​

Acesse Computar > Volumes e procure um volume novo de 1 GiB, criado automaticamente pelo cluster.

Volume criado pelo PVC no painel

✅ Como saber se deu certo​

O arquivo /dados/historico.txt acumula uma linha nova a cada vez que o pod é recriado.

aviso

Ao excluir o PVC, o disco e todos os dados são apagados (na configuração padrão). Excluir apenas o pod não apaga nada.

❗ Problemas comuns​

SintomaCausaSolução
PVC Pending e o pod tambémNenhuma StorageClass padrãoAdicione storageClassName no PVC (passo 2)
Pod parado em ContainerCreatingO disco ainda está sendo preparadoAguarde e veja a seção Events em kubectl describe pod pod-storage
Erro Multi-AttachDisco ReadWriteOnce em uso por pod em outro nodeUse apenas um pod com esse disco, ou garanta que fiquem no mesmo node
Pedido de tamanho maior que o permitidoLimite de volume ou quotaPeça um tamanho menor ou fale com o suporte

🧹 Limpeza​

kubectl delete pod pod-storage
kubectl delete pvc pvc-dados

O segundo comando apaga o disco e os dados.

➡️ Próximo passo: Networking

🧠 Dúvidas?​

Fale com nosso time de suporte técnico da SaveinCloud!