2019独角兽企业重金招聘Python工程师标准>>>

GlusterFS-Kubernetes云原生存储

  • 本文编译来自 https://github.com/gluster/gluster-kubernetes
  • 本文地址 https://my.oschina.net/u/2306127/blog/1827193,by openthings, 2018.06.08.
  • 参考:
    • Gluster官网,https://www.gluster.org/
    • Gluster源码,https://github.com/gluster/glusterfs
    • Gluster文档,https://docs.gluster.org/en/latest/Quick-Start-Guide/Quickstart/
    • Gluster 4.0 & Kubernetes, https://www.gluster.org/gluster-4-0-kubernetes/
    • GlusterFS分布式文件系统的安装配置教程,https://yq.aliyun.com/ziliao/75313
    • Kubernetes部署GlusterFS
      • http://yoyolive.com/2017/03/09/Kubernetes-Deploy-GlusterFS/
    • Adding new glusterfs StorageClass to Kubernetes?
      • https://stackoverflow.com/questions/47915443/adding-new-glusterfs-storageclass-to-kubernetes

gluster-kubernetes 为Kubernetes管理员提供了快速部署GlusterFS的一个机制,可以把GlusterFS作为原生存储服务部署到已存的Kubernetes集群之中。这里,GlusterFS像任何其它的Kubernetes应用一样管理和编排,这是最为快捷的释放GlusterFS作为动态存储提供者实现持久的GlusterFS存储卷的方法。

项目相关组件

  • Kubernetes, 容器集群管理系统。
  • GlusterFS, 可伸缩存储系统。
  • heketi, GlusterFS的RESTful volume管理接口。

演示教程

社区演示和视频在 here.

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

文档

  • Quickstart
  • Setup Guide
  • Hello World with GlusterFS Dynamic Provisioning
  • Contact
  • Release and Maintenance Policies

快速开始

如果你已经有一个现成的kubernetes集群希望使用,确认下满足这里的要求:setup guide。

该项目包括 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 获得更多信息,帮助进行配置和使用缓存支持。

下一步,复制 deploy/ 目录到集群的master节点。

你需要提供自己的 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) ,其将被分区和格式化。

  • 这里的 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中应用的使用例子参见:

  • GlusterFS-动态卷快速应用,https://my.oschina.net/u/2306127/blog/1827417

联系

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

可以到GitHub提交 Issues 和 Pull Requests。

转载于:https://my.oschina.net/u/2306127/blog/1827193

GlusterFS-Kubernetes云原生存储相关推荐

  1. 全网最全的云原生存储 OpenEBS 使用指南

    ❝ 本文转自 weiliang 的工作笔记,原文:https://weiliang-ms.github.io/wl-awesome/2.%E5%AE%B9%E5%99%A8/k8s/storage/O ...

  2. kubernetes云原生纪元:共享存储-PVPVC(上)

    kubernetes云原生纪元:共享存储-PV&&PVC(上) 之前我们学习的都是无状态的服务,如果有状态的服务就非常麻烦,比如有的服务会把自己文件存放到自己服务器的目录上,如果直接嵌 ...

  3. 云原生存储详解:容器存储与 K8s 存储卷

    作者 | 阚俊宝 阿里云技术专家 导读:云原生存储详解系列文章将从云原生存储服务的概念.特点.需求.原理.使用及案例等方面,和大家一起探讨云原生存储技术新的机遇与挑战.本文为该系列文章的第二篇,会对容 ...

  4. 云原生存储系列文章(一):云原生应用的基石

    作者| 郡宝 阿里云技术专家 参与文末留言互动,即有机会获得赠书福利! 导读:存储服务支撑了应用的状态.数据的持久化,是计算机系统中的重要组成部分,也是所有应用得以运行的基础,其重要性不言而喻.在存储 ...

  5. k8s挂载目录_云原生存储详解:容器存储与 K8s 存储卷

    作者 | 阚俊宝 阿里云技术专家 导读:云原生存储详解系列文章将从云原生存储服务的概念.特点.需求.原理.使用及案例等方面,和大家一起探讨云原生存储技术新的机遇与挑战.本文为该系列文章的第二篇,会对容 ...

  6. docker修改镜像的存储位置_云原生存储详解:容器存储与 K8s 存储卷(内含赠书福利)...

    作者 | 阚俊宝  阿里巴巴技术专家 参与文末留言互动,即有机会获得赠书福利! 导读:云原生存储详解系列文章将从云原生存储服务的概念.特点.需求.原理.使用及案例等方面,和大家一起探讨云原生存储技术新 ...

  7. 云原生存储详解:容器存储与K8s存储卷

    作者 | 阚俊宝 阿里云技术专家 导读:云原生存储详解系列文章将从云原生存储服务的概念.特点.需求.原理.使用及案例等方面,和大家一起探讨云原生存储技术新的机遇与挑战.本文为该系列文章的第二篇,会对容 ...

  8. 什么云原生存储解决方案最受欢迎?

    存储是容器即服务平台最关键的组件之一.容器原生存储向容器和微服务公开底层存储服务.与软件定义的存储一样,它聚合和汇集来自不同介质的存储资源. 容器原生存储通过提供持久卷,使有状态的工作负载能够在容器中 ...

  9. Kubernetes云原生开源分布式存储介绍

    Kubernetes存储介绍 为何引入PV.PVC以及StorageClass? 熟悉Kubernetes的都对PV.PVC以及StorageClass不陌生,我们经常用到,因此这里不再详细介绍PV. ...

最新文章

  1. 兔子生兔子递归的理解
  2. dfasdfasdfas
  3. np.random.permutation
  4. Codeforces 681C:Heap Operations
  5. 用linq查询html中div个数,C#使用Linq to XML进行XPath查询
  6. windows编译libevent时报告“缺少print_winsock_errors.obj”的解决
  7. 防腐投加器需要加盐吗_果干、果脯、蜜钱、水果脆片,哪个有营养?你吃对了吗?...
  8. [剑指offer]面试题第[6]题[JAVA][旋转数组的最小数字][二分法]
  9. Pytorch相关函数详解
  10. CentOS7.2安装jdk7u80
  11. Python之千与千寻豆瓣短评词云秀
  12. Python twisted事件驱动网络框架 源码剖析
  13. hexo和github pages的关系
  14. html 播放flv js代码,js实现的万能flv网页播放器代码
  15. 三菱fx2n做从站的modbus通讯_第476期丨关于三菱PLC中除法的问题;请教一个监测电流的小物件或方法...
  16. SVM支持向量机-——希尔伯特空间解释
  17. python怎么连接linux服务器,python连接linux服务器
  18. Java后端防止获取短信验证码接口被恶意调用的代码实现
  19. java clone 对象_为什么阿里Java手册推荐慎用 Object 的 clone 方法来拷贝对象
  20. HDU2586 How far away ?(LCA模板题)

热门文章

  1. ActiveRecord教程
  2. 第五届省赛(软件类)真题----Java大学C组答案及解析
  3. Neither BindingResult nor plain target object for bean name 'xxx' availabl问题解决
  4. oracle只读事物,oracle的只读事务
  5. java使用重复的类库,java list 去除 重复值
  6. trackingmore快递查询平台_国际快递物流信息追踪查询
  7. Golang——死锁、互斥锁、读写锁的实现
  8. java解析时已到达文件结尾_IO流读取到文件末尾继续读取
  9. Spring中解决事务以及异步注解失效
  10. 超越BI,数据产品的前途在哪里?