k8s源码分析 pdf_rook源码分析之一:rook架构解析
rook簡(jiǎn)介
Rook是一款云原生環(huán)境下的開源分布式存儲(chǔ)編排系統(tǒng),目前支持 Ceph、NFS、Edegefs、Cassandra、CockroachDB等存儲(chǔ)系統(tǒng)。它實(shí)現(xiàn)了一個(gè)自動(dòng)管理的、自動(dòng)擴(kuò)容的、自動(dòng)修復(fù)的分布式存儲(chǔ)服務(wù)。Rook 支持自動(dòng)部署、啟動(dòng)、配置、分配、擴(kuò)容/縮容、升級(jí)、遷移、災(zāi)難恢復(fù)、監(jiān)控以及資源管理。
Rook依賴底于編排平臺(tái)kubernetes的operate提供服務(wù)。
當(dāng)前,Rook是CNCF的incubating project項(xiàng)目。
rook部署ceph實(shí)例
為了讓大家先感受下rook,這里先利用rook來部署一個(gè)ceph集群。
應(yīng)該來說rook的部署還是非常方便容易的,即使不懂ceph的朋友,也可以利用rook為kubernetes快速搭建一個(gè)ceph后端存儲(chǔ)基座。
// clone rook代碼 git clone --single-branch --branch release-1.3 https://github.com/rook/rook.git cd rook/cluster/examples/kubernetes/cephkubectl create -f common.yaml kubectl create -f operator.yaml// 該條命令執(zhí)行前可用"kubectl -n rook-ceph get pod"命令查看""rook-ceph-operator "是否已經(jīng)是running狀態(tài)了 kubectl create -f cluster.yaml// 為ceph集群創(chuàng)建一個(gè)工具pod,有了該工具pod就可以在該pod里基于該ceoh集群執(zhí)行ceph相關(guān)命令了 kubectl create -f toolbox.yaml以下便是本次創(chuàng)建成功的所有pod:
usrname@hostname:~$ kubectl get pods -n rook-ceph NAME READY STATUS RESTARTS AGE rook-ceph-mgr-a-76c494c8c-mmcb9 1/1 Running 0 47h rook-ceph-mon-a-59899574c-bph5d 1/1 Running 0 47h rook-ceph-mon-b-5c8467b4b8-kwzhn 1/1 Running 1 46h rook-ceph-mon-c-77c9b7987c-s924g 1/1 Running 0 47h rook-ceph-osd-1-5dcf569f54-s9m2b 1/1 Running 0 46h rook-ceph-osd-2-69f59fd7db-6nrkl 1/1 Running 0 46h rook-ceph-osd-3-79d856fbdc-vlrq6 1/1 Running 0 46h // 工具pod,通過進(jìn)入工具pod后便可以對(duì)該ceph集群執(zhí)行ceph命令了 rook-ceph-tools-686b8cdf49-56jl9 1/1 Running 1 46hrook-ceph-operator-564464fc86-2j664 1/1 Running 0 47h rook-ceph-agent-4bzh2 1/1 Running 0 47h rook-ceph-agent-5gplk 1/1 Running 0 47h rook-ceph-agent-lx8sl 1/1 Running 1 47h rook-discover-hdb62 1/1 Running 1 47h rook-discover-l4n4h 1/1 Running 0 47h rook-discover-wf47r 1/1 Running 0 47h通過查看上述pod信息,我們發(fā)現(xiàn)ceph中的元素,比如osd,mon以及mgr都是通過pod的形式存在的(更準(zhǔn)確來說應(yīng)該是deployment),每個(gè)osd和mon都對(duì)應(yīng)著一個(gè)pod。
除了ceph相關(guān)的pod,我們發(fā)現(xiàn)還有3個(gè)agent,3個(gè)discover以及1個(gè)operate相關(guān)pod。這幾類pod就是rook的核心,agent和discovery是以daemonset形式部署在所有的存儲(chǔ)機(jī)上的,operater是rook的大腦,以deployment形式存在。
rook架構(gòu)
通過上一小節(jié)用rook部署ceph,我們知道了rook有3個(gè)核心概念,也即operate,discover以及agent。在rook這幅架構(gòu)圖中我們便能發(fā)現(xiàn)他們的蹤跡。
1)Rook Operator
Rook Operater是rook的大腦,以deployment形式存在
- 其利用k8s的controller-runtime框架實(shí)現(xiàn)了CRD,并進(jìn)而接受k8s創(chuàng)建資源的請(qǐng)求并創(chuàng)建相關(guān)資源(集群,pool,塊存儲(chǔ)服務(wù),文件存儲(chǔ)服務(wù)等)。
- Rook Operate監(jiān)控存儲(chǔ)守護(hù)進(jìn)程,來確保存儲(chǔ)集群的健康。
- 監(jiān)聽Rook Discovers收集到的存儲(chǔ)磁盤設(shè)備,并創(chuàng)建相應(yīng)服務(wù)(ceph的話就是osd了)。
可以通過修改operate.yaml中的replicas的副本數(shù)來保證Operate的高可用(默認(rèn)為1)。
2)Rook Discover
Rook Discover是以daemonset形式部署在所有的存儲(chǔ)機(jī)上的,其檢測(cè)掛接到存儲(chǔ)節(jié)點(diǎn)上的存儲(chǔ)設(shè)備。把符合要求的存儲(chǔ)設(shè)備記錄下來,這樣Rook Operate感知到以后就可以基于該存儲(chǔ)設(shè)備創(chuàng)建相應(yīng)服務(wù)了。
3)Rook Agent
Rook Agent是以daemonset形式部署在所有的存儲(chǔ)機(jī)上的,其處理所有的存儲(chǔ)操作,例如掛卸載存儲(chǔ)卷以及格式化文件系統(tǒng)等。
最近開始接觸到Rook源碼相關(guān)工作,因?yàn)橛X得Rook確實(shí)挺好用的,所以后面希望能逐步聊聊自己的理解。
接下來應(yīng)該會(huì)從以下幾方面展開:
- rook源碼分析之2:rook源碼目錄架構(gòu)以及框架淺析
- rook源碼分析之3:operate源碼淺析
- rook源碼分析之4:discover源碼淺析
- rook源碼分析之5:agent源碼淺析
總結(jié)
以上是生活随笔為你收集整理的k8s源码分析 pdf_rook源码分析之一:rook架构解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dnf黑暗武士后期不给力了吗?
- 下一篇: angular路由传递参数_在angul