UDN-企业互联网技术人气社区

板块导航

浏览  : 1213
回复  : 0

[技术交流] 容器应用千变万化,存储架构不离其宗

[复制链接]
泡泡兔的头像 楼主
发表于 2016-6-29 14:51:55 | 显示全部楼层 |阅读模式
本帖最后由 泡泡兔 于 2016-6-29 14:56 编辑

2.png

  容器应用的存储需求

  容器是近年兴起的应用开发、交付和运维的方式。随着应用模式的深入,已经从原先无状态为主的应用,逐渐发展到有状态的容器应用。有状态的容器应用必需要有持久化数据的能力,存储模型如下图所示。
2.png

  在容器中运行的应用,应用真正需要保存的数据,可以写入持久化的Volume数据卷。由于以微服务架构为主的容器应用多为分布式系统,容器可能在多个节点中动态地启动、停止、伸缩或迁移,因此,当容器应用具有持久化的数据时,必须确保数据能被不同的节点所访问。另一方面,容器是面向应用的运行环境,数据通常要保存到文件系统中,即存储接口以文件形式更适合应用访问。综合上述需求,容器平台较适宜的应是具有共享文件接口的存储系统。

  容器存储的架构

  为了满足容器的存储需求,架构上可分为容器存储控制平面和存储数据平面两部分,如下图所示。
2.png

  1. 容器存储控制平面(Container Storage Control Plane),控制平面通常由软件实现,主要是接收北向API收到的存储请求,如创建、删除、加载、卸载和迁移数据卷(volume)等,并传递给底层数据平面去完成实际的存储操作。控制平面一般需要满足调用层规范的API,既可以是Docker容器引擎卷插件(Volume Plugin) 的API,也可以是Kubernetes等编排调度平台的Volume API。

  2. 存储数据平面(Storage Data Plane)提供数据实际的持久化能力,不仅需要实现容器数据卷的读写、快照、数据保护和复制等存储操作,而且通常还需具备多节点共享数据的能力。数据平面可以基于文件系统如NFS,CephFS等来做数据实际存储,也可以基于块设备如iSCSI等加上文件接口的来实现数据存储功能。从部署架构上看,容器存储可以分为集中式和分布式两种。集中式存储包括传统SAN为代表的块存储和NAS为代表的文件存储。分布式存储主要包括GlusterFS等共享文件系统和Ceph RBD等块设备,在云环境中的还包括各种云存储,如AWS的EBS块存储或S3对象存储。

  容器存储的volume管理

  由于容器技术应用的时间不长,成熟的容器存储方案还在发展过程中。目前,容器的存储大多支持Docker或Kubernetes的Volume,因此我们下文介绍这两种Volume的原理。

  Docker的容器卷插件

  Docker V1.8正式发布了容器卷插件(Volume Plugin) 的规范,允许第三方厂商的数据卷在Docker引擎中提供数据服务,使得外置存储可以超过容器的生命周期而独立存在。这意味着各种存储设备只要满足接口API的标准,就可以接入Docker容器的运行平台中。

  现有的各种存储可以通过简单的驱动程序封装,从而实现和Docker容器的对接。可以说,驱动程序实现了和容器引擎的北向接口,底层则调用后端存储的功能完成数据存取等任务。目前已经实现的Docker Volume Plugin中,后端存储包括常见的NFS, CIFS, GlusterFS和块设备等。

  Kubernetes的数据卷

  Kubernetes是开源的容器集群管理平台,可以自动化部署、扩展和运维容器应用。Kubernetes的调度单位称作“Pod”(豆荚),每个Pod包含一个或多个容器。Pod可部署在集群的任意节点中,存储设备可以通过数据卷(Volume)提供给Pod的容器使用。为了不绑定特定的容器技术,Kubernetes没有使用Docker的Volume机制,而是制定了自己的通用数据卷插件规范,以配合不同的容器运行时来使用(如Docker和rkt)。数据卷分为共享和非共享两种类型,其中非共享型只能被某个节点挂载使用(如iSCSI,AWS EBS等网络块设备),共享型则可以让不同节点上的多个Pod同时使用(如NFS,GlusterFS等网络文件系统,以及可支持多方读写的块设备)。对有状态的应用来说,共享型的卷存储能够很方便地支持容器在集群各节点之间的迁移。

  为了给容器提供更细粒度的卷管理,Kubernetes增加了持久化卷PV(Persistent Volume)的功能,把外置存储作为资源池,由平台管理并提供给整个集群使用。Kubernetes的卷管理架构使得存储可用标准的接入方式,并且通过接口暴露存储设备所支持的能力,从而在容器任务调度等方面实现了自动化管理。

  容器的存储项目和产品

  已经有越来越多的容器存储项目和产品涌现,包括Flocker(控制平面),Portworx(控制平面和数据平面),以及VMware的Virtual SAN + Photon Platform的超融合方案(下图)。限于篇幅,这里仅介绍一下VMware的化方案。VMware推出的光子平台(Photon Platform),帮助用户在ESX集群上快速、规模化地部署多种云原生应用集群:包括Docker Swarm,Mesos,Kubernetes,以及Pivotal Cloud Foundry,是容器化应用集群管理和调度的一大利器。在ESX提供计算能力的同时,底层的分布式存储Virtual SAN把本地磁盘池化,提供Docker Volume的接口,供容器应用使用。这种包含计算和存储能力的超融合集群,具有很强的扩展能力,适合云原生应用运行(参见开源云控制平面:光子控制器)。
2.png

  总体而言,面向容器的存储系统还有待发展和成熟,这也是各存储厂商新的机遇。

原文作者:张海宁(Henry) 来源:亨利笔记

相关帖子

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部