Registry 数据备份和恢复
目录
概述前提条件数据备份第 1 步:获取当前 S3 配置第 2 步:执行 S3 存储桶数据备份数据恢复第 1 步:准备备份数据第 2 步:更新 ModuleInfo 配置验证检查global 集群中的模块状态验证数据访问(API 测试)功能测试其他存储后端概述
当 registry 镜像数据存储在 S3 兼容对象存储中时,可使用此操作步骤对 Registry 数据进行备份和恢复。
此恢复模型将存储在 S3 中的镜像数据与 Kubernetes ModuleInfo 自定义资源中定义的 Cluster Plugin 配置分离开来。
- 备份:从
ModuleInfo资源中获取 S3 配置,并备份指定存储桶中的数据。 - 恢复:在新集群或修复后的集群中安装 Cluster Plugin 后,更新
ModuleInfo资源中的 S3 配置,使其指向包含已恢复数据的存储桶。
这种模型使数据备份和恢复独立于 Cluster Plugin 的部署和升级操作。所有连接信息都通过声明式 ModuleInfo 资源进行管理。
前提条件
- 已具备
kubectl访问权限,并拥有在目标 Kubernetes 集群上执行操作的适当权限。 - 已具备用于访问和操作镜像数据所使用的 S3 兼容存储的凭据和客户端工具(例如 awscli、rclone、minio-client)。
- 已安装并配置 Registry Cluster Plugin,且其
ModuleInfo资源已存在并处于健康状态。 - 已准备好独立且容量充足的存储用于备份数据(例如另一个 S3 存储桶)。
数据备份
在备份过程中,获取当前生产环境的 S3 配置,并对存储桶中的镜像数据执行完整备份。
第 1 步:获取当前 S3 配置
从管理 Registry Cluster Plugin 的 ModuleInfo 资源中提取 S3 存储配置。
此信息是执行备份操作的基础。
在 global 集群上运行以下命令:
关键变量说明:
S3_BUCKET:实际存储镜像数据的源存储桶名称。S3_ENDPOINT:连接 S3 兼容服务的端点 URL。S3_REGION:S3 服务的地域标识符。S3_SECRET_NAME:存储认证密钥的 Kubernetes Secret 名称。
第 2 步:执行 S3 存储桶数据备份
使用任意 S3 客户端工具,结合上一步获取的配置,对源存储桶数据执行完整备份。
使用以下备份逻辑:
- 使用端点($S3_ENDPOINT)、地域($S3_REGION),以及从 Secret 解码得到的 access key 和 secret key 配置客户端。
- 执行 sync 或 copy 命令,将源存储桶($S3_BUCKET)中的所有数据备份到已准备好的独立备份位置(例如另一个 S3 存储桶或路径)。
- 记录备份时间戳、所使用的存储桶名称和端点,并将这些信息与备份文件一起归档。
数据恢复
在恢复之前,请先在目标环境中安装 Registry Cluster Plugin,例如新集群或修复后的集群。然后修改配置,使 registry 能够访问已恢复的镜像数据。
第 1 步:准备备份数据
使用任意 S3 客户端工具,将已备份的镜像数据恢复到一个明确可访问的目标 S3 存储 bucket 中。例如,可恢复到名为 registry-bucket-restored 的新存储桶中。确保你对该目标存储桶具有写权限。
第 2 步:更新 ModuleInfo 配置
恢复的关键在于更新新 cluster plugin 的 ModuleInfo 资源,使其 S3 配置指向包含备份数据的目标存储桶。
-
确定新的 S3 连接信息:
NEW_BUCKET:已恢复备份数据的目标存储桶名称(例如,registry-bucket-restored)。NEW_ENDPOINT:目标 S3 服务的端点。如果 S3 服务地址与备份时相同,则保持不变。NEW_REGION:目标 S3 服务的地域。NEW_SECRET_NAME:具有对目标存储桶读/写权限的 Kubernetes Secret 名称。如果 access key 未更改,则仍为$S3_SECRET_NAME。
-
更新 ModuleInfo 资源:
使用
kubectl patch命令直接更新ModuleInfo的 S3 配置部分。平台控制器将自动将此更改同步到所有相关的 Deployment、Pod 及其他资源。
要点:此操作会触发 Registry Pods 的滚动更新。新启动的 Pods 将使用新配置连接到指定的目标存储桶。
验证
更新完成后,请按照以下步骤验证数据恢复是否成功以及服务是否正常运行。
检查 global 集群中的模块状态
验证数据访问(API 测试)
使用 Registry 的 API 接口直接验证其是否能够读取已恢复的镜像数据。
功能测试
尝试从已恢复的 registry 中拉取一个已知镜像,或向其中推送一个新镜像,以完整验证读/写功能。
其他存储后端
本操作步骤以 S3 存储为示例。在具备相应备份和恢复工具的情况下,相同的恢复模型也可应用于 Registry 支持的其他存储后端,例如本地文件系统、StorageClass 或 NAS。
无论存储类型如何,首先都应从 ModuleInfo 资源中对应的配置块(例如 s3storage 或 persistence)提取存储连接参数。然后使用适当的存储工具备份数据。在恢复期间,将数据恢复到目标位置,并更新 ModuleInfo 中对应的配置字段,使新部署的 registry 实例使用该位置。