方案背景和目的

KubeSphere 自发布以来已有 2 年之久,从 2.1.0 版本至目前最新版本 3.3。开发人员的编译构建都基于环境平台的 DevOps 功能(底层是 jenkins)实现,如果 DevOps 项目较多产生的流水线记录数据也会比较多,记录的数据存储方式默认是基于 Openebs 去做的,存储介质依赖于 ECS 宿主机 local 本地磁盘的风险是比较大的考虑到宿主机硬盘的不可靠性,随时会发生宕机导致流水线记录数据丢失造成严重影响。本教程经过本地研发平台测试通过了使用开源项目 juiceFS-CSI 且后端依托 OSS 作为后端存储实现数据迁移的检验。

前提条件:

  1. 已经安装好 KubeSphere 平台(本教程使用 KubeSphere 3.2.1、K8s 版本 1.21.5)。安装方式请参考官网:https://kubesphere.com.cn/docs/v3.3/
  2. 已经安装好 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 /挂载点

验证

创建一条新的流水线。

友情提示

  1. 目前此教程尚未经过生产环境验证,如在生产上使用请一定要做好备份在尝试以便及时回滚。
  2. 迁移后的数据不支持直接从后端介质直接查看(比如后端是 OSS),因为数据都是打散的且保存方式以 JuiceFS 格式保存,要查看需要安装 JuiceFS 客户端或者直接进入 PVC 绑定的容器中。
  3. kubesphere-GitHub 地址:https://github.com/kubesphere/kubesphere
  4. JuiceFS-GitHub 地址:https://github.com/juicedata/juicefs

本文由博客一文多发平台 OpenWrite 发布!

基于 JuiceFS 的 KubeSphere DevOps 项目数据迁移方案的更多相关文章

  1. HBase 数据迁移方案介绍

    一.前言 HBase数据迁移是很常见的操作,目前业界主要的迁移方式主要分为以下几类: 图1.HBase数据迁移方案 从上面图中可看出,目前的方案主要有四类,Hadoop层有一类,HBase层有三类.下 ...

  2. HBase 数据迁移方案介绍 (转载)

    原文地址:https://www.cnblogs.com/ballwql/p/hbase_data_transfer.html 一.前言 HBase数据迁移是很常见的操作,目前业界主要的迁移方式主要分 ...

  3. 4.HBASE数据迁移方案(之snapshot):

    4.HBASE数据迁移方案:  4.1 Import/Export  4.2 distcp  4.3 CopyTable  4.4 snapshot 快照方式迁移(以USER_info:user_lo ...

  4. HBase 数据迁移方案介绍(转载)

    原文链接:https://www.cnblogs.com/ballwql/p/hbase_data_transfer.html 一.前言 HBase数据迁移是很常见的操作,目前业界主要的迁移方式主要分 ...

  5. vs2015 mvc项目数据迁移报错

    第一次做个mvc项目玩玩,然后需要数据迁移,也没做过,就百度找怎么数据迁移, 找到的方法是: 如果数据是在类库项目里就在‘程序包管理控制台’输入:enable-migrations -ContextT ...

  6. Redis数据迁移方案

    场景 Redis实例A ---> Redis实例B,整库全量迁移 方案一: mac环境 brew install npm npm install redis-dump -g 针对RedisA: ...

  7. Fastdfs数据迁移方案

    1.     方案背景描述 环境迁移,需要迁移旧环境的fastdfs集群的数据到新环境,由于之前数据迁移仅仅是针对mysql和mongodb,对fastdfs数据的迁移了解甚少,本文档主要是针对fas ...

  8. 多es 集群数据迁移方案

    前言 加入新公司的第二个星期的星期二 遇到另一个项目需要技术性支持:验证es多集群的数据备份方案,需要我参与验证,在这个项目中需要关注到两个集群的互通性.es集群是部署在不同的k8s环境中,K8s环境 ...

  9. 数据迁移的应用场景与解决方案Hamal

    本文来自网易云社区 作者:马进 跑男热播,作为兄弟团忠实粉丝,笔者也是一到周五就如打鸡血乐不思蜀. 看着银幕中一众演员搞怪搞笑的浮夸演技,也时常感慨,这样一部看似简单真情流露的真人秀,必然饱含了许许多 ...

  10. mysql 客户无感知迁移_亿级账户数据迁移,不用数据库工具还能怎么搞?

    原标题:亿级账户数据迁移,不用数据库工具还能怎么搞? 背景 在阿里巴巴内部"大中台,小前台"的组织和业务体制,使前线业务更加敏捷,赋能业务积极迎接未来挑战和机遇,在阿里大中台能力建 ...

随机推荐

  1. IPython notebook(Jupyter notebook) 设置密码

    本文共给出两种密码设置方法,一种为直接设置密码法(较为便捷),另一种为hash密码设置法   =================================== 第一种: 直接设置密码 注意: i ...

  2. 为什么我们需要不断的开发不同的机器学习模型 —— Do we Need Hundreds of Classifiers to Solve Real World Classification Problems?

    引用: 作者:xyzh https://www.zhihu.com/question/26726794/answer/151282052 写给懒得看的人: 没有最好的分类器,只有最合适的分类器. 随机 ...

  3. AQS源码解读之ReentrantLock-图解

    1.背景 1.AQS简介AQS全称为AbstractQueuedSynchronizer(抽象队列同步器).AQS是一个用来构建锁和其他同步组件的基础框架,使用AQS可以简单且高效地构造出应用广泛的同 ...

  4. 推荐一款界面优雅、功能强大的 .NET + Vue 权限管理系统

    前言 今天推荐一款用 .NET 和 Vue3 实现的开源权限管理系统.它的界面清爽干净,功能强大,还具备灵活的角色权限分配功能,能够满足不同规模企业的管理需求.无论你是开发新手还是大神,都能轻松上手, ...

  5. [COCI2013-2014#6] KRUŽNICE 题解

    前言 题目链接:洛谷. 题目分析 显然,手模样例发现答案分为以下几个贡献: 所有圆外面的那个大平面,贡献为 \(1\). 每个圆至少被分成一部分,贡献为 \(n\). 如果有一个圆被"拦腰截 ...

  6. 白鲸调度系统助力国内头部券商打造国产信创化 DataOps 平台

    导读 国内某头部券商是国内排名前三的全国性大型综合证券公司.作为证券行业领头羊之一,该券商一直高度重视核心系统的自主可控以及网络信息安全.早些时候,其已经完成了信创化数据库改造和OA系统适配,接下来的 ...

  7. 学习SSD—day1_20240814

    1.SSD的基本概念以及结构 SSD是一种以半导体(半导体闪存)作为存储介质吗,使用纯电子电路实现的存储设备. SSD硬件包括几大组成部分:主控.闪存.缓存芯片DRAM(可选,有些SSD上可能只有SR ...

  8. Linux入门的基础知识点,有这篇就够了(持续更新)

    很多粉丝给一口君留言,想要学习Linux资料,其实关注一口君的公众号,后台回复 1024 ,就有很多非常不错的电子书,但是有一个问题,很多粉丝是初学者,而这一大堆电子书,估计随便一本,还没看完就基本上 ...

  9. LaTeX 生成黑底白字的 PDF

    最近需要深夜看论文,然而白底的 PDF 看久了眼睛很难受,想转换成黑底的.正好我有论文的 LaTeX 源码,因此可以直接编译黑底的 PDF 出来. 使用 darkmode 宏包 CTAN 上有一个 L ...

  10. uniapp中,getApp()返回的实例到底是什么?为什么getApp()返回的实例无法访问vuex的$store

    按uniapp官方手册中说,getApp()函数用于获取当前应用实例.当前应用,也就是说当前应用程序.因为getApp()返回的实例可以用于访问app.vue中的globaldata,因此这个当前应用 ...