Pular para o conteúdo
NyverraNyverra
Artigos
⌘K
InícioArtigosSite institucional
🇧🇷

Nyverra

Canal editorial

Artigos sobre tecnologia, operações e parceiros — infraestrutura, monitoramento e ambientes críticos.

Explorar

  • Início
  • Artigos
  • Categorias
  • Tags
  • Autores
  • Sobre
  • Contato
  • RSS
  • Site institucional

© 2026 Nyverra. Todos os direitos reservados.

blog.nyverra.com

  1. Início
  2. Kubernetes
  3. Curso Kubernetes 19 — Backup e restore: Velero, etcd e drill
Kubernetes
#Backup#K8S#Curso Kubernetes#Kubernetes

Curso Kubernetes 19 — Backup e restore: Velero, etcd e drill

Wedson LopesWedson Lopes
30 de outubro de 20263 min de leitura

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_dumpall para 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

  1. Snapshot do etcd e valide o arquivo.
  2. Backup Velero de um namespace e restore em namespace novo.
  3. Dump/restore do Postgres em banco descartável; meça o tempo.
  4. Verifique os dados restaurados (contagens, um registro conhecido).
  5. 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.

Próximo: Curso Kubernetes 20 — Upgrade de nós com segurança

Compartilhar

Continuar a ler

Leia também

  • Kubernetes de Verdade — do zero ao cluster em produção
    Kubernetes

    Kubernetes 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.

    30 de outubro de 20264 min de leitura
  • Curso Kubernetes 28 — DR e capstone: provar que o cluster volta
    Kubernetes

    Curso 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.

    30 de outubro de 20265 min de leitura
  • Curso Kubernetes 27 — SLO/SLI, on-call e postmortem blameless
    Kubernetes

    Curso 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.

    30 de outubro de 20264 min de leitura

Comentários

Ainda sem comentários

Seja o primeiro a compartilhar sua opinião sobre este artigo.

Deixe um comentário

Newsletter

Receba novos artigos

Inscreva-se para receber publicações do blog Nyverra no seu e-mail. Enviaremos um link de confirmação.

​