基于 JuiceFS 的 KubeSphere DevOps 项目数据迁移方案
方案背景和目的
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 发布!
基于 JuiceFS 的 KubeSphere DevOps 项目数据迁移方案的更多相关文章
- HBase 数据迁移方案介绍
一.前言 HBase数据迁移是很常见的操作,目前业界主要的迁移方式主要分为以下几类: 图1.HBase数据迁移方案 从上面图中可看出,目前的方案主要有四类,Hadoop层有一类,HBase层有三类.下 ...
- HBase 数据迁移方案介绍 (转载)
原文地址:https://www.cnblogs.com/ballwql/p/hbase_data_transfer.html 一.前言 HBase数据迁移是很常见的操作,目前业界主要的迁移方式主要分 ...
- 4.HBASE数据迁移方案(之snapshot):
4.HBASE数据迁移方案: 4.1 Import/Export 4.2 distcp 4.3 CopyTable 4.4 snapshot 快照方式迁移(以USER_info:user_lo ...
- HBase 数据迁移方案介绍(转载)
原文链接:https://www.cnblogs.com/ballwql/p/hbase_data_transfer.html 一.前言 HBase数据迁移是很常见的操作,目前业界主要的迁移方式主要分 ...
- vs2015 mvc项目数据迁移报错
第一次做个mvc项目玩玩,然后需要数据迁移,也没做过,就百度找怎么数据迁移, 找到的方法是: 如果数据是在类库项目里就在‘程序包管理控制台’输入:enable-migrations -ContextT ...
- Redis数据迁移方案
场景 Redis实例A ---> Redis实例B,整库全量迁移 方案一: mac环境 brew install npm npm install redis-dump -g 针对RedisA: ...
- Fastdfs数据迁移方案
1. 方案背景描述 环境迁移,需要迁移旧环境的fastdfs集群的数据到新环境,由于之前数据迁移仅仅是针对mysql和mongodb,对fastdfs数据的迁移了解甚少,本文档主要是针对fas ...
- 多es 集群数据迁移方案
前言 加入新公司的第二个星期的星期二 遇到另一个项目需要技术性支持:验证es多集群的数据备份方案,需要我参与验证,在这个项目中需要关注到两个集群的互通性.es集群是部署在不同的k8s环境中,K8s环境 ...
- 数据迁移的应用场景与解决方案Hamal
本文来自网易云社区 作者:马进 跑男热播,作为兄弟团忠实粉丝,笔者也是一到周五就如打鸡血乐不思蜀. 看着银幕中一众演员搞怪搞笑的浮夸演技,也时常感慨,这样一部看似简单真情流露的真人秀,必然饱含了许许多 ...
- mysql 客户无感知迁移_亿级账户数据迁移,不用数据库工具还能怎么搞?
原标题:亿级账户数据迁移,不用数据库工具还能怎么搞? 背景 在阿里巴巴内部"大中台,小前台"的组织和业务体制,使前线业务更加敏捷,赋能业务积极迎接未来挑战和机遇,在阿里大中台能力建 ...
随机推荐
- 用户案例 | 蜀海供应链基于 Apache DolphinScheduler 的数据表血缘探索与跨大版本升级经验
导读 蜀海供应链是集销售.研发.采购.生产.品保.仓储.运输.信息.金融为一体的餐饮供应链服务企业.2021年初,蜀海信息技术中心大数据技术研发团队开始测试用DolphinScheduler作为数据中 ...
- 介绍一款新奇的开源操作系统:GodoOS
在快节奏的现代办公环境中,一款高效.集成化的操作系统无疑是提升工作效率的利器.今天,我们要为您隆重介绍 --GodoOS,一款专为内网办公环境设计的全能操作系统.它不仅仅是一个工具,更是您团队协作与文 ...
- Python 加载 TensorFlow 模型
1.SavedModel和HDF5加载TensorFlow模型 为了加载一个TensorFlow模型,我们首先需要明确模型的格式.TensorFlow支持多种模型格式,但最常见的两种是SavedMod ...
- Docker 容器中镜像导出/导入
目录 [容器]镜像导出/导入 导出 导入 带标签 不带标签,后期修改 [仓库]镜像导出/导入 导出 导入 导入(完整命令) 创建一个简单的Docker镜像 利用docker ps -a命令查看要导出的 ...
- Implicit Autoencoder for Point-Cloud Self-Supervised Representation Learning论文阅读
Implicit Autoencoder for Point-Cloud Self-Supervised Representation Learning 2023 ICCV *Siming Yan, ...
- Homebrew 使用
使用 brew install brew uninstall|remove|rm brew list # *显示已安装软件列表 brew upgrade # 更新 Homebrew brew sear ...
- 【Python】Selenium自动化测试之滑块拼图验证码图片方法
在项目中有时验证码是滑块拼图形式的,这种验证码该如何完成验证呢? 有以下几个步骤: 目录 第一步:得到验证码图片 第二步:匹配缺口照片在完整照片的位置 第三步:机器模拟人工滑动轨迹 第四步:判断拼图是 ...
- 用描述程序的方式emo,扎心了...
用描述程序的方式emo,扎心了... 众所周知写程序是个枯燥无聊的过程,再加上生活的不顺与坎坷,当程序语言与emo结合起来,看谁还说程序员不懂感情! 首当其冲的就是循环语句了 世界上最寂寞的感觉,是我 ...
- 淘宝开放平台api申请,淘宝开放平台api租用,淘宝开放平台api无法申请,淘宝开放平台api暂停接入
目前淘宝开放平台应用申请是关闭了的,已经无法申请到了,如果你是天猫店铺,可以申请供自己店铺使用的权限,如果你不是天猫店铺或者你是软件开发商,目前是申请不到权限的 如果你必须要用到这个权限包的话,可以联 ...
- Redis 入门 - 简介
Redis是Remote Dictionary Server的缩写,可以翻译成远程字典服务.Redis是用C语言编写的开源项目. Redis 最主要的特点就是高性能,对于简单的键值读取速度可以达到10 ...