3. Velero 安装与配置:使用 Helm 安装 Velero、配置对象存储(如 MinIO、AWS S3)、验证安装状态
3.1 安装前准备:环境与权限检查
在部署 Velero 之前,需要确认 Kubernetes 集群版本、kubectl 上下文以及 Helm 版本均满足要求。以下为最低环境要求清单:
| 组件 | 最低版本 | 推荐版本 | 备注 |
|---|---|---|---|
| Kubernetes | 1.16 | 1.24+ | 需支持 CSI 快照 |
| Helm | 3.2 | 3.10+ | 需支持 OCI 仓库 |
| kubectl | 1.18 | 1.24+ | 与集群版本匹配 |
| 对象存储 | — | MinIO / AWS S3 | 需提前创建 Bucket |
操作前确认:执行
kubectl cluster-info 确认集群可达;执行 helm version 确认 Helm 版本;确保目标对象存储 Bucket 已创建且网络可达。
3.2 添加 Helm 仓库与更新索引
Velero 官方 Helm Chart 托管在 VMware 维护的仓库中。使用以下命令添加并更新:
# 添加 Velero Helm 仓库
helm repo add vmware-tanzu https://vmware-tanzu.github.io/helm-charts
# 更新本地索引
helm repo update
# 搜索可用版本(可选)
helm search repo vmware-tanzu/velero --versions
版本锁定建议:生产环境应指定 Chart 版本号,例如
--version 5.1.0,避免自动升级导致配置不兼容。
3.3 配置对象存储凭证
Velero 需要访问对象存储的凭证才能读写备份数据。根据存储后端类型,凭证文件格式不同。
3.3.1 MinIO 凭证配置
MinIO 使用兼容 S3 的 Access Key / Secret Key。创建 credentials-velero 文件:
[default]
aws_access_key_id = minioadmin
aws_secret_access_key = minioadmin
将凭证文件创建为 Kubernetes Secret:
kubectl create namespace velero
kubectl create secret generic cloud-credentials \
--namespace velero \
--from-file=cloud=credentials-velero
3.3.2 AWS S3 凭证配置
对于 AWS S3,推荐使用 IAM 用户或 IAM Role for Service Account(IRSA)。凭证文件格式相同:
[default]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
安全警告:切勿将生产环境密钥硬编码在脚本中。使用 IRSA 或外部密钥管理服务(如 Vault)是更安全的选择。
3.4 使用 Helm 安装 Velero
根据存储后端不同,Helm 安装命令的参数有所差异。以下分别给出 MinIO 和 AWS S3 的典型配置。
3.4.1 安装至 MinIO
helm install velero vmware-tanzu/velero \
--namespace velero \
--create-namespace \
--set configuration.provider=aws \
--set configuration.backupStorageLocation.name=default \
--set configuration.backupStorageLocation.bucket=velero-backup \
--set configuration.backupStorageLocation.config.region=minio \
--set configuration.backupStorageLocation.config.s3Url=http://minio.minio:9000 \
--set configuration.backupStorageLocation.config.publicUrl=http://minio.minio:9000 \
--set configuration.backupStorageLocation.config.s3ForcePathStyle=true \
--set snapshotsEnabled=false \
--set initContainers[0].name=velero-plugin-for-aws \
--set initContainers[0].image=velero/velero-plugin-for-aws:v1.7.0 \
--set initContainers[0].volumeMounts[0].mountPath=/target \
--set initContainers[0].volumeMounts[0].name=plugins
3.4.2 安装至 AWS S3
helm install velero vmware-tanzu/velero \
--namespace velero \
--create-namespace \
--set configuration.provider=aws \
--set configuration.backupStorageLocation.name=default \
--set configuration.backupStorageLocation.bucket=my-velero-bucket \
--set configuration.backupStorageLocation.config.region=us-west-2 \
--set snapshotsEnabled=true \
--set deployNodeAgent=true \
--set initContainers[0].name=velero-plugin-for-aws \
--set initContainers[0].image=velero/velero-plugin-for-aws:v1.7.0 \
--set initContainers[0].volumeMounts[0].mountPath=/target \
--set initContainers[0].volumeMounts[0].name=plugins
参数说明:
s3ForcePathStyle=true 是 MinIO 等非 AWS 兼容存储的必需参数;snapshotsEnabled 控制是否启用卷快照功能,需要集群支持 VolumeSnapshotClass。
3.5 验证安装状态
安装完成后,通过以下步骤验证 Velero 组件是否正常运行。
3.5.1 检查 Pod 状态
kubectl get pods -n velero
# 期望输出示例:
# NAME READY STATUS RESTARTS AGE
# velero-7d8b6f8b9c-abc12 1/1 Running 0 2m
3.5.2 检查 BackupStorageLocation 状态
kubectl get backupstoragelocation -n velero
# 期望输出示例:
# NAME PHASE LAST VALIDATED AGE
# default Available 10s 2m
如果 Phase 为 Available,表示 Velero 已成功连接到对象存储。
3.5.3 执行测试备份
velero backup create test-backup --include-namespaces default
# 查看备份状态
velero backup describe test-backup
验证要点:备份完成后,登录 MinIO 控制台或 AWS S3 控制台,确认 Bucket 中已生成
backups/test-backup/ 目录及对应的 JSON 和 tar 文件。
3.6 安装架构与数据流
下图展示了 Velero 安装后的核心组件关系及备份数据流:
3.7 常见安装问题与排查
| 问题现象 | 可能原因 | 排查命令 / 解决方案 |
|---|---|---|
| Pod 处于 CrashLoopBackOff | 凭证 Secret 未正确挂载或格式错误 | kubectl logs -n velero velero-xxx 查看日志;检查 Secret 名称与挂载路径 |
| BackupStorageLocation 状态为 Unavailable | 对象存储网络不可达或 Bucket 不存在 | kubectl describe backupstoragelocation -n velero 查看错误信息;测试网络连通性 |
| 备份失败:InvalidAccessKeyId | 凭证密钥错误或过期 | 重新生成密钥并更新 Secret;检查 IAM 权限策略 |
| 卷快照未创建 | VolumeSnapshotClass 未配置或 CSI 驱动未安装 | kubectl get volumesnapshotclass 检查;安装对应 CSI 驱动 |
生产环境建议:安装完成后立即执行一次测试备份与恢复,验证整个数据链路的完整性。不要等到真正需要恢复时才发现配置错误。