GlusterFS-Kubernetes雲原生存儲

GlusterFS-Kubernetes雲原生存儲

gluster-kubernetes 爲Kubernetes管理員提供了快速部署GlusterFS的一個機制,能夠把GlusterFS做爲原生存儲服務部署到已存的Kubernetes集羣之中。這裏,GlusterFS像任何其它的Kubernetes應用同樣管理和編排,這是最爲快捷的釋放GlusterFS做爲動態存儲提供者實現持久的GlusterFS存儲卷的方法。node

項目相關組件

  • Kubernetes, 容器集羣管理系統。
  • GlusterFS, 可伸縮存儲系統。
  • heketi, GlusterFS的RESTful volume管理接口。

演示教程

社區演示和視頻在 here.git

>>> Video demo of the technology! <<<github

文檔

快速開始

若是你已經有一個現成的kubernetes集羣但願使用,確認下知足這裏的要求:setup guidejson

該項目包括 vagrant setup,在vagrant/ 目錄下,用於在虛擬機中啓動 Kubernetes 集羣進行試驗。爲了運行vagrant setup, 確認下你的機器知足下面的條件:數組

  • 4GB of memory
  • 32GB of storage minimum, 112GB recommended
  • ansible
  • vagrant
  • libvirt or VirtualBox

在 vagrant/ 目錄下,運行 ./up.sh 便可啓動集羣。緩存

注意: 若是你計劃屢次運行./up.sh, vagrant setup 支持緩存的軟件包和鏡像。請閱讀 vagrant directory README 得到更多信息,幫助進行配置和使用緩存支持。ssh

下一步,複製 deploy/ 目錄到集羣的master節點。curl

你須要提供本身的 topology file。一個示例 topology file 包含在 deploy/ 目錄下 (default location that gk-deploy expects) ,能夠用於vagrant libvirt setup的 topology。當建立topology file時:分佈式

  • 確認topology file只列出用於heketi's的 block devices。heketi須要存取整個 block devices (e.g. /dev/sdb, /dev/vdb) ,其將被分區和格式化。ide

  • 這裏的 hostnames 數組有一點誤導,manage 將是節點的hostnames的列表,可是storage將是node上的IP addresses列表,用於後臺的存儲通信。

若是你使用提供vagrant libvirt setup, 你將可以:

$ vagrant ssh-config > ssh-config
$ scp -rF ssh-config ../deploy master:
$ vagrant ssh master
[vagrant@master]$ cd deploy
[vagrant@master]$ mv topology.json.sample topology.json

下面的命令運行時時假定使用 administrative privileges (好比前面加上 sudo su).

而後,驗證下 Kubernetes安裝,是否全部節點都已經可用:

$ kubectl get nodes
NAME      STATUS    AGE
master    Ready     22h
node0     Ready     22h
node1     Ready     22h
node2     Ready     22h

注意: 查看 Kubernetes 版本(which will change based on latest official releases) 運行 kubectl version

下一步,部署 heketi 和 GlusterFS,運行:

$ ./gk-deploy -g

若是你已經有了一個 GlusterFS 集羣,不須要 -g 選項。

該操做結束後,GlusterFS 和 heketi 應該已經安裝並準備運行。你能夠設置 HEKETI_CLI_SERVER環境變量,以便 heketi-cli能夠直接讀取,或者發送到 curl:

$ export HEKETI_CLI_SERVER=$(kubectl get svc/heketi --template 'http://{{.spec.clusterIP}}:{{(index .spec.ports 0).port}}')

$ echo $HEKETI_CLI_SERVER
http://10.42.0.0:8080

$ curl $HEKETI_CLI_SERVER/hello
Hello from Heketi

如今的Kubernetes cluster看起來應該以下的樣子(節點取決於配置):

$ kubectl get nodes,pods
NAME      STATUS    AGE
master    Ready     22h
node0     Ready     22h
node1     Ready     22h
node2     Ready     22h
NAME                               READY     STATUS              RESTARTS   AGE
glusterfs-node0-2509304327-vpce1   1/1       Running             0          1d
glusterfs-node1-3290690057-hhq92   1/1       Running             0          1d
glusterfs-node2-4072075787-okzjv   1/1       Running             0          1d
heketi-3017632314-yyngh            1/1       Running             0          1d

如今,你可使用 heketi-cli 或者其它 heketi REST API (like the GlusterFS volume plugin) 客戶端來 建立/管理 volumes,而後mount這些 volumes 以驗證是否工做。在Kubernets中應用的使用例子參見:

聯繫

 gluster-kubernetes 開發者 hang out in #sig-storage on the Kubernetes Slack 和 IRC channels in #gluster and #heketi at freenode network.

能夠到GitHub提交 Issues 和 Pull Requests。

相關文章
相關標籤/搜索