Backup es fácil. Restore es lo que importa. Y restore solo es real cuando lo ensayas.
Este capítulo cierra la Temporada 2 con una estrategia por capas — y un drill que mide RPO/RTO de verdad.
Sello del curso: probado en Kubernetes 1.35 con Velero, CloudNativePG y etcd 3.5.
Backup por capas
| Capa | Qué salva | Herramienta |
|---|---|---|
| Estado del clúster | objetos de la API | etcd snapshot / Velero |
| Volúmenes | PVs | Velero (Restic/Kopia) / snapshots CSI |
| Datos de la base de datos | lógicos | pg_dump / CNPG backup |
| Configuración | manifests | Git |
| Secretos | secrets | Vault / secret manager |
Hacer solo una capa es ilusión de seguridad. Ya vi clústeres “con backup” que no tenían el dump de la base de datos — y viceversa.
etcd: el estado del clúster
El etcd guarda todos los 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
Agéndalo mediante CronJob en el master (como en nuestro clúster) y prueba el restore en un entorno descartable.
El restore de etcd es cirugía: detén el apiserver, restaura el snapshot en un directorio nuevo, ajusta el --data-dir y trae el clúster de vuelta. En HA, el procedimiento es más delicado. Ten un runbook.
Velero: objetos y volúmenes
Velero hace backup de recursos y, con Restic/Kopia, de volúmenes.
Instalación (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
Agenda:
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 en namespace nuevo (evita colisión):
velero restore create --from-backup portal-manual \
--namespace-mappings portal:portal-restore
Datos de la base de datos
Velero no sustituye el dump lógico. Para PostgreSQL:
- CNPG
ScheduledBackup+ WAL archiving. pg_dump/pg_dumpallpara copia lógica.- Prueba restore en base de datos descartable.
El drill que hicimos: dump de 2,1 GB, restore en base de datos descartable, RTO de 85 segundos y conteos idénticos. Ese número es lo que importa en una emergencia.
RPO y RTO
- RPO: cuánto dato aceptas perder.
- RTO: cuánto tiempo aceptas estar fuera.
Ejemplo:
| Capa | RPO | RTO |
|---|---|---|
| etcd snapshot diario | 24h | 1–2h |
| Velero diario | 24h | 1–4h |
| WAL de Postgres | minutos | 30–60 min |
| dump lógico diario | 24h | 1h |
Si el negocio no acepta 24h de RPO, el backup diario no sirve. La conversación es de producto, no de herramienta.
Laboratorio
- Snapshot de etcd y valida el archivo.
- Backup Velero de un namespace y restore en namespace nuevo.
- Dump/restore de Postgres en base de datos descartable; mide el tiempo.
- Verifica los datos restaurados (conteos, un registro conocido).
- Documenta RPO/RTO medidos.
Errores comunes
| Síntoma | Causa |
|---|---|
Velero backup PartiallyFailed |
volume/plugin/credencial |
| Restore no crea PVC | storageClass ausente en el destino |
| etcd restore no arranca | data-dir/endpoint incorrecto |
| Backup “ok” pero restore vacío | exclude de namespace/recurso |
| RPO mayor que el esperado | schedule/WAL detenido |
| Secreto no restaurado | Velero sin RBAC o secret excluido |
Checklist
- [ ] etcd snapshot agendado y probado.
- [ ] Velero schedule + BSL saludable.
- [ ] Dump lógico de la base de datos probado.
- [ ] Restore en namespace/base de datos descartable.
- [ ] RPO/RTO medidos y documentados.
- [ ] Secretos incluidos en la estrategia.
- [ ] Runbook de restore por capa.
Glosario
- RPO: pérdida máxima de datos aceptada.
- RTO: tiempo máximo de recuperación aceptado.
- BSL: BackupStorageLocation de Velero.
- Restic/Kopia: backup de volúmenes de Velero.
- WAL: log de transacciones de Postgres.
- snapshot CSI: snapshot de volumen por el driver.
Próximo
Ahora el último capítulo de la Temporada 2: upgrade de nodos con seguridad — drain, PDB, anti-affinity y las lecciones de nuestro upgrade de RAM.
Próximo: Curso Kubernetes 20 — Upgrade de nodos con seguridad
Seguir leyendo
Lea también
ArmazenamentoManual LSI / Broadcom MegaRAID — MegaCli y StorCLI
Con esta guía, su equipo gana autonomía para diagnosticar rebuilds, resolver foreign configurations, gestionar BBU y CacheCade — con escenarios reales de producción documentados.
20 min de leitura
Nginx Cheatsheet
Guía de bolsillo con ejemplos listos para configurar Nginx en producción: desde instalación y virtual hosts hasta ajuste de rendimiento y resolución de problemas.
12 min de leitura
KubernetesCurso Kubernetes 27 — SLO/SLI, on-call y postmortem sin culpa
Qué prometer, cómo medir y qué hacer cuando el error se dispara: SLI, SLO, presupuesto de error, alertas que despiertan a alguien y postmortem sin caza de brujas.
5 min de leitura
Comentarios
Aún sin comentarios
Sea el primero en compartir su opinión sobre este artículo.

Deje un comentario