
Curso Kubernetes 19 — Backup e restore: Velero, etcd e drill
Backup é fácil. Restore é o que importa. E restore só é real quando você ensaia.
Este capítulo fecha a Temporada 2 com uma estratégia por camadas — e um drill que mede RPO/RTO de verdade.
Selo do curso: testado em Kubernetes 1.35 com Velero, CloudNativePG e etcd 3.5.
Backup por camadas
| Camada | O que salva | Ferramenta |
|---|---|---|
| Cluster state | objetos da API | etcd snapshot / Velero |
| Volumes | PVs | Velero (Restic/Kopia) / snapshots CSI |
| Dados do banco | lógica | pg_dump / CNPG backup |
| Configuração | manifests | Git |
| Segredos | secrets | Vault / secret manager |
Fazer só uma camada é ilusão de segurança. Já vi cluster “com backup” que não tinha o dump do banco — e vice-versa.
etcd: o estado do cluster
O etcd guarda todos os objetos. Snapshot:
ETCDCTL_API=3 etcdctl snapshot save /backup/etcd-$(date +%F).db \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key
Agende via CronJob no master (como no nosso cluster) e teste o restore em ambiente descartável.
Restore do etcd é cirurgia: pare o apiserver, restaure o snapshot em um diretório novo, ajuste o --data-dir e traga o cluster de volta. Em HA, o procedimento é mais delicado. Tenha runbook.
Velero: objetos e volumes
Velero faz backup de recursos e, com Restic/Kopia, de volumes.
Instalação (lab):
velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.10.0 \
--bucket portal-k8s-backup \
--secret-file ./credentials-velero \
--backup-location-config region=us-east-1,s3ForcePathStyle=true,s3Url=http://minio-s3:9000
Schedule:
velero schedule create portal-daily --schedule="0 3 * * *" --include-namespaces portal
Backup manual:
velero backup create portal-manual --include-namespaces portal --wait
velero backup describe portal-manual --details
Restore em namespace novo (evita colisão):
velero restore create --from-backup portal-manual \
--namespace-mappings portal:portal-restore
Dados do banco
Velero não substitui dump lógico. Para PostgreSQL:
- CNPG
ScheduledBackup+ WAL archiving. pg_dump/pg_dumpallpara cópia lógica.- Teste restore em banco descartável.
O drill que fizemos: dump de 2,1 GB, restore em banco descartável, RTO de 85 segundos e contagens idênticas. Esse número é o que importa em uma emergência.
RPO e RTO
- RPO: quanto dado você aceita perder.
- RTO: quanto tempo aceita ficar fora.
Exemplo:
| Camada | RPO | RTO |
|---|---|---|
| etcd snapshot diário | 24h | 1–2h |
| Velero diário | 24h | 1–4h |
| WAL do Postgres | minutos | 30–60 min |
| dump lógico diário | 24h | 1h |
Se o negócio não aceita 24h de RPO, backup diário não serve. A conversa é de produto, não de ferramenta.
Laboratório
- Snapshot do etcd e valide o arquivo.
- Backup Velero de um namespace e restore em namespace novo.
- Dump/restore do Postgres em banco descartável; meça o tempo.
- Verifique os dados restaurados (contagens, um registro conhecido).
- Documente RPO/RTO medidos.
Erros comuns
| Sintoma | Causa |
|---|---|
Velero backup PartiallyFailed |
volume/plugin/credencial |
| Restore não cria PVC | storageClass ausente no destino |
| etcd restore não sobe | data-dir/endpoint errado |
| Backup “ok” mas restore vazio | exclude de namespace/recurso |
| RPO maior que o esperado | schedule/WAL parado |
| Segredo não restaurado | Velero sem RBAC ou secret excluído |
Checklist
- [ ] etcd snapshot agendado e testado.
- [ ] Velero schedule + BSL saudável.
- [ ] Dump lógico do banco testado.
- [ ] Restore em namespace/banco descartável.
- [ ] RPO/RTO medidos e documentados.
- [ ] Segredos incluídos na estratégia.
- [ ] Runbook de restore por camada.
Glossário
- RPO: perda máxima de dados aceita.
- RTO: tempo máximo de recuperação aceito.
- BSL: BackupStorageLocation do Velero.
- Restic/Kopia: backup de volumes do Velero.
- WAL: log de transações do Postgres.
- snapshot CSI: snapshot de volume pelo driver.
Próximo
Agora o último capítulo da Temporada 2: upgrade de nós com segurança — drain, PDB, anti-affinity e as lições do nosso upgrade de RAM.
Continuar a ler
Leia também
KubernetesKubernetes de Verdade — do zero ao cluster em produção
Uma trilha prática para entender, montar e operar um cluster Kubernetes — do primeiro pod ao failover do Postgres.
4 min de leitura
KubernetesCurso Kubernetes 28 — DR e capstone: provar que o cluster volta
RPO, RTO e drills reais: cenários de desastre, runbook, restore medido e o capstone que fecha o curso com um cluster que se recupera.
5 min de leitura
KubernetesCurso Kubernetes 27 — SLO/SLI, on-call e postmortem blameless
O que prometer, como medir e o que fazer quando o erro estoura: SLI, SLO, error budget, alertas que acordam alguém e postmortem sem caça às bruxas.
4 min de leitura
Comentários
Ainda sem comentários
Seja o primeiro a compartilhar sua opinião sobre este artigo.
Deixe um comentário