Rook部署全過程
部署說明
官網(wǎng):https://rook.io/
- K8S版本1.27.2
- rook 版本1.11.9
安裝前準(zhǔn)備
- 原始設(shè)備(無分區(qū)或格式化文件系統(tǒng))
- 原始分區(qū)(無格式化文件系統(tǒng))
- LVM 邏輯卷(無格式化文件系統(tǒng))
- block模式下存儲類可用的持久卷
使用以下命令確認(rèn)分區(qū)或設(shè)備是否使用文件系統(tǒng)進(jìn)行格式化
$ lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT vdb sr0 sda ├─sda2 LVM2_member 3QT28B-YeEw-xCUK-0eT2-uBkn-pPcb-2OhWba │ ├─rootvg-lv_swap swap c16f275f-59a8-4093-89ba-3a79bbf0bb59 │ └─rootvg-lv_root xfs 67894aea-4d9f-4c9d-96cf-348db01eb647 / └─sda1 xfs 68873398-4b99-4079-b0cb-65d6b9b3b896 /boot vda
如果該FSTYPE字段不為空,則表示相應(yīng)設(shè)備上有一個文件系統(tǒng)
準(zhǔn)入控制器
建議啟用 Rook 準(zhǔn)入控制器,以提供額外級別的驗證,確保 Rook 已使用自定義資源 (CR) 設(shè)置正確配置。
準(zhǔn)入控制器會在對象持久化之前、請求經(jīng)過身份驗證和授權(quán)之后攔截對 Kubernetes API 服務(wù)器的請求。
要部署 Rook 準(zhǔn)入控制器
請在安裝 Rook 之前安裝證書管理器
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.11.1/cert-manager.yaml
安裝LVM包
yum install -y lvm2
開始安裝
kubectl使用以下命令和示例清單
為 Kubernetes 創(chuàng)建一個簡單的 Rook 集群
$ git clone --single-branch --branch v1.11.9 https://github.com/rook/rook.git cd rook/deploy/examples kubectl create -f crds.yaml -f common.yaml -f operator.yaml
修改cluster.yaml配置
cd rook/deploy/examples vim cluster.yaml # resources 生產(chǎn)環(huán)境盡量配置大一點,測試環(huán)境不用動。 # useAllNodes: false 是否用所有節(jié)點 默認(rèn)用所有 # useAllDevices: false 是否用所有設(shè)備 默認(rèn)用所有 # nodes: # 配置使用哪些硬盤做OSD # - name: "master01" # devices: # - name: "vda" # - name: "vdb"
修改完以后開始部署
kubectl create -f cluster.yaml
查看安裝日志
## 你的pod名字和我的不一樣 kubectl logs -n rook-ceph rook-ceph-operator-89d55f6b-k26xb -f
部署成功以后顯示如下
[root@master01 examples]# kubectl get po -n rook-ceph NAME READY STATUS RESTARTS AGE csi-cephfsplugin-2qct5 2/2 Running 0 18m csi-cephfsplugin-9xrfm 2/2 Running 0 18m csi-cephfsplugin-provisioner-7f7874c95d-5t6rq 5/5 Running 0 18m csi-cephfsplugin-provisioner-7f7874c95d-8pwj2 5/5 Running 0 18m csi-cephfsplugin-ztng5 2/2 Running 0 18m csi-rbdplugin-flmcp 2/2 Running 0 18m csi-rbdplugin-mp986 2/2 Running 0 18m csi-rbdplugin-provisioner-5fdf9c49b6-td2hj 5/5 Running 0 18m csi-rbdplugin-provisioner-5fdf9c49b6-wvk8m 5/5 Running 0 18m csi-rbdplugin-wvf6v 2/2 Running 0 18m rook-ceph-crashcollector-master01-74469b9c96-7l62m 1/1 Running 0 15m rook-ceph-crashcollector-master02-7bc857bd7c-d5wqb 1/1 Running 0 15m rook-ceph-crashcollector-master03-7ff94fd7f8-vnkr5 1/1 Running 0 15m rook-ceph-mgr-a-7c7664444c-chn79 3/3 Running 0 17m rook-ceph-mgr-b-86d4f654fb-nzxr4 3/3 Running 0 17m rook-ceph-mon-a-f5d45c975-6rqc6 2/2 Running 0 18m rook-ceph-operator-cb6cb456c-qt55t 1/1 Running 0 20m rook-ceph-osd-0-64d78fffbf-phbjk 2/2 Running 0 15m rook-ceph-osd-1-87b66886f-pbnb7 2/2 Running 0 15m rook-ceph-osd-2-7546c786f5-6p8pz 2/2 Running 0 15m rook-ceph-osd-3-57bfff6657-frgx6 2/2 Running 0 15m rook-ceph-osd-4-69864d744d-zjqgq 2/2 Running 0 15m rook-ceph-osd-5-74f46b6cd7-zwfgv 2/2 Running 0 15m rook-ceph-osd-prepare-master01-rrg5z 0/1 Completed 0 8m48s rook-ceph-osd-prepare-master02-jmzjc 0/1 Completed 0 8m44s rook-ceph-osd-prepare-master03-26d6m 0/1 Completed 0 8m39s
驗證集群是否可用
# 部署工具箱 kubectl create -f deploy/examples/toolbox.yaml # 等待工具箱 Pod 下載其容器并進(jìn)入以下running狀態(tài) kubectl -n rook-ceph rollout status deploy/rook-ceph-tools # rook-ceph-tools pod 運行后,您可以使用以下命令連接到它 kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- bash
工具箱中的所有可用工具均已準(zhǔn)備好滿足您的故障排除需求。
示例:
ceph statusceph osd statusceph dfrados df
使用完工具箱后,您可以刪除部署
kubectl -n rook-ceph delete deploy/rook-ceph-tools
或者直接敲命令也可以驗證ceph集群是否可用
[root@master01 ~]# kubectl get CephCluster -n rook-ceph NAME DATADIRHOSTPATH MONCOUNT AGE PHASE MESSAGE HEALTH EXTERNAL FSID rook-ceph /data/rook 3 200d Ready Cluster created successfully HEALTH_OK ac9b64f0-c26c-424e-8efe-fd561fbe0379
部署 Ceph 儀表板
下面幾種方式任選一種
kubectl create -f deploy/examples/dashboard-ingress-https.yaml kubectl create -f deploy/examples/dashboard-loadbalancer.yaml kubectl create -f deploy/examples/dashboard-external-http.yaml
賬號密碼
# 默認(rèn)賬號:admin
# 密碼通過下面的命令獲取
kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo
部署塊存儲(RBD)
注意修改pvc回收方式
kubectl create -f rook/deploy/examples/csi/rbd/storageclass.yaml
部署共享文件系統(tǒng)(CephFS)
kubectl create -f rook/deploy/examples/filesystem.yaml kubectl create -f rook/deploy/examples/csi/cephfs/storageclass.yaml
在K8S集群查看sc動態(tài)存儲
[root@master01 examples]# kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE rook-ceph-rbd rook-ceph.rbd.csi.ceph.com Retain Immediate true 150m rook-cephfs rook-ceph.cephfs.csi.ceph.com Retain Immediate true 7m39s [root@master01 examples]#
清理CEPH環(huán)境
刪除塊和文件工件
cd rook/deploy/examples kubectl delete -f ../wordpress.yaml kubectl delete -f ../mysql.yaml kubectl delete -n rook-ceph cephblockpool replicapool kubectl delete storageclass rook-ceph-block kubectl delete -f csi/cephfs/kube-registry.yaml kubectl delete storageclass csi-cephfs
刪除存儲環(huán)境
kubectl delete -f cluster.yaml kubectl delete -f crds.yaml -f common.yaml -f operator.yaml
刪除K8S資源的時候如果卡到Termination這個狀態(tài)
kubectl -n rook-ceph patch configmap rook-ceph-mon-endpoints --type merge -p '{"metadata":{"finalizers": []}}'
kubectl -n rook-ceph patch secrets rook-ceph-mon --type merge -p '{"metadata":{"finalizers": []}}'
刪除所有節(jié)點配置文件
rm -rf /var/lib/rook/rook-ceph
重置所有存儲節(jié)點的磁盤
DISK="/dev/sdX" # Zap the disk to a fresh, usable state (zap-all is important, b/c MBR has to be clean) sgdisk --zap-all $DISK # Wipe a large portion of the beginning of the disk to remove more LVM metadata that may be present dd if=/dev/zero of="$DISK" bs=1M count=100 oflag=direct,dsync # SSDs may be better cleaned with blkdiscard instead of dd blkdiscard $DISK # Inform the OS of partition table changes partprobe $DISK
Ceph 可以留下可以鎖定磁盤的 LVM 和設(shè)備映射器數(shù)據(jù),從而防止磁盤再次被使用。
這些步驟有助于釋放舊的 Ceph 磁盤以供重復(fù)使用。
請注意,這只需要在每個節(jié)點上運行一次。如果您只有一個Rook 集群并且所有Ceph 磁盤都將被擦除,請運行以下命令。
# This command hangs on some systems: with caution, 'dmsetup remove_all --force' can be used ls /dev/mapper/ceph-* | xargs -I% -- dmsetup remove % # ceph-volume setup can leave ceph-<UUID> directories in /dev and /dev/mapper (unnecessary clutter) rm -rf /dev/ceph-* rm -rf /dev/mapper/ceph--*
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Kubernetes有狀態(tài)應(yīng)用管理StatefulSet使用詳解
這篇文章主要為大家介紹了Kubernetes有狀態(tài)應(yīng)用管理StatefulSet使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
k8s擴(kuò)展調(diào)度能力的三種實現(xiàn)方式
Kubernetes調(diào)度器擴(kuò)展主要通過調(diào)度框架和調(diào)度器擴(kuò)展器實現(xiàn),調(diào)度框架提供多種插件接口,如QueueSort、Filter、Score等,允許擴(kuò)展調(diào)度邏輯,調(diào)度器擴(kuò)展器通過HTTP服務(wù)擴(kuò)展調(diào)度功能,支持Filter、Prioritize等擴(kuò)展點2025-10-10
詳解Kubernetes 中容器跨主機(jī)網(wǎng)絡(luò)
這篇文章主要為大家介紹了Kubernetes中容器跨主機(jī)網(wǎng)絡(luò)是怎么樣的,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
K8S部署Kafka界面管理工具(kafkamanager)方法詳解
這篇文章主要介紹了K8S部署Kafka界面管理工具(kafkamanager)方法詳解,需要的朋友可以參考下2022-01-01

