前言
基于kubesphere的k8s環(huán)境部署單點(diǎn)版本的rook-ceph,實(shí)驗(yàn)性質(zhì)大于使用性質(zhì),不推薦在物理資源有限的情況下使用。
一、rook-ceph是什么?
Rook is an open source cloud-native storage orchestrator, providing the platform, framework, and support for Ceph storage to natively integrate with cloud-native environments.
Rook是一個(gè)開源的云原生存儲(chǔ)編排器,為Ceph存儲(chǔ)提供平臺(tái)、框架和支持,以便與云原生環(huán)境進(jìn)行本地集成。
二、開始部署
1.環(huán)境準(zhǔn)備
虛擬機(jī)一臺(tái)
- 鏡像類型:CentOS-7-x86_64-Minimal-2009.iso
- k8s環(huán)境:v1.23.6
- ceph將使用的磁盤:vda(30G)、vdb(30G)、vdc(30G)
k8s的部署: 在centos7.9上以 All-in-One 模式安裝 KubeSphere
2.軟件包準(zhǔn)備
安裝軟件包,加載rbd模塊
#軟件包裝備
yum install -y git lvm2 gdisk
#內(nèi)核加載rbd模塊
modprobe rbd
lsmod | grep rbd
備注:刪除殘留數(shù)據(jù),如果部署失敗,一定清理下數(shù)據(jù),不清理的話會(huì)影響下一次的部署
刪除配置文件目錄
rm -rf /var/lib/rook/
格式化磁盤
gdisk --zap-all /dev/vda
gdisk --zap-all /dev/vdb
gdisk --zap-all /dev/vdc
dd if=/dev/zero of=/dev/vda bs=1M count=100 oflag=direct,dsync
dd if=/dev/zero of=/dev/vdb bs=1M count=100 oflag=direct,dsync
dd if=/dev/zero of=/dev/vdc bs=1M count=100 oflag=direct,dsync
3.下載rook-ceph文件
下載文件并提取核心文件到自己的部署文件夾
cd /tmp/
git clone --single-branch --branch v1.11.6 https://github.com/rook/rook.git
mkdir -p /data/rook-ceph/
cp /tmp/rook/deploy/examples/crds.yaml /data/rook-ceph/crds.yaml
cp /tmp/rook/deploy/examples/common.yaml /data/rook-ceph/common.yaml
cp /tmp/rook/deploy/examples/operator.yaml /data/rook-ceph/operator.yaml
cp /tmp/rook/deploy/examples/cluster-test.yaml /data/rook-ceph/cluster-test.yaml
cp /tmp/rook/deploy/examples/filesystem.yaml /data/rook-ceph/filesystem.yaml
cp /tmp/rook/deploy/examples/toolbox.yaml /data/rook-ceph/toolbox.yaml
cp /tmp/rook/deploy/examples/csi/rbd/storageclass.yaml /data/rook-ceph/storageclass-rbd.yaml
cp /tmp/rook/deploy/examples/csi/cephfs/storageclass.yaml /data/rook-ceph/storageclass-cephfs.yaml
cp /tmp/rook/deploy/examples/csi/nfs/storageclass.yaml /data/rook-ceph/storageclass-nfs.yaml
4. 部署operator
修改鏡像倉(cāng)庫(kù)信息,operator.yaml中鏡像倉(cāng)庫(kù)修改為阿里云的鏡像倉(cāng)庫(kù)配置
ROOK_CSI_CEPH_IMAGE: "quay.io/cephcsi/cephcsi:v3.8.0"
ROOK_CSI_REGISTRAR_IMAGE: "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-node-driver-registrar:v2.7.0"
ROOK_CSI_RESIZER_IMAGE: "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-resizer:v1.7.0"
ROOK_CSI_PROVISIONER_IMAGE: "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-provisioner:v3.4.0"
ROOK_CSI_SNAPSHOTTER_IMAGE: "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-snapshotter:v6.2.1"
ROOK_CSI_ATTACHER_IMAGE: "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-attacher:v4.1.0"
執(zhí)行部署
# 開始部署
cd /data/rook-ceph
kubectl create -f crds.yaml
kubectl create -f common.yaml
kubectl create -f operator.yaml
# 檢查operator的創(chuàng)建運(yùn)行狀態(tài)
kubectl -n rook-ceph get pod
# 輸出
NAME READY STATUS RESTARTS AGE
rook-ceph-operator-xxxxx-xxxxx 1/1 Running 0 4m9s
5.創(chuàng)建ceph集群
執(zhí)行部署cluster-test.yaml
kubectl create -f cluster-test.yaml
# 會(huì)部署一段時(shí)間
kubectl -n rook-ceph get pod
# 查看部署結(jié)果,當(dāng)全部為Running之后部署工具容器進(jìn)行集群確認(rèn)
6.創(chuàng)建工具容器,檢查集群狀態(tài)
# 創(chuàng)建工具容器
kubectl apply -f toolbox.yaml
# 進(jìn)入工具容器
kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- bash
# 查看集群狀態(tài)
bash-4.4$ ceph -s
cluster:
id: ec2162d1-cab0-402d-ba04-f0f3f6cfb95d
health: HEALTH_OK
services:
mon: 1 daemons, quorum a (age 11m)
mgr: a(active, since 10m)
osd: 3 osds: 3 up (since 10m), 3 in (since 10m)
data:
pools: 1 pools, 32 pgs
objects: 2 objects, 463 KiB
usage: 60 MiB used, 90 GiB / 90 GiB avail
pgs: 32 active+clean
7.準(zhǔn)備dashboard的nodeport端口映射服務(wù)
備注:這里使用7000端口是因?yàn)閏luster-test.yaml中dashboard沒有做特殊的配置,所以使用默認(rèn)的mgr的7000端口
cat > /data/rook-ceph/dashboard-external-https.yaml <<EOF
apiVersion: v1
kind: Service
metadata:
name: rook-ceph-mgr-dashboard-external-https
namespace: rook-ceph
labels:
app: rook-ceph-mgr
rook_cluster: rook-ceph
spec:
ports:
- name: dashboard
port: 7000
protocol: TCP
targetPort: 7000
nodePort: 30808
selector:
app: rook-ceph-mgr
rook_cluster: rook-ceph
sessionAffinity: None
type: NodePort
EOF
# 這里的nodeport端口建議更換為適合自己環(huán)境規(guī)劃的端口
kubectl apply -f dashboard-external-https.yaml
# 輸出
service/rook-ceph-mgr-dashboard-external-https created
# 獲取admin用戶密碼
kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo
使用瀏覽器訪問端口192.168.XXX.XX:30808,使用admin用戶登陸,登陸后可以修改密碼,也可以新建用戶
成功登陸
8.準(zhǔn)備prometheus的metric端口映射服務(wù)
cat > /data/rook-ceph/metric-external-https.yaml <<EOF
apiVersion: v1
kind: Service
metadata:
name: rook-ceph-mgr-metric-external-https
namespace: rook-ceph
labels:
app: rook-ceph-mgr
rook_cluster: rook-ceph
spec:
ports:
- name: metric
port: 9283
protocol: TCP
targetPort: 9283
nodePort: 30809
selector:
app: rook-ceph-mgr
rook_cluster: rook-ceph
sessionAffinity: None
type: NodePort
EOF
# 這里的nodeport端口建議更換為適合自己環(huán)境規(guī)劃的端口
kubectl apply -f metric-external-https.yaml
# 輸出
service/rook-ceph-mgr-metric-external-https created
使用瀏覽器訪問端口192.168.XXX.XX:30809文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-727715.html
總結(jié)
還是開頭提到的,實(shí)驗(yàn)性質(zhì)大于使用性質(zhì)。沒啥其他的。實(shí)驗(yàn)的東西用來(lái)提供服務(wù)肯定會(huì)是一個(gè)大坑。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-727715.html
到了這里,關(guān)于基于kubesphere的k8s環(huán)境部署單點(diǎn)版本的rook-ceph的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!