基於 JuiceFS 的 KubeSphere DevOps 專案資料遷移方案

語言: CN / TW / HK

方案背景和目的

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://
/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 釋出!