
# 迁移工具安装
Velero是开源的 Kubernetes 集群备份、迁移工具，集成了Restic工具对PV数据的备份能力，可以通过Velero工具将原集群中的K8s资源对象（如Deployment、Job、Service、ConfigMap等）和Pod挂载的持久卷数据保存备份上传至对象存储。在发生灾难或需要迁移时，目标集群可使用Velero从对象存储中拉取对应的备份，按需进行集群资源的还原。
根据[迁移方案](https://support.huaweicloud.com/bestpractice-cce/cce_bestpractice_0307.html#cce_bestpractice_0307__section96147345128)所述，在迁移开始前需准备临时的对象存储用于存放资源的备份文件，Velero支持使用OBS对象存储。
#### 前提条件
- 原始自建集群Kubernetes版本需1.10及以上，且集群可正常使用DNS与互联网服务。
- 若您使用OBS存放备份文件，需已有OBS操作权限用户的AK/SK，请参考[获取访问密钥（AK/SK）](https://support.huaweicloud.com/api-obs/obs_04_0116.html)。不支持使用临时AK/SK。
- 已创建迁移的目标CCE集群。
- 原集群和目标集群中需要至少各拥有一个空闲节点，节点规格建议为4U8G及以上。
 
#### 安装Velero
首先前往OBS控制台，创建存放备份文件的桶并命名为**velero** 。此处桶名称可自定义，但安装Velero时必须指定此桶名称，否则将无法访问导致备份失败，参见[5]。
![](https://support.huaweicloud.com/bestpractice-cce/public_sys-resources/notice_3.0-zh-cn.png)
- **原集群和目标集群**中均需要安装部署Velero实例，安装步骤一致，分别用于备份和恢复。
- CCE集群的Master节点不对外提供远程登录端口，您可通过kubectl操作集群完成Velero安装。
- 如果备份资源量较大，请调整Velero及node-agent工具的cpu和内存资源（建议调整至1U1G及以上），请参考[备份工具资源分配不足](https://support.huaweicloud.com/bestpractice-cce/cce_bestpractice_0314.html#cce_bestpractice_0314__section321054511332)。
- 用于存放备份文件的对象存储桶**需要是空桶**。
 
从Velero官方发布路径<https://github.com/velero-io/velero/releases>下载最新的稳定版二进制文件，本文以Velero 1.13.1版本为例。原集群和目标集群中的安装过程一致，请参考如下步骤。
1. 登录一台可以访问公网的虚拟机，并使用kubectl连接需要安装Velero的集群。
2. 下载[Velero 1.13.1版本](https://github.com/velero-io/velero/releases/download/v1.13.1/velero-v1.13.1-linux-amd64.tar.gz)的二进制文件。
   
   ```
   wget https://github.com/vmware-tanzu/velero/releases/download/v1.13.1/velero-v1.13.1-linux-amd64.tar.gz
   ```
   
   
3. 安装Velero客户端。 
   ```
   tar -xvf velero-v1.13.1-linux-amd64.tar.gz
   cp ./velero-v1.13.1-linux-amd64/velero /usr/local/bin
   ```
   
   
4. 创建备份对象存储访问密钥文件credentials-velero。
   
   ```
   vim credentials-velero
   ```
   文件内容如下，其中的AK/SK请根据实际情况进行替换。使用OBS时，可参考[获取访问密钥（AK/SK）](https://support.huaweicloud.com/api-obs/obs_04_0116.html)获取AK/SK。
   ```
   [default]
   aws_access_key_id = {AK}
   aws_secret_access_key = {SK}
   ```
   
   
5. 部署Velero服务端。注意其中--bucket参数需要修改为已创建的对象存储桶名称，本例中为**velero** 。关于更多自定义安装参数，请参考[自定义安装Velero](https://velero.io/docs/v1.13/customize-installation/)。
   
   ```
   velero install \
     --provider aws \
     --plugins velero/velero-plugin-for-aws:v1.9.1 \
     --bucket velero \
     --secret-file ./credentials-velero \
     --use-node-agent \
     --use-volume-snapshots=false \
     --backup-location-config region=cn-north-4,s3ForcePathStyle="false",s3Url=http://obs.cn-north-4.myhuaweicloud.com
   ```
   表1Velero安装参数说明 
   | 安装参数                     | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   |:---|:---|
   | --provider               | 声明使用的插件类型为AWS S3组件，本文使用的OBS对象存储支持标准的AWS S3协议。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | --plugins                | 使用AWS S3兼容的API组件，本文使用的OBS对象存储支持标准的S3协议。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | --bucket                 | 用于存放备份文件的对象存储桶名称，需提前创建。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | --secret-file            | 访问对象存储的密钥文件，即[4]中创建的"credentials-velero"文件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | --use-node-agent         | PV数据备份，建议开启，否则将无法备份存储卷资源。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | --use-volume-snapshots   | 是否创建 VolumeSnapshotLocation 对象进行PV快照，需要提供快照程序支持。该值设为false。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   | --backup-location-config | 对象存储桶相关配置，包括region、s3ForcePathStyle、s3Url等。 - region：对象存储桶所在区域。 - 请根据实际区域填写，如"cn-north-4"。    - s3ForcePathStyle： - 参数值设置为"false"，表示使用虚拟主机格式的桶域名，将桶名直接嵌入到访问域名中，形如"{bucket-name}.obs.{region}.{domain}.com"。  - 参数值设置为"true"，表示使用路径格式的桶域名，如obs.{region}.{domain}.com/{bucket-name}"。当前OBS部分局点已禁用该格式的域名访问，可能出现对象桶无法连接的问题。    - s3Url：对象存储桶的API访问地址。 - 该参数值需根据对象存储桶地域决定，参数值为"http://obs.{region}.myhuaweicloud.com"。例如区域为北京四（cn-north-4），则参数值为"http://obs.cn-north-4.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
   ```
   ![](https://support.huaweicloud.com/bestpractice-cce/public_sys-resources/note_3.0-zh-cn.png)
   为防止在实际生产环境中备份时出现内存不足的情况，建议您参照[备份工具资源分配不足](https://support.huaweicloud.com/bestpractice-cce/cce_bestpractice_0314.html#cce_bestpractice_0314__section321054511332)，修改node-agent和Velero分配的CPU和内存大小。
   
   
7. 查看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
   ```
   
   
 
#### 卸载velero
如果您想从集群中完全卸载Velero，执行以下命令将删除由velero创建的所有资源：
```
velero uninstall
```
