当前位置: 首页 > news >正文

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。


http://www.mrgr.cn/news/25642.html

相关文章:

  • B2064 斐波那契数列
  • 【oj刷题】滑动窗口篇:滑动窗口的应用场景和注意事项
  • 【ShuQiHere】深入浅出栈(Stack)数据结构:从基本操作到实现
  • b√最大矩阵和
  • 【python】OpenCV—Augmented Reality Using Aruco Markers
  • 生信操作文件类型
  • 【python实现一个更复杂的计算器】
  • 【H2O2|全栈】关于CSS(3)CSS基础(三)
  • Java 图片处理简易指南
  • Python习题 180:使用 sqlite3 模块实现数据库操作
  • 力扣题解2576
  • 计算各种图形的周长(多态)
  • MBD_入门篇_24_SimulinkSources
  • [001-02-001]. 第07-03节:理解线程的安全问题
  • 【AI绘画】Midjourney进阶:景别详解
  • 6.3排序——冒泡排序+快速排序
  • 2024第三届大学生算法大赛 真题训练2 解题报告 | 珂学家 | FFT/NTT板子
  • 先攒一波硬件,过几年再给电脑升级,靠谱吗?想啥呢?
  • 嵌入式边缘计算:融合创新与未来展望
  • C语言实现一个24点游戏