基于Rook的Ceph云原生存儲部署與實踐指南(上)

#作者:任少近

文章目錄

  • 1 Ceph環境準備
  • 2 rook部署ceph群集
    • 2.1 Rook 幫助地址
    • 2.2 安裝ceph
    • 2.3 獲取csi鏡像
    • 2.4 Master參加到osd
    • 2.5 設置默認存儲
  • 3 Rook部署云原生RBD塊存儲
    • 3.1 部署storageclass資源
    • 3.2 部署WordPress使用RBD
    • 3.3 WordPress訪問
  • 4 Rook部署云原生RGW對象存儲
    • 4.1 部署objectstore資源
    • 4.2 pod訪問rgw服務
    • 4.3創建rgw用戶
    • 4.4創建buckets桶
  • 5 DeRook部署云原生CephFS文件系統
    • 5.1 部署cephfs storageclass
    • 5.2 創建容器所需cephfs文件系統
    • 5.3創建容器pod使用rook-cephfs提供pvc

1 Ceph環境準備

提前準備一塊50G祼盤
在這里插入圖片描述
版本
在這里插入圖片描述

2 rook部署ceph群集

下載rook
https://rook.io/docs/rook

git clone --single-branch --branch v1.11.5 https://github.com/rook/rook.git# verify the rook-ceph-operator is in the `Running` state before proceeding
kubectl -n rook-ceph get pod

2.1 Rook 幫助地址

https://rook.io/docs/rook/v1.9/ceph-filesystem.html

2.2 安裝ceph

cd /root/rook/deploy/examples
kubectl create -f crds.yaml -f common.yaml -f operator.yaml

2.3 獲取csi鏡像

成功后,執行cluster.yaml后,插件未啟,修改operater.yaml中地址

# ROOK_CSI_REGISTRAR_IMAGE: "registry.aliyuncs.com/google_containers/csi-node-driver-registrar:v2.7.0"
# ROOK_CSI_RESIZER_IMAGE: "registry.aliyuncs.com/google_containers/csi-resizer:v1.7.0"
# ROOK_CSI_PROVISIONER_IMAGE: "registry.aliyuncs.com/google_containers/csi-provisioner:v3.4.0"
# ROOK_CSI_SNAPSHOTTER_IMAGE: "registry.aliyuncs.com/google_containers/csi-snapshotter:v6.2.1"
# ROOK_CSI_ATTACHER_IMAGE: "registry.aliyuncs.com/google_containers/csi-attacher:v4.1.0"

可以使用如下腳本修改以上

#!/bin/bash
Image_list=(
#csi-node-driver-registrar:v2.7.0
csi-resizer:v1.7.0
csi-provisioner:v3.4.0
csi-snapshotter:v6.2.1
csi-attacher:v4.1.0
)
Aliyuncs="registry.aliyuncs.com/google_containers"
Google_gcr="registry.k8s.io/sig-storage"
for image in ${Image_list[*]}
do
crictl pull ${Aliyuncs}/${image}
#crictl沒有tag功能,ctr打tag必須指定namespace,命令:ctr namespace ls查看
ctr -n k8s.io i tag ${Aliyuncs}/${image} ${Google_gcr}/{imag:q!e}
crictl rmi ${Aliyuncs}/${image}
echo "${Aliyuncs}/${image} ${Google_gcr}/${image} download."
done

再執行kubectl apply -f cluster.yaml

2.4 Master參加到osd

去掉污點

#查看污點
kubectl -n rook-ceph describe nodes k8s-master
#去掉污點
kubectl taint node k8s-master node-role.kubernetes.io/k8s-master:NoSchedule-  
(#恢復污點:
kubectl taint node k8s-master node-role.kubernetes.io/k8s-master:NoSchedule

Cluster.yaml修改磁盤掃描時間,默認是60s,可以調整60分鐘

592 # The duration between discovering devices in the rook-discover daemonset.
593 - name: ROOK_DISCOVER_DEVICES_INTERVAL
594   value: "60m"

2.5 設置默認存儲

[root@k8s-master1 ~]# kubectl patch storageclass rook-ceph-block -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

3 Rook部署云原生RBD塊存儲

前面通過rook部署ceph集群運行在kubernetes上,ceph集群支持rbd塊存儲。使用rook部署rbd塊服務與kubernetes容器對接。ceph與kubernetes對接會涉及到pool池、ceph認證信息,配置文件,CSI驅動部署等。storageclass創建過程涉及配置較多,而Rook則將這些配置過程簡化,以云原生的方式實現對接,默認已繼承好相關驅動。通過kubernetes創建storageclass即可對接使用。

3.1 部署storageclass資源

Cd /root/rook/deploy/examples/csi/rbd
在這里插入圖片描述

[root@k8s-master rbd]# kubectl apply -f storageclass.yaml
cephblockpool.ceph.rook.io/replicapool created
storageclass.storage.k8s.io/rook-ceph-block created
#查看storageclass資源[root@k8s-master rbd]# kubectl -n rook-ceph get sc
NAME                      PROVISIONER                     RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
rook-ceph-block           rook-ceph.rbd.csi.ceph.com      Delete          Immediate           true                   3m42s
rook-ceph-delete-bucket   rook-ceph.ceph.rook.io/bucket   Delete          Immediate           false                  122d

3.2 部署WordPress使用RBD

部署mysql和WordPress資源文件

# kubectl create -f mysql.yaml 
# kubectl create -f wordpress.yaml
注:修改wordpress.yaml中的loadbalance為NodePort
注:資源文件在deploy/examples文件夾下

查看mysql和WordPress pod狀態
在這里插入圖片描述
查看mysql和wordPress SVC
在這里插入圖片描述

3.3 WordPress訪問

Wordpress svc更改為NodePort形式對外暴露服務訪問
在這里插入圖片描述
WordPress訪問地址 http://node_ip:31028
在這里插入圖片描述
在這里插入圖片描述
注:第一次訪問需要進行完善信息,完善后跟進自己使用情況進行后臺修改或者默認直接使用即可

4 Rook部署云原生RGW對象存儲

rook能夠在kubernetes中部署對象存儲提供rgw服務。

4.1 部署objectstore資源

創建object資源文件

# kubectl create -f object.yaml
查看rgw pod狀況

在這里插入圖片描述
查看rgw svc狀況
在這里插入圖片描述

4.2 pod訪問rgw服務

root@csicephfs-demo-pod:/# curl 10.104.123.1
在這里插入圖片描述

4.3創建rgw用戶

[root@k8s-master examples]# cat object-user.yaml
####Create an object store user for access to the s3 endpoint.kubectl create -f object-user.yaml
####################################
apiVersion: ceph.rook.io/v1
kind: CephObjectStoreUser
metadata:name: my-usernamespace: rook-ceph # namespace:cluster
spec:store: my-storedisplayName: "my display name"# Quotas set on the user# quotas:# maxBuckets: 100# maxSize: 10G# maxObjects: 10000# Additional permissions given to the user# capabilities:# user: "*"# bucket: "*"# metadata: "*"# usage: "*"# zone: "*"[root@k8s-master examples]# kubectl create -f object-user.yaml

4.4創建buckets桶

在這里插入圖片描述
注:使用dashboard web界面管理操作查看即可,rgw對象存儲操作使用參考文檔:https://docs.ceph.com/en/quincy/radosgw/index.html

5 DeRook部署云原生CephFS文件系統

5.1 部署cephfs storageclass

cephfs文件系統與RBD服務類似,要想在kubernetes pod里使用cephfs,需要創建一個cephfs-provisioner storageclass服務,在rook代碼里已有資源文件,單獨部署即可

Storageclass.yaml文件如下:
在這里插入圖片描述
kubectl create -f deploy/examples/csi/cephfs/storageclass.yaml
查看cephfs storageclass名稱:rook-cephfs
在這里插入圖片描述

5.2 創建容器所需cephfs文件系統

創建容器所需pvc指定rook部署rook-cephfs存儲類名稱

[root@node1 cephfs]# cat pvc.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: cephfs-pvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 1GistorageClassName: rook-cephfs
[root@node1 cephfs]#
[root@node1 cephfs]# kubectl apply -f pvc.yaml查看pvc所提供是rook-cephfs
[root@node1 cephfs]# kubectl get pvc | grep cephfs-pvc
cephfs-pvc             Bound    pvc-da18c8f9-00c1-4c39-8c53-68a628fa8bdd   1Gi        RWO            rook-cephfs                   21drook-cephfs                   7d23h
[root@node1 cephfs]#

5.3創建容器pod使用rook-cephfs提供pvc


[root@node1 cephfs]# cat pod.yaml
---
apiVersion: v1
kind: Pod
metadata:name: csicephfs-demo-pod
spec:containers:- name: web-serverimage: nginx:latestvolumeMounts:- name: mypvcmountPath: /var/lib/www/htmlvolumes:- name: mypvcpersistentVolumeClaim:claimName: cephfs-pvcreadOnly: false
[root@node1 cephfs]#
[root@node1 cephfs]# kubectl apply -f pod.yaml查看pod運行狀況
[root@node1 cephfs]# kubectl get pod | grep cephfs
csicephfs-demo-pod                           1/1     Running     0            21d
[root@node1 cephfs]#5.4 查看pod是否使用rook-cephfs
[root@node1 cephfs]# kubectl exec -it csicephfs-demo-pod -- bash
root@csicephfs-demo-pod:/# df -hT | grep csi-vol
10.68.91.46:6789,10.68.110.0:6789,10.68.225.251:6789:/volumes/csi/csi-vol-50d5c216-3e2a-11ed-9773-9a6110af61d6/f4e696bf-757d-4793-b2c2-3091d38ccec5 ceph     1.0G     0  1.0G   0% /var/lib/www/html
root@csicephfs-demo-pod:/#
root@csicephfs-demo-pod:/# echo "cephfs" > /var/lib/www/html/index.html
root@csicephfs-demo-pod:/# cat /var/lib/www/html/index.html
cephfs
root@csicephfs-demo-pod:/#注:登錄相應pod容器可以看到pod已經掛載cephfs文件系統地址,可以在相應掛載目錄創建內容。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70910.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70910.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70910.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FastExcel與Reactor響應式編程深度集成技術解析

一、技術融合背景與核心價值 在2025年企業級應用開發中,大規模異步Excel處理與響應式系統架構的結合已成為技術剛需。FastExcel與Reactor的整合方案,通過以下技術協同實現突破性性能: 內存效率革命:FastExcel的流式字節操作與Re…

DeepSeek R1/V3滿血版——在線體驗與API調用

前言:在人工智能的大模型發展進程中,每一次新模型的亮相都宛如一顆投入湖面的石子,激起層層波瀾。如今,DeepSeek R1/V3 滿血版強勢登場,為大模型應用領域帶來了全新的活力與變革。 本文不但介紹在線體驗 DeepSeek R1/…

Spring Data JPA 中的分頁實現:從 BasePage 到 Pageable

文章目錄 Spring Data JPA 中的分頁實現:從 BasePage 到 Pageable背景:為什么需要分頁?認識 BasePage 類深入 toPageable() 方法1. 處理頁碼和頁面大小2. 處理排序方向3. 處理排序字段4. 生成 Pageable 對象 實戰:如何使用 BasePa…

Android Studio 新版本Gradle發布本地Maven倉庫示例

發布代碼到JitPack示例:https://blog.csdn.net/loutengyuan/article/details/145938967 以下是基于 Android Studio 24.2.2(Gradle 8.10.2 AGP 8.8.0 JDK17) 的本地 Maven 倉庫發布示例,包含aar和jar的不同配置: 1.…

python量化交易——金融數據管理最佳實踐——qteasy創建本地數據源

文章目錄 qteasy金融歷史數據管理總體介紹本地數據源——DataSource對象默認數據源查看數據表查看數據源的整體信息最重要的數據表其他的數據表 從數據表中獲取數據向數據表中添加數據刪除數據表 —— 請盡量小心,刪除后無法恢復!!總結 qteas…

Android中使用Robolectric測試點擊事件(不需要手機)

文章目錄 一、前言二、簡單示例三、參考文檔 一、前言 Robolectric 是一個由 Google 維護的開源 Android 測試框架,它允許你以 Android 運行時環境運行單元測試。 Robolectric 提供了一個模擬 Android 運行時環境,允許你測試你的代碼是否正確地使用 And…

Spring Boot 接口 JSON 序列化優化:忽略 Null 值的九種解決方案詳解

一、針對特定接口null的處理: 方法一:使用 JsonInclude 注解 1.1 類級別:在接口返回的 ?DTO 類或字段? 上添加 JsonInclude 注解,強制忽略 null 值: 類級別:所有字段為 null 時不返回 JsonInclude(Js…

ds回答-開源llm應用開發平臺

以下是幾個著名的開源 LLM 應用開發平臺,涵蓋不同場景和技術特點: 1. Dify 特點:低代碼 / 無代碼開發、支持 RAG 檢索、Agent 智能體、模型管理、LLMOps 全流程優化。核心功能:可視化工作流編排、數百種模型兼容(如 GP…

LDR6020 PD3.1 協議芯片在特定設備中的應用

在電子設備互聯互通的時代,芯片技術成為提升設備性能與功能的關鍵驅動力。LDR6020 PD3.1 協議芯片以其出色的性能,在 TYPE-C 臺式顯示器 / 便攜顯示器、一拖二快充線以及手機電腦轉接器等設備中展現出獨特價值,為用戶帶來更便捷、高效的使用體…

wzl-django學習

####################################################總的urls.py from django.contrib import admin from django.urls import path,include, re_path from django.views.static import serve from django.conf import settings from drf_yasg import openapi from drf_yas…

python -ssh學習

def exe_sshcmd(ip,username,userpswd,port,cmd): """ 功能:SSH登錄到指定設備,并執行對應的命令 入參:前四項為ssh登錄shell的ip和port,具備管理員權限的用戶名和密碼, cmd可以…

PDF處理控件Aspose.PDF教程:使用 Python 將 PDF 轉換為 TIFF

TIFF文件是高質量圖像的首選。它們廣泛用于印刷、存檔和圖形設計。企業通常需要轉換PDF文檔以獲得更好的兼容性。了解如何以編程方式執行此轉換可以節省時間和資源。在這篇教程中,我們將探討如何使用 Python 將 PDF 轉換為 TIFF。 本文涵蓋以下主題: P…

服務器IPMI用戶名、密碼批量檢查

背景 大規模服務器部署的時候,少不了較多的網管和監測平臺,這些平臺會去監控服務器的性能、硬件等指標參數,為了便于管理和控制,則需要給服務器IPMI帶外管理添加較多的用戶,這就需要對較多的服務器檢查所對應的IPMI用…

< 自用文兒 > Gobuster 暴力掃描工具與 SecLists 安全測試詞表集合

Ethice 道德問題 GFW 的保護下,很多的設備操作系統是停留在更老的版本,應用軟件也是,因此很多的漏洞沒有被修復。通訊沒有使用加密,例如網頁沒有使用 HTTPS 網站很多。幾乎是半裸的在網絡上等著被食。 不做惡是下限。 環境&…

【Cadence射頻仿真學習筆記】2.4GHz低噪放LNA仿真設計

課程分為3個部分, 一、LNA結構與噪聲優化方法 噪聲優化的方法是:限定功耗的噪聲和功率同時匹配噪聲匹配和功率匹配一般不會同時達到, 對于PCSNIM結構的噪聲分析,我們只需要了解與哪些參數有關優化思路是:1.信號源阻抗…

【洛谷入門賽】B4042 順序結構 202410 場

題意 給你一個變量 a a a:小 Y 會讓 a a a 先加 5 5 5 再把它們的和乘 3 3 3 最后輸出;小 L 會讓 a a a 先乘 3 3 3 再加 5 5 5 最后輸出。 要求出小 Y 和小 L 分別會輸出什么東西。 思路 這道題按照題目意思模擬就可以了,重點是考…

Android13修改多媒體默認音量

干就完了! 設置音量為最大音量,修改如下: /framework/base/media/java/android/media/AudioSystem.java/** hide */public static int[] DEFAULT_STREAM_VOLUME new int[] {4, // STREAM_VOICE_CALL7, // STREAM_SYSTEM5, // STREAM_RING-5, // STREAM_MUSIC15, // STREAM…

【Azure 架構師學習筆記】- Azure Databricks (13) -- 搭建Medallion Architecture part 1

本文屬于【Azure 架構師學習筆記】系列。 本文屬于【Azure Databricks】系列。 接上文 【Azure 架構師學習筆記】- Azure Databricks (12) – Medallion Architecture簡介 前言 上文已經介紹了關于Medallion的知識,本文開始用ADB 來實現, 但是基于內容較…

社交APP如何打造高粘性興趣社群

想要打造一款成功的社交 APP 興趣社群,關鍵在于充分激發用戶的主動分享意愿,同時構建起深度互動機制。與其在一開始就將大量資源投入到廣告宣傳中,倒不如把精力集中在深度挖掘和精心維護首批核心用戶上。例如,可以嘗試設計在線測試…

【操作系統】同步與互斥

同步與互斥 一、同步與互斥的概念1.1 同步與異步1.2 進程互斥 二、進程互斥的實現2.1 軟件實現2.1.1 單標志法2.1.2 雙標志先檢查法2.1.3 雙標志后檢查法2.1.4 Peterson法 2.2 硬件實現2.2.1 中斷指令2.2.2 TestAndSet指令2.2.3 Swap指令 三、互斥鎖四、信號量機制4.1 整型信號…