velero v1.14.1迁移kubernetes集群

1 概述

velero是vmware开源的一个备份和恢复工具,可作用于kubernetes集群下的任意对象和应用数据(PV上的数据)。github地址是https://github.com/vmware-tanzu/velero。

对于应用数据,可分文件级别的复制和块级别的复制。文件级别的复制是更加通用的。数据恢复时,pod会被打入一个init容器(velero-restore-helper)来准备数据目录(从远程对象存储中下载并解密),init容器完成后再启动业务容器。

1)文件级别的复制
将deployment、statefulset、pvc、pv等k8s对象以及容器中挂载的数据目录(会被加密),都备份到远程对象存储中。

2)块设备的复制
将deployment、statefulset、pvc、pv等k8s对象备份到远程对象存储中,并且在pv底层的存储系统中创建快照。

在架构上,velero分为服务端和命令行。服务端是一个控制器,监听k8s自定义资源来做协调,自定义资源则是对备份和恢复这两个概念的抽象,名称就是backup和restore。

2 环境

两个kubernetes集群(v1.29),一个的对象存储桶(华为云OBS服务)。对象存储桶具体信息是:region为cn-north-1,端点为obs.cn-south-1.myhuaweicloud.com,桶名称为velerobackup。


3 部署velero

同时在两个kubernetes集群中,下载velero二进制命令行工具。

wget https://github.com/vmware-tanzu/velero/releases/download/v1.14.1/velero-v1.14.1-linux-amd64.tar.gz
tar -xf velero-v1.14.1-linux-amd64.tar.gz
mv velero-v1.14.1-linux-amd64/velero /usr/bin
velero version

准备对象存储桶的ak、sk,并将它们写入到一个固定文件/opt/credentials-velero。

export ak=*******yourak*******
export sk=*******yoursk*******

cat > /opt/credentials-velero << EOF
[default]
aws_access_key_id = $ak
aws_secret_access_key = $sk
EOF

通过velero命令行工具同时在两个kubernetes集群中安装velero服务端。

# 对于华为云对象存储,协议必须是http,使用https协议velero会出现问题
velero install \
  --kubeconfig /root/.kube/config \
  --velero-pod-cpu-request 500m \
  --velero-pod-mem-request 0.5Gi \
  --velero-pod-cpu-limit 1000m \
  --velero-pod-mem-limit 1Gi \
  --use-node-agent \
  --node-agent-pod-cpu-request 500m \
  --node-agent-pod-mem-request 0.5Gi \
  --node-agent-pod-cpu-limit 1000m \
  --node-agent-pod-mem-limit 1Gi \
  --provider aws \
  --plugins velero/velero-plugin-for-aws:v1.9.1 \
  --bucket velerobackup \
  --secret-file /opt/credentials-velero \
  --use-volume-snapshots=false \
  --backup-location-config region=cn-north-1,s3ForcePathStyle="true",s3Url=http://obs.cn-south-1.myhuaweicloud.com

通过以下命令查看velero服务端的信息

kubectl get pod -n velero

在这里插入图片描述

通过以下命令查看对象存储的信息

kubectl get BackupStorageLocation -n velero default

在这里插入图片描述

4 备份

在一个kubernetes集群A中执行备份,备份的是default和demo这两个namespace下的所有k8s对象。

velero backup create second-backup --include-namespaces=default,demo --default-volumes-to-fs-backup

接着,在对象存储中可以看见备份文件上传了。
在这里插入图片描述

过一会,也会在另一个kubernetes集群B中看见一个新的backup对象,这个对象是velero控制器新创建的。
在这里插入图片描述


5 恢复

在kubernetes集群B中,执行以下命令,会将保存在对象存储中的k8s对象导入到该集群。

velero restore create --from-backup second-backup

6 小结

在本次操作过程中,最大的阻碍点是:如果在velero的安装参数指定了华为云对象存储的端点是https协议,会发生报错,velero服务端得到的响应是The x-amz-content-sha256 you specified did not match what we received。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值