更新时间:2025-07-11 GMT+08:00

迁移工具安装

Velero是开源的 Kubernetes 集群备份、迁移工具,集成了Restic工具对PV数据的备份能力,可以通过Velero工具将原集群中的K8s资源对象(如Deployment、Job、Service、ConfigMap等)和Pod挂载的持久卷数据保存备份上传至对象存储。在发生灾难或需要迁移时,目标集群可使用Velero从对象存储中拉取对应的备份,按需进行集群资源的还原。

根据迁移方案所述,在迁移开始前需准备临时的对象存储用于存放资源的备份文件,Velero支持使用OBS对象存储,请参考安装Velero进行Velero的部署。

前提条件

  • 原始自建集群Kubernetes版本需1.10及以上,且集群可正常使用DNS与互联网服务。
  • 若您使用OBS存放备份文件,需已有OBS操作权限用户的AK/SK,请参考获取访问密钥(AK/SK)
  • 已创建迁移的目标CCE集群。
  • 原集群和目标集群中需要至少各拥有一个空闲节点,节点规格建议为4U8G及以上。

安装Velero

首先前往OBS控制台,创建存放备份文件的桶并命名为velero。此处桶名称可自定义,但安装Velero时必须指定此桶名称,否则将无法访问导致备份失败,参见5

  • 原集群和目标集群中均需要安装部署Velero实例,安装步骤一致,分别用于备份和恢复。
  • CCE集群的Master节点不对外提供远程登录端口,您可通过kubectl操作集群完成Velero安装。
  • 如果备份资源量较大,请调整Velero及node-agent工具的cpu和内存资源(建议调整至1U1G及以上),请参考备份工具资源分配不足
  • 用于存放备份文件的对象存储桶需要是空桶

从Velero官方发布路径https://github.com/vmware-tanzu/velero/releases下载最新的稳定版二进制文件,本文以Velero 1.15.1版本为例。原集群和目标集群中的安装过程一致,请参考如下步骤。

  1. 登录一台可以访问公网的虚拟机,并使用kubectl连接需要安装Velero的集群。
  2. 下载Velero 1.15.1版本的二进制文件。

    wget https://github.com/vmware-tanzu/velero/releases/download/v1.15.1/velero-v1.15.1-linux-amd64.tar.gz

  3. 安装Velero客户端。

    tar -xvf velero-v1.15.1-linux-amd64.tar.gz
    cp ./velero-v1.15.1-linux-amd64/velero /usr/local/bin

  4. 创建备份对象存储访问密钥文件credentials-velero。

    vim credentials-velero
    文件内容如下,其中的AK/SK请根据实际情况进行替换。使用OBS时,可参考获取访问密钥(AK/SK)获取AK/SK。
    OBS_ACCESS_KEY=<Your AK>
    OBS_SECRET_KEY=<Your SK>

  5. 部署Velero服务端。注意其中--bucket参数需要修改为已创建的对象存储桶名称,本例中为velero。关于更多自定义安装参数,请参考自定义安装Velero

    velero install \
      --provider huawei.com/huaweicloud \
      --plugins swr.ap-southeast-1.myhuaweicloud.com/huaweiclouddeveloper/velero-plugin-for-huaweicloud:v1.0.0 \
      --bucket velero \
      --secret-file ./credentials-velero \
      --use-node-agent \
      --use-volume-snapshots=false \
      --backup-location-config endpoint=obs.ap-southeast-1.myhuaweicloud.com
    表1 Velero安装参数说明

    安装参数

    参数说明

    --provider

    声明使用的组件提供商。本文使用HuaweiCloud组件,详情请参见Plugins to support Velero on HuaweiCloud

    --plugins

    使用组件的容器镜像地址。

    --bucket

    用于存放备份文件的对象存储桶名称,需提前创建。

    --secret-file

    访问对象存储的密钥文件,即4中创建的“credentials-velero”文件。

    --use-node-agent

    PV数据备份,建议开启,否则将无法备份存储卷资源。

    --use-volume-snapshots

    是否创建 VolumeSnapshotLocation 对象进行PV快照,需要提供快照程序支持。该值设为false。

    --backup-location-config

    填写对象存储桶相关配置。

    • endpoint,表示对象存储桶的API访问地址。该参数值需根据对象存储桶地域决定。

      例如区域为香港(ap-southeast-1),则参数值为“obs.ap-southeast-1.myhuaweicloud.com”

  6. Velero实例将默认创建一个名为velero的namespace,执行以下命令可查看Pod状态。

    kubectl get pod -n velero

    回显如下:

    NAME                   READY   STATUS    RESTARTS   AGE
    node-agent-rn29c       1/1     Running   0          16s
    velero-c9ddd56-tkzpk   1/1     Running   0          16s

    为防止在实际生产环境中备份时出现内存不足的情况,建议您参照备份工具资源分配不足,修改node-agent和Velero分配的CPU和内存大小。

  7. 为Velero实例添加环境变量,读取访问对象存储的密钥文件。

    kubectl patch deployment velero -n velero --patch \ '{"spec":{"template":{"spec":{"containers":[{"name": "velero", "env": [{"name": "HUAWEI_CLOUD_CREDENTIALS_FILE", "value": "/credentials/cloud"}]}]}}}}'

  8. 查看Velero工具与对象存储的对接情况,状态需要为Available。

    velero backup-location get

    回显如下:

    NAME      PROVIDER   BUCKET/PREFIX   PHASE       LAST VALIDATED                  ACCESS MODE   DEFAULT
    default   ***        velero          Available   2025-06-04 17:40:55 +0800 CST   ReadWrite     true