计划背景和目标
KubeSphere 自公布以来已有 2 年之久,从 2.1.0 版本至目前最新版本 3.3。开发人员的编译构建都基于环境平台的 DevOps 性能(底层是 jenkins)实现,如果 DevOps 我的项目较多产生的流水线记录数据也会比拟多,记录的数据存储形式默认是基于 Openebs 去做的,存储介质依赖于 ECS 宿主机 local 本地磁盘的危险是比拟大的思考到宿主机硬盘的不可靠性,随时会产生宕机导致流水线记录数据失落造成重大影响。本教程通过本地研发平台测试通过了应用开源我的项目 juiceFS-CSI 且后端依靠 OSS 作为后端存储实现数据迁徙的测验。
前提条件:
- 曾经装置好 KubeSphere 平台(本教程应用 KubeSphere 3.2.1、K8s 版本 1.21.5)。装置形式请参考官网:https://kubesphere.com.cn/docs/v3.3/
- 曾经装置好 juiceFS-CSI 插件并且挂载好 OSS 后端、确认创立 PVC 时通过 SC 主动创立 PV 并绑定。
装置形式请参考官网 : https://www.juicefs.com/docs/zh/community/introduction/
(以上两者缺一不可)
计划施行过程
1. 找到 KubeSphere 平台的 Jenkins 应用的 PV
2. 确认目前 Local 磁盘保留的 Jenkins 门路(在 node1 节点上)
/var/openebs/local/pvc-2143c5a8-9593-4e2a-8eb5-2f3a0c98219a
3. 下载 JuiceFS 客户端
获取最新的版本号。
$ JFS_LATEST_TAG=$(curl -s https://api.github.com/repos/juicedata/juicefs/releases/latest | grep 'tag_name' | cut -d '"'-f 4 | tr -d'v')
下载客户端到当前目录。
$ wget "https://github.com/juicedata/juicefs/releases/download/v${JFS_LATEST_TAG}/juicefs-${JFS_LATEST_TAG}-linux-amd64.tar.gz"
解压安装包。
$ tar -zxf "juicefs-${JFS_LATEST_TAG}-linux-amd64.tar.gz"
装置客户端。
$ install juicefs /usr/local/bin
挂载 JuiceFS。
$ juicefs mount -d redis://10.233.106.62:6379/1 /mnt/jfs
redis://
前面跟的是 Redis 服务的内网地址;/mnt/jfs
是自定义的目录。
4. 创立新的 PVC
关上治理后盾 - 找到【存储】–【存储卷】–【kubesphere-devops-system】关上【创立】
通过 PVC 的名字在宿主机上查看创立后果
5. 进行 DevOps 服务(至关重要的一步)
找到 devops-jenkins 的服务将正本数降为 0。
将 Local 本地对应的 devops-jenkins 的数据拷贝至方才创立新的 PVC 外面(等待时间较长)。
留神:拷贝的时候倡议是写目录的绝对路径。
$ cp -r /var/openebs/local/pvc-a2e60bcb-440e-4820-9330-921584bbabf3/* /mnt/jfs/pvc-bf8f2f7c-cfd1-45fd-94c8-39726aa364a5/
确认数据已达到目标数据 PVC 后替换 devops-jenkins 数据参数将原有 PVC 解除绑定,绑定新的 PVC。
找到原有的存储卷进行批改绑定。
确认服务已失常启动。
确认数据是否正确。
$ df- h
$ ls / 挂载点
验证
创立一条新的流水线。
情谊提醒
- 目前此教程尚未通过生产环境验证,如在生产上应用请肯定要做好备份在尝试以便及时回滚。
- 迁徙后的数据不反对间接从后端介质间接查看(比方后端是 OSS),因为数据都是打散的且保留形式以 JuiceFS 格局保留,要查看须要装置 JuiceFS 客户端或者间接进入 PVC 绑定的容器中。
- kubesphere-GitHub 地址:https://github.com/kubesphere/kubesphere。
-
JuiceFS-GitHub 地址:https://github.com/juicedata/juicefs。
本文由博客一文多发平台 OpenWrite 公布!