温馨提示×

centos k8s怎样备份数据

小樊
55
2026-09-06 11:44:49
栏目: 智能运维

在 CentOS 上运行的 Kubernetes(k8s),备份通常分为 3 类:
1️⃣ etcd 备份(集群核心)
2️⃣ 应用数据备份(PVC / 数据库)
3️⃣ 集群资源配置备份(YAML / 对象)

下面按「最常用 + 生产推荐」给你说明。


一、etcd 备份(最重要❗)

etcd 保存了 整个 k8s 集群状态,必须定期备份。

1️⃣ 查看 etcd 容器(kubeadm 安装为例)

docker ps | grep etcd

2️⃣ 手动备份 etcd

ETCDCTL_API=3 etcdctl \
--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 \
snapshot save /backup/etcd-snapshot-$(date +%F).db

3️⃣ 恢复 etcd(灾难恢复)

ETCDCTL_API=3 etcdctl snapshot restore \
/backup/etcd-snapshot-2026-01-21.db \
--data-dir /var/lib/etcd-restore

然后修改 /etc/kubernetes/manifests/etcd.yaml 中的 data-dir。


二、PVC / 存储数据备份

方式 1:Velero(✅ 强烈推荐)

Velero 是 CNCF 官方备份工具,支持:

  • PVC 备份
  • 命名空间级恢复
  • 可备份到 S3 / MinIO

安装(CentOS)

wget https://github.com/vmware-tanzu/velero/releases/download/v1.13.0/velero-v1.13.0-linux-amd64.tar.gz
tar zxvf velero-*.tar.gz
mv velero-*/velero /usr/local/bin/

备份示例

velero backup create my-backup \
--include-namespaces my-app

恢复

velero restore create --from-backup my-backup

方式 2:直接备份 PV(手动)

适用于本地存储(hostPath / NFS):

kubectl exec -it pod-name -- tar czf /tmp/data.tar.gz /data
kubectl cp pod-name:/tmp/data.tar.gz ./data.tar.gz

三、集群资源备份(YAML)

1️⃣ 导出所有资源

kubectl get all --all-namespaces -o yaml > k8s-all.yaml

2️⃣ 使用 etcd + 资源 YAML 组合(推荐)

  • etcd:恢复集群状态
  • YAML:快速重建应用

四、数据库专项备份(常见)

MySQL

kubectl exec mysql-pod -- \
mysqldump -uroot -p密码 dbname > db.sql

PostgreSQL

kubectl exec pg-pod -- \
pg_dump -U user dbname > db.sql

五、生产建议(重要)

✅ etcd 每天备份
✅ Velero 每周全量 + 每日增量
✅ 备份文件异地存储(S3 / 对象存储)
✅ 定期做 恢复演练


如果你告诉我:

  • k8s 安装方式(kubeadm / 二进制 / 云厂商)
  • 存储类型(NFS / Ceph / 云盘)
  • 是否生产环境

我可以给你 定制备份方案 + 脚本 + crontab。

0 踩