在 CentOS 上备份 Kubernetes(K8s) 通常分为 集群级备份 和 应用/数据级备份 两类。下面按常见场景给你一个实用型总结,适合生产环境。
K8s 的所有集群状态都存在 etcd 中,这是最重要的备份。
ps -ef | grep etcd
或
kubectl get pods -n kube-system | grep etcd
ETCDCTL_API=3 etcdctl snapshot save /backup/etcd-snapshot-$(date +%F-%H%M).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
✅ 备份文件示例:
/backup/etcd-snapshot-2026-01-21-1430.db
ETCDCTL_API=3 etcdctl snapshot status /backup/etcd-snapshot-*.db
crontab -e
0 2 * * * /usr/local/bin/etcd-backup.sh
#!/bin/bash
BACKUP_DIR=/backup/etcd
mkdir -p $BACKUP_DIR
ETCDCTL_API=3 etcdctl snapshot save \
$BACKUP_DIR/etcd-$(date +%F-%H%M).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
Velero 是 K8s 应用 + PV 备份 的标准方案。
tar -zxvf velero-v1.13.0-linux-amd64.tar.gz
mv velero /usr/local/bin/
velero backup create my-backup --include-namespaces default
查看备份:
velero backup get
velero restore create --from-backup my-backup
✅ 支持:
适合 配置迁移 / 重建集群
kubectl get all --all-namespaces -o yaml > all-resources.yaml
或按命名空间:
kubectl get ns
kubectl get all -n prod -o yaml > prod.yaml
⚠️ 不包含 PV 数据
kubectl exec -it mysql-0 -- mysqldump -u root -p db > db.sql
| 类型 | 频率 | 工具 |
|---|---|---|
| etcd | 每天 | etcdctl |
| K8s 资源 | 每天 | Velero |
| PV 数据 | 按业务 | Restic / 存储快照 |
| 配置文件 | 随时 | Git |
你可以告诉我:
我可以直接给你一套 可复制执行的完整备份恢复方案。