冲天香阵透长安,满城尽带黄金甲。这篇文章主要讲述kubernetes与velero的第一次尝试相关的知识,希望能为你提供帮助。
背景接上文:Kubernetes中gitlab的一次迁移。nexus也要迁移一下。这里更想体验一些velero。很多文章上面看到过:https://mp.weixin.qq.com/s/VC6kVfcBCUQfG6RwM6F1QA。腾讯云TKE文档中也有类似的例子:https://cloud.tencent.com/document/product/457/50122。不想使用传统方式了想体验一下velero!
sovelero迁移一下kube-ops namespace 到另外一个集群的kube-ops1 namespace
velero 迁移kubernetes体验
1. 下载安装 velero注意: 1-3步骤在备份和还原集群上面都要操作安装
https://github.com/vmware-tanzu/velero看了一眼最新版本1.18.1.就下载了对应版本linux-amd64.tar.gz(墙裂,下载不下来。为是下载了放在自己的对象存储上面了!)
[root@sh-master-02 ~]# wget https://github.com/vmware-tanzu/velero/releases/download/v1.8.1/velero-v1.8.1-linux-amd64.tar.gz
[root@sh-master-02 ~]# tar zxvf velero-v1.8.1-linux-amd64.tar.gz
[root@sh-master-02 ~]# cd velero-v1.8.1-linux-amd64/
[root@sh-master-02 velero-v1.8.1-linux-amd64]# cp velero /usr/local/bin &
&
chmod +x /usr/local/bin/velero
[root@sh-master-02 velero-v1.8.1-linux-amd64]# velero version
文章图片
2. 关于对象存储的开通阳明大佬还有其他很多文章都是采用了minio.腾讯云的cos 还有 阿里云的oss也是可以的。偷懒了直接使用cos!
先创建一个对象存储桶
文章图片
3. 配置安装velero服务端配置密钥文件:
cat credentials-velero
[default]
aws_access_key_id=<
access key id>
aws_secret_access_key=<
secret access key>
按照如下命令安装 velero 服务端:
velero install--provider aws --plugins velero/velero-plugin-for-aws:v1.1.0 --bucketkubernetes-xxxx \\
--secret-file credentials-velero \\
--use-restic \\
--default-volumes-to-restic \\
--backup-location-config \\
region=ap-guangzhou,s3ForcePathStyle="true",s3Url=https://cos.ap-guangzhou.myqcloud.com
注意:gion s3 url bucket为腾讯与oos对应参数基本要配置的就是bucket存储桶名词 还有地域!
文章图片
文章图片
等待velero命名空间下pod running!
[root@sh-master-02 velero]# kubectl get pods -n velero
文章图片
4. 备份集群1 kube-ops集群内应用 1. velero backup create命令直接创建
[root@sh-master-02 velero]# velero backup create kube-ops --include-namespaces kube-ops --default-volumes-to-restic
文章图片
2. yaml方式创建
【kubernetes与velero的第一次尝试】cat migrate-kube-ops-2022-03-18-01-backup.yaml
apiVersion: velero.io/v1
kind: Backup
metadata:
name: migrate-kube-ops-2022-03-18-01-backup
# 必须得是 velero 安装的命名空间
namespace: velero
spec:
# 仅包含 nginx-example 命名空间的资源
includedNamespaces:
- kube-ops
# 包含不区分命名空间的资源
includeClusterResources: false
# 备份数据存储位置指定
storageLocation: default
# 卷快照存储位置指定
volumeSnapshotLocations:
- default
# 使用 restic 备份卷
defaultVolumesToRestic: true
注意:includeClusterResources: false这个地方一定记得false看腾讯与官方文档写的true!我备份失败了......如果有失败看下这个参数!
[root@sh-master-02 velero]#kubectl apply -f migrate-kube-ops-2022-03-18-01-backup.yaml
文章图片
注意: backup create 任务的命名要具有唯一性。建立新的命名任务要用不同的名称!
2. 登陆腾讯云cos管理后台查看备份文件创建
文章图片
5. 将kube-ops命名空间下应用还原到集群2kube-ops1命名空间下注:登陆集群2(要还原的集群)前提1-3已经操作
cat restore.yaml
apiVersion: velero.io/v1
kind: Restore
metadata:
name: migrate-kube-ops1-restore
namespace: velero
spec:
backupName: kube-ops
includedNamespaces:
- kube-ops# 按需填写需要恢复的资源类型,nginx-example 命名空间下没有想要排除的资源,所以这里直接写 *
includedResources:
- *includeClusterResources: null# 还原时不包含的资源,这里额外排除 StorageClasses 资源类型。
excludedResources:
- storageclasses.storage.k8s.io# 使用 labelSelector 选择器选择具有特定 label 的资源,由于此示例中无须再使用 label 选择器筛选,这里先注释。
# labelSelector:
#matchLabels:
#app: nginx# 设置命名空间关系映射策略
namespaceMapping:
kube-ops: kube-ops1
restorePVs: true
[root@k8s-master-01 velero]# kubectl apply -frestore.yaml
[root@k8s-master-01 velero]# velero describe restore migrate-kube-ops1-restore
文章图片
等待状态 Pasecompleted......
文章图片
注意:还原的任务也要具有唯一性
等待pod running发现ingress ingressroute没有备份过来
文章图片
6. 创建对应ingress ingressroute 登陆gitlab nexus,并修改host or dns解析进行测试:
文章图片
文章图片
目的基本实现 将一个namespace 下应用迁移到了另外一个集群的namespace下!
更进一步的想法
- 其实开始为想得是只备份还原nexus单个应用....下次体验一些备份还原单个应用
- 存储类的区别。开始本来想导入tke集群的。且按照腾讯云官方文档:https://cloud.tencent.com/document/product/457/52331.做了持久卷动态映射
apiVersion: v1 kind: ConfigMap metadata: name: change-storage-class-config namespace: velero labels: velero.io/plugin-config: "" velero.io/change-storage-class: RestoreItemAction data: # 存储类名映射到腾讯云动态存储类 cbs cbs-csi: cbs
但是导入的时候没有生效还是找cbs-csi存储类!。所以就先导入到有cbs-csi存储类的集群了。具体替换存储类要好好研究一下!3. ingress ingress为什么没有备份....有时间研究一下
3. 特别感谢:[https://velero.io/docs/v1.8/csi/](https://velero.io/docs/v1.8/csi/) [https://mp.weixin.qq.com/s/VC6kVfcBCUQfG6RwM6F1QA](https://mp.weixin.qq.com/s/VC6kVfcBCUQfG6RwM6F1QA)[https://cloud.tencent.com/document/product/457/52331](https://cloud.tencent.com/document/product/457/52331)
推荐阅读
- HarmonyOS - 方舟开发框架ArkUI 基于JSAPI实现五子棋游戏
- 解决IntelliJ idea的Maven Cannot resolve XXX PluginsDependencis等爆红问题总结
- Python 地图篇 - 使用pyecharts绘制世界地图中国地图省级地图市级地图实例详解
- 代码实现nadaraya-waston核回归#51CTO博主之星评选#
- Bash 特性
- Docker 安装部署
- Windows 窗口样式 什么是 WS_EX_NOREDIRECTIONBITMAP 样式
- Windows 对全屏应用的优化
- Windows 上 Assimp(Open Asset Import Library) 源码的编译 及 Samples 的编译运行