AWS EKS上Kubeflow Pipeline的备份与恢复方案咨询
Kubeflow Pipeline 备份与恢复方案(AWS EKS环境)
一、备份运行中的Pipeline
1. 备份Pipeline元数据(数据库层面)
Kubeflow Pipeline vanilla版本默认使用MySQL作为元数据库,直接通过Pod执行导出命令即可:
- 第一步:定位数据库Pod并获取密码
# 列出kubeflow命名空间下的MySQL Pod kubectl get pods -n kubeflow | grep mysql # 从Secret中提取数据库root密码 kubectl get secret -n kubeflow mlpipeline-db-secret -o jsonpath='{.data.password}' | base64 -d - 第二步:导出数据库备份文件
# 将mlpipeline数据库导出到本地文件 kubectl exec -n kubeflow <mysql-pod-name> -- mysqldump -u root -p<获取到的密码> mlpipeline > mlpipeline_backup.sql
2. 备份Pipeline Artifacts(存储层面)
Pipeline运行产生的 artifacts 通常存储在PVC中(AWS环境多为EBS/EFS),可通过两种方式备份:
- 方式一:云原生存储快照
直接对绑定PVC的EBS卷创建快照(AWS控制台或CLI),或给EFS开启自动备份策略,这是最可靠的备份方式。 - 方式二:手动拷贝文件
临时启动挂载目标PVC的Pod,将文件拷贝到本地:# 创建临时Pod挂载目标PVC(替换PVC_NAME为实际名称) kubectl run -n kubeflow temp-copy --image=busybox --restart=Never --command -- sleep 3600 kubectl volume attach -n kubeflow temp-copy --volume-name=<PVC_NAME> --mount-path=/artifacts # 拷贝文件到本地 kubectl cp -n kubeflow temp-copy:/artifacts ./pipeline_artifacts_backup # 删除临时Pod kubectl delete pod -n kubeflow temp-copy
二、恢复方案
场景1:Kubeflow安装失败但EKS集群完好
- 重新部署与原版本完全一致的Kubeflow到集群中
- 恢复元数据库:
# 将备份的SQL文件拷贝到新的MySQL Pod中 kubectl cp mlpipeline_backup.sql -n kubeflow <new-mysql-pod-name>:/tmp/ # 导入数据库(替换新的数据库密码) kubectl exec -n kubeflow <new-mysql-pod-name> -- mysql -u root -p<new-password> mlpipeline < /tmp/mlpipeline_backup.sql - 恢复Artifacts存储:
- 若用EBS快照:基于快照创建新卷,绑定到新Kubeflow对应的PVC
- 若用手动拷贝:将备份的artifacts目录拷贝回新PVC对应的Pod中(参考备份时的临时Pod方法)
场景2:EKS集群完全损坏,需重建集群
- 新建同配置的EKS集群,部署与原版本一致的Kubeflow
- 恢复元数据库:同场景1的数据库导入步骤
- 恢复Artifacts存储:
- 基于之前的EBS/EFS备份创建新的存储资源,绑定到新Kubeflow的PVC
- 若为手动备份,将artifacts上传到新存储中
关键注意事项
- 必须保证新旧Kubeflow版本完全一致,避免元数据结构不兼容导致恢复失败
- 定期自动执行备份:可通过Kubernetes CronJob定时运行数据库导出命令,并将备份文件同步到S3等持久存储
- 数据库密码需匹配:恢复时若新集群的数据库密码不同,需调整备份SQL中的相关配置或修改新集群的Secret密码
内容的提问来源于stack exchange,提问作者sabbir ahmed
相关产品推荐
相关产品推荐

