debian

Debian上Kubernetes如何恢复数据

小樊
38
2025-10-02 08:17:32
栏目: 智能运维

Debian上Kubernetes数据恢复指南
在Debian系统上恢复Kubernetes数据,核心围绕**etcd(集群状态存储)Velero(集群资源备份)**展开。以下是具体步骤及注意事项:

一、准备工作

  1. 确认备份可用性:确保已通过etcdctl或Velero创建了有效的备份文件(etcd快照或Velero集群备份)。
  2. 环境检查:所有节点(尤其是主节点)需正常运行,具备管理员权限(sudo),网络连接稳定。
  3. 工具安装:根据备份方式安装必要工具(如etcdctl、Velero CLI),确保版本与集群兼容。

二、基于etcd的集群核心数据恢复

etcd存储了Kubernetes的所有配置(如Pod、Deployment、ConfigMap)和状态信息,是恢复的关键。

1. 单节点etcd恢复步骤

2. 多节点etcd集群恢复

若为多节点etcd集群,需在所有节点执行上述恢复步骤,并确保--initial-cluster参数包含所有节点的信息(如etcd-node1=https://10.0.0.1:2380,etcd-node2=https://10.0.0.2:2380),以重建完整的集群拓扑。

三、基于Velero的集群资源恢复

Velero可备份Kubernetes资源(如Deployments、Services、PersistentVolumeClaims),恢复时无需重启核心组件。

1. 恢复整个集群

若已使用Velero创建了集群备份(如my-backup),可直接通过以下命令恢复所有资源:

velero restore create --from-backup my-backup

2. 恢复特定资源

若只需恢复部分资源(如某个Namespace的Deployments),可通过--include-namespaces--include-resources参数指定:

velero restore create --from-backup my-backup \
  --include-namespaces=my-namespace \  # 仅恢复指定Namespace
  --include-resources=deployments,configmaps  # 仅恢复指定资源类型

3. 验证恢复结果

恢复完成后,检查资源是否正常运行:

kubectl get deployments -n my-namespace  # 检查Deployments
kubectl get pods -n my-namespace         # 检查Pods状态

四、精准恢复单个资源(可选)

若仅需恢复单个资源(如误删除的ConfigMap),可通过etcd快照提取并解码资源,再用kubectl应用:

1. 提取资源键

etcd中资源的键遵循固定路径(如ConfigMap存储在/registry/configmaps/<namespace>/<name>):

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 \
  get --prefix "/registry/configmaps/production" --keys-only  # 列出指定Namespace下的ConfigMap键

2. 解码并保存为YAML

使用auger工具将etcd中的二进制数据解码为YAML文件:

etcdctl --endpoints=https://127.0.0.1:2379 \
  get /registry/configmaps/production/app-config --print-value-only | auger decode > app-config.yaml

3. 应用资源

将解码后的YAML文件应用到集群:

kubectl apply -f app-config.yaml --dry-run=server  # 干运行测试
kubectl apply -f app-config.yaml                  # 正式应用

五、注意事项

0
看了该问题的人还看了