k8s源码分析 pdf_rook源码分析之一:rook架构解析
rook簡介
Rook是一款云原生環境下的開源分布式存儲編排系統,目前支持 Ceph、NFS、Edegefs、Cassandra、CockroachDB等存儲系統。它實現了一個自動管理的、自動擴容的、自動修復的分布式存儲服務。Rook 支持自動部署、啟動、配置、分配、擴容/縮容、升級、遷移、災難恢復、監控以及資源管理。
Rook依賴底于編排平臺kubernetes的operate提供服務。
當前,Rook是CNCF的incubating project項目。
rook部署ceph實例
為了讓大家先感受下rook,這里先利用rook來部署一個ceph集群。
應該來說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// 該條命令執行前可用"kubectl -n rook-ceph get pod"命令查看""rook-ceph-operator "是否已經是running狀態了 kubectl create -f cluster.yaml// 為ceph集群創建一個工具pod,有了該工具pod就可以在該pod里基于該ceoh集群執行ceph相關命令了 kubectl create -f toolbox.yaml以下便是本次創建成功的所有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,通過進入工具pod后便可以對該ceph集群執行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信息,我們發現ceph中的元素,比如osd,mon以及mgr都是通過pod的形式存在的(更準確來說應該是deployment),每個osd和mon都對應著一個pod。
除了ceph相關的pod,我們發現還有3個agent,3個discover以及1個operate相關pod。這幾類pod就是rook的核心,agent和discovery是以daemonset形式部署在所有的存儲機上的,operater是rook的大腦,以deployment形式存在。
rook架構
通過上一小節用rook部署ceph,我們知道了rook有3個核心概念,也即operate,discover以及agent。在rook這幅架構圖中我們便能發現他們的蹤跡。
1)Rook Operator
Rook Operater是rook的大腦,以deployment形式存在
- 其利用k8s的controller-runtime框架實現了CRD,并進而接受k8s創建資源的請求并創建相關資源(集群,pool,塊存儲服務,文件存儲服務等)。
- Rook Operate監控存儲守護進程,來確保存儲集群的健康。
- 監聽Rook Discovers收集到的存儲磁盤設備,并創建相應服務(ceph的話就是osd了)。
可以通過修改operate.yaml中的replicas的副本數來保證Operate的高可用(默認為1)。
2)Rook Discover
Rook Discover是以daemonset形式部署在所有的存儲機上的,其檢測掛接到存儲節點上的存儲設備。把符合要求的存儲設備記錄下來,這樣Rook Operate感知到以后就可以基于該存儲設備創建相應服務了。
3)Rook Agent
Rook Agent是以daemonset形式部署在所有的存儲機上的,其處理所有的存儲操作,例如掛卸載存儲卷以及格式化文件系統等。
最近開始接觸到Rook源碼相關工作,因為覺得Rook確實挺好用的,所以后面希望能逐步聊聊自己的理解。
接下來應該會從以下幾方面展開:
- rook源碼分析之2:rook源碼目錄架構以及框架淺析
- rook源碼分析之3:operate源碼淺析
- rook源碼分析之4:discover源碼淺析
- rook源碼分析之5:agent源碼淺析
總結
以上是生活随笔為你收集整理的k8s源码分析 pdf_rook源码分析之一:rook架构解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dnf黑暗武士后期不给力了吗?
- 下一篇: angular路由传递参数_在angul