k8s源码分析 pdf_rook源码分析之一:rook架构解析
rook簡介
Rook是一款云原生環(huán)境下的開源分布式存儲編排系統(tǒng),目前支持 Ceph、NFS、Edegefs、Cassandra、CockroachDB等存儲系統(tǒng)。它實現(xiàn)了一個自動管理的、自動擴(kuò)容的、自動修復(fù)的分布式存儲服務(wù)。Rook 支持自動部署、啟動、配置、分配、擴(kuò)容/縮容、升級、遷移、災(zāi)難恢復(fù)、監(jiān)控以及資源管理。
Rook依賴底于編排平臺kubernetes的operate提供服務(wù)。
當(dāng)前,Rook是CNCF的incubating project項目。
rook部署ceph實例
為了讓大家先感受下rook,這里先利用rook來部署一個ceph集群。
應(yīng)該來說rook的部署還是非常方便容易的,即使不懂ceph的朋友,也可以利用rook為kubernetes快速搭建一個ceph后端存儲基座。
// 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)建一個工具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后便可以對該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),每個osd和mon都對應(yīng)著一個pod。
除了ceph相關(guān)的pod,我們發(fā)現(xiàn)還有3個agent,3個discover以及1個operate相關(guān)pod。這幾類pod就是rook的核心,agent和discovery是以daemonset形式部署在所有的存儲機(jī)上的,operater是rook的大腦,以deployment形式存在。
rook架構(gòu)
通過上一小節(jié)用rook部署ceph,我們知道了rook有3個核心概念,也即operate,discover以及agent。在rook這幅架構(gòu)圖中我們便能發(fā)現(xiàn)他們的蹤跡。
1)Rook Operator
Rook Operater是rook的大腦,以deployment形式存在
- 其利用k8s的controller-runtime框架實現(xiàn)了CRD,并進(jìn)而接受k8s創(chuàng)建資源的請求并創(chuàng)建相關(guān)資源(集群,pool,塊存儲服務(wù),文件存儲服務(wù)等)。
- Rook Operate監(jiān)控存儲守護(hù)進(jìn)程,來確保存儲集群的健康。
- 監(jiān)聽Rook Discovers收集到的存儲磁盤設(shè)備,并創(chuàng)建相應(yīng)服務(wù)(ceph的話就是osd了)。
可以通過修改operate.yaml中的replicas的副本數(shù)來保證Operate的高可用(默認(rèn)為1)。
2)Rook Discover
Rook Discover是以daemonset形式部署在所有的存儲機(jī)上的,其檢測掛接到存儲節(jié)點上的存儲設(shè)備。把符合要求的存儲設(shè)備記錄下來,這樣Rook Operate感知到以后就可以基于該存儲設(shè)備創(chuàng)建相應(yīng)服務(wù)了。
3)Rook Agent
Rook Agent是以daemonset形式部署在所有的存儲機(jī)上的,其處理所有的存儲操作,例如掛卸載存儲卷以及格式化文件系統(tǒng)等。
最近開始接觸到Rook源碼相關(guān)工作,因為覺得Rook確實挺好用的,所以后面希望能逐步聊聊自己的理解。
接下來應(yīng)該會從以下幾方面展開:
- rook源碼分析之2:rook源碼目錄架構(gòu)以及框架淺析
- rook源碼分析之3:operate源碼淺析
- rook源碼分析之4:discover源碼淺析
- rook源碼分析之5:agent源碼淺析
總結(jié)
以上是生活随笔為你收集整理的k8s源码分析 pdf_rook源码分析之一:rook架构解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dnf黑暗武士后期不给力了吗?
- 下一篇: 2g内存多少钱啊?