HCCDP-第六章Velero
基于Velero备份恢复的容器迁移实验
本实验旨在指导用户如何使用Velero插件进行容器集群的迁移,并通过本实验,掌握Velero插件迁移操作方法。
预置环境
1.1 源端 CCE 集群购买
1. 在控制台左侧服务列表中找到“云容器引擎CCE”并点击。
2. 点击“创建” CCE Standard 集群。
3. 进入CCE购买界面,按照如图所示参数进行 CCE 的配置:
计费模式:按需计费
区域:华北-北京四
集群名称:cce-source
版本:v1.27
集群规模:50节点
高可用:否
网络模型:VPC网络
虚拟私有云:vpc-cce
所在子网:subnet-cce
容器网段:自动设置网段
除 coredns 及 everest 插件外,本实验暂不配置其他插件。
确认规格后购买集群。
1.2 源端 CCE 集群节点创建
1. 待集群创建完成后,点击进入cce-source 集群。找到左侧目录中的“节点管理”,进入其“节点”页签,并点击右上角的“创建节点”,创建集群节点。
节点参数如下:
计费模式:按需计费
节点规格:通用型 | s6.xlarge.2 | 4核 | 8GB
容器引擎:Containerd
操作系统:公共镜像 EulerOS 2.9
节点名称:cce-source-node
登录方式:密码,并自行设置复杂密码
存储配置:系统盘(高IO,50 GiB)| 数据盘(高IO,200 GiB)
弹性公网IP:全动态BGP | 按流量计费 | 5 Mbit/s
参数配置完成后,点击“提交”,等待节点创建完成。
1.3 安装Velero插件
1. 在控制台找到“对象存储服务OBS”并进入,在对象存储服务的桶列表页面,点击右上角“创建桶”。
设置桶参数如下:
桶名称:自行命名,本例使用velero-cce-test
数据冗余存储策略:单AZ存储
默认存储类别:标准存储
桶策略:私有
设置完成后点击右下角“立即创建”。
即完成OBS桶的创建。
2. 进入云服务器控制台,按照以下配置购买一个 ECS。
区域:华北-北京四
计费模式:按需计费
CPU架构:x86计算
规格:通用计算增强型 | c7.large.2 | 2vCPU | 4GiB
镜像:公共镜像 | CentOS | CentOS 7.6 64bit(40GB)
系统盘:通用型SSD | 40GB
网络:vpc-cce | subnet-cce | 自动分配IP地址
安全组:创建CCE时自动生成的安全组(名称前缀为cce-source-cce-node)
弹性公网IP:现在购买
公网带宽:按流量计费
带宽大小:5Mbit/s
名称:ecs-kubectl
登录凭证:密码
密码&确认密码:自行设置,请设置高复杂度密码
其他未列出的参数:保持默认
3. 确认配置无误后,点击“立即购买”。
创建成功后如下图所示:
4. 进入先前创建的 cce-source 集群的概览页面,下拉找到“连接信息”页签,点击 kubectl 边上的“配置”,并在弹出窗口中选择“JSON” > “下载”,下载 kubectl 配置文件(文件名:cce-source-kubeconfig.json)
5. 打开实验桌面的 Xfce 终端,执行以下命令,登录 ECS。
ssh root@EIP
EIP 请替换为您创建 ECS 的公网 IP,登录密码请输入自定义设置的密码。
6. 执行以下命令,安装 kubectl。
cd /home
wget https://sandbox-expriment-files.obs.cn-north-1.myhuaweicloud.com/20220317/kubectl
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version
返回如下图所示结果,表示已安装成功。
7. 执行以下命令,新建 .kube 目录和 config 文件,并复制步骤5中下载的 kubeconfig.json 文件内所有的内容到 config 文件,然后保存退出。
cd /home
mkdir -p $HOME/.kube
vim $HOME/.kube/config
8. 执行以下命令,配置 Kubernetes 使用 VPC 内网接入。
kubectl config use-context internal
若看到以下回显则说明配置成功
9. 查看 Kubernetes 集群信息。
kubectl cluster-info
返回结果如下图所示:
10. 安装 velero
1)在 ecs-kubectl 中执行以下命令,下载Velero 1.7.0版本的二进制文件。
wget https://sandbox-expriment-files.obs.cn-north-1.myhuaweicloud.com/20220317/velerco-v170.tar.gz
2)安装Velero客户端。
tar -xvf velerco-v170.tar.gz
cp ./velero-v1.7.0-linux-amd64/velero /usr/local/bin
11. 获取访问密钥。
1)鼠标移动到华为云控制台右上角的登录账号,点击“我的凭证”。
2)在我的凭证页面中,点击左侧“访问密钥”,并点击“新增访问密钥”。
3)在弹出的窗口中完成秘钥创建,并下载秘钥文件至本地。
12. 执行以下命令,创建备份对象存储访问秘钥文件 credentials-velero。
vim credentials-velero
文件内容如下,其中的AK/SK请根据实际情况进行替换。
[default]
aws_access_key_id = AK
aws_secret_access_key = SK
13. 执行以下命令,部署 Velero 服务端。
注意:其中 --bucket 参数需要修改为已创建的对象存储桶名称,本例中为 velero-test。
velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.2.1 \
--bucket velero-cce-test \
--secret-file ./credentials-velero \
--use-restic \
--use-volume-snapshots=false \
--backup-location-config region=cn-north-4,s3ForcePathStyle="true",s3Url=http://obs.cn-north-4.myhuaweicloud.com
14. Velero 实例将默认创建一个名为 velero 的 namespace,执行以下命令可查看 pod 状态。
kubectl get pod -n velero
执行以下命令,查看 Velero 工具与对象存储的对接情况,状态需要为available。
velero backup-location get
1.4 部署MySQL服务
1. 在集群控制台,选择左侧菜单栏“工作负载” > “有状态负载”,单击右上角“创建工作负载”。
创建MySQL服务,填写工作负载参数如下:
负载类型:有状态负载
负载名称:mysql
命名空间:default
实例数量:1
在容器配置中,点击“选择镜像”,并选择镜像中心中的mysql镜像:
容器配置的基本信息参数如下:
镜像名称:mysql
镜像版本:5.7
点击“环境变量”,并设置2个环境变量参数:
MYSQL_ROOT_PASSWORD:MySQL的root用户密码设置为“password@123”。
MYSQL_DATABASE:镜像启动时要创建的数据库名称设置为“wordpress”。
配置完成后如下图所示:
在实例间发现服务配置中,填写Service名称为headless-mysql,端口名称为mysql,并设置服务端口及容器端口为3306。
这样在集群内部,通过Service名称:访问端口就可以访问MySQL负载,也就是headless-mysql:3306。
单击右下角“创建工作负载”,等待负载创建完成。
1.5 部署 WordPress 服务
1、接下来创建WordPress工作负载,在集群控制台的工作负载页面,点击右上角的“创建工作负载”,工作负载基本信息如下:
负载类型:无状态负载
负载名称:wordpress
命名空间:default
实例数量:1
在容器配置中选择镜像中心中的wordpress镜像,容器配置的基本信息参数如下:
镜像名称:wordpress
镜像版本:php7.3
在环境变量页面设置4个环境变量参数,让WordPress知道MySQL数据库的信息,根据前面mysql负载的配置:
WORDPRESS_DB_HOST:headless-mysql:3306
WORDPRESS_DB_USER:root
WORDPRESS_DB_PASSWORD:password@123
WORDPRESS_DB_NAME:wordpress
在服务配置处点击“+”号,添加服务。
在创建服务页面设置服务参数如下:
访问类型:负载均衡LoadBalancer
负载均衡器:共享型 | 自动创建 | 实例名称:elb-cce | 公网访问
端口配置:服务端口8000(该端口号将映射到容器端口),容器端口80(容器中应用启动监听的端口)
点击右下角“确定”后,点击右下角“创建工作负载”,等待wordpress状态变为“运行中”。
1.6 创建 PV 及 PVC 。
1. 创建 SFS Turbo 文件系统。
1)在控制台服务列表,找到存储类服务中的“弹性文件服务SFS”并点击进入该服务控制台。
2)在 SFS Turbo 页面,点击右上角“创建文件系统”。
文件系统配置参数如下:
计费模式:按需计费
区域:北京四
可用区:选择任意可用区,本案例选择可用区1
文件系统类型:通用型
存储类型:标准型
容量:500GB(默认)
网络:vpc-cce
安全组:sg-cce(可选择任意安全组)
名称:sfs-turbo-source
其余参数请保持默认设置。
单击“立即创建”。确认信息无误后,单击“提交”。
创建完成后如下图所示:
2. 创建 PV 及 PVC 。
1)在 cce-source 集群控制台,点击左侧菜单的“存储”页面,在“存储卷声明”页签,点击右上角“创建存储卷声明PVC”。
存储卷声明PVC配置参数如下:
存储卷声明类型:极速文件存储
PVC名称:pvc-source
命名空间:default
创建方式:新建存储卷PV
极速文件存储:手动选择上一步创建的sfs-turbo-source
PV名称:pv-efs-source
点击右下角“创建”。
若存储卷声明 PVC 页面出现如下记录,则 PV / PVC 已成功创建。
1.7 进行数据持久化挂载
1. 进入 cce-source 集群的工作负载页面,并点击先前创建的有状态工作负载mysql。
2. 在 mysql 工作负载中,点击“容器管理”,并点击右下方的“编辑”。
在生命周期页签,填写以下运行命令:
/bin/bash
并填写以下运行参数:
-c
rm -rf /var/lib/mysql/lost+found;docker-entrypoint.sh mysqld;
在数据存储页面的下拉菜单,选择“已有存储卷生命(PVC)”。
请保证选择的存储卷声明(PVC)为先前创建的 pvc-souece。
在挂载路径处填写“/var/lib/mysql”,表示挂载到容器的以上路径下,并点击右下角“升级工作负载”。
确认YAML文件后,点击“提交”,并等待mysql工作负载恢复至运行中。
1.8 访问 WordPress 网站
1. 点击进入 wordpress 无状态工作负载详情页,在访问方式页签,复制对应的负载均衡公网IP地址。
2. 将该IP地址粘贴到浏览器并加上8000端口,即访问“IP地址:8000”,进行wordpress的安装。
3. 站点标题可以自行设置,用户名及密码可自行填写并记忆,电子邮箱可自行设置,填写完成后点击“安装wordpress”。
4. 使用刚才设置的用户名密码进行登录。
5. 在wordpress的文章页签,点击“写文章”创建名为“test”的文章,作为后期迁移验证用数据。
2.1 执行Velero命令备份源端集群
1. 登录 ECS,执行以下命令,对源端 CCE 集群内 default 命名空间下的容器进行备份。
velero backup create backup-source --include-namespaces default
2. 执行以下命令,查看备份情况。
velero backup get
进入您创建的OBS桶,查看备份对象数据。
3.1 创建目标端CCE集群
1. 进入 CCE 控制台页面,同步骤1.1,创建 CCE Standard 集群。参数如下:
计费模式:按需计费
区域:华北-北京四
集群名称:cce-target
版本:v1.27
集群规模:50节点
高可用:否
网络模型:VPC网络
虚拟私有云:vpc-cce
所在子网:subnet-cce
容器网段:自动设置网段
仅安装必要插件(coredns,everest),确认规格后购买集群。
2. 待集群创建完成后,为集群创建一个工作节点。
节点参数如下:
计费模式:按需计费
节点规格:通用型 | s6.xlarge.2 | 4核 | 8GB
容器引擎:Containerd
操作系统:公共镜像 EulerOS 2.9
节点名称:cce-target-node
登录方式:密码,并自行设置复杂密码
存储配置:系统盘(高IO,50 GiB)| 数据盘(高IO,200 GiB)
弹性公网IP:全动态BGP | 按流量计费 | 5 Mbit/s
其余参数保持默认。
确认规格后提交购买节点。
3.2 安装Velero插件
1. 同步骤1.4,进入 cce-target 详情页面,点击连接管理中,kubectl后的“配置”,并在弹出窗口中选择“JSON” > “下载”,下载 kubectl 配置文件。
2. 登录 ecs-kubectl,将原来的 config 文件重命名,并新建 config 文件,然后将上一步下载的目标端的 kubeconfig.json 文件内容粘贴到新建的 config 文件中。
cd $HOME/.kube
mv config config.source
vim config
将新下载的 kubeconfig.json 文件内容粘贴进来。
3. 执行以下命令,修改 CCE 链接模式为 VPC 内网链接。
kubectl config use-context internal
4. 执行以下命令,查看 CCE 集群信息。
kubectl cluster-info
5. 在目标端 CCE 集群上部署 Velero 服务端。
注意其中 --bucket 参数需要修改为已创建的对象存储桶名称,本例中为velero-cce-test;需要回到credentials-velero文件所在路径。
velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.2.1 \
--bucket velero-cce-test \
--secret-file ./credentials-velero \
--use-restic \
--restore-only \
--use-volume-snapshots=false \
--backup-location-config region=cn-north-4,s3ForcePathStyle="true",s3Url=http://obs.cn-north-4.myhuaweicloud.com
6. Velero 实例将默认创建一个名为 velero 的namespace,执行以下命令可查看 pod 状态。
kubectl get pod -n velero
7. 查看 Velero 工具与对象存储的对接情况,状态需要为 available。
velero backup-location get
8. 在 ecs-kubectl 中执行以下命令,使用 Velero 工具恢复原集群中的备份。
velero restore create --from-backup backup-source
4.1 检验目标端资源
1. 在CCE控制台验证迁移结果,可观察到负载创建成功。
2. 观察到 PV/PVC 资源也成功创建完成。
*注:本案例沿用sfs-turbo-source作为mysql的持久化存储,实际迁移项目中需要先进行文件系统的迁移。
4.2 目标端业务割接
1. 进入cce-source的工作负载页面,并进入wordpress无状态工作负载。在其“访问方式”页签,删除wordpress服务配置,以释放elb的8000端口。
2. 进入 cce-target 的工作负载页面,并进入wordpress无状态工作负载。在其“访问方式”页签,以相同方式删除已有wordpress服务,并进行服务重建,配置步骤与1.5.1保持一致。
3. 重建wordpress服务后,打开浏览器输入ELB公网IP+8000端口,应可以访问到相同的wordpress界面并看到步骤1.8创建的test文章。
华为开发者空间发布
让每位开发者拥有一台云主机
- 点赞
- 收藏
- 关注作者
评论(0)