写点什么

OpenStack Liberty 版本对容器支持的详解

  • 2016-03-24
  • 本文字数:4263 字

    阅读完需:约 14 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

OpenStack 是目前全球云服务市场上使用最为广泛的开源平台之一,无论是公有云还是私有云,OpenStack 已经成为云服务框架的事实标准。2015 年 10 月 15 日,OpenStack 发布了其第 12 个版本 Liberty,为全球的云服务提供商和云用户带来了 53 个主要的改进点。

Liberty 版本增强了生产级云平台所需要的核心服务,提供了基于角色的访问控制(RBAC),允许运营者更加精细地调整网络安全设置,提升对 OpenStack 大规模部署的支持力度。其中最引人注目的变化是,将以 Docker 为代表的容器技术纳入到 OpenStack 体系中,借助目前 OpenStack 成熟的模型,对生产环境中的容器部署与管理给予强有力的支持。

容器技术无疑是近两年最炙手可热的虚拟化技术之一,其开源、开放、弹性易部署、高性价比等诸多优势基因,使其备受业界关注,尤其是 Docker 公司对容器进行了诸多改进与大力推广,形成了围绕容器技术的一个巨大生态系统,彻底改变了软件的开发、部署到运行的整个生命周期。OpenStack 很早就感知到了容器所带来的变革,在早期 Havana 版本就已经开始尝试对容器进行扩展。作为虚拟化技术,容器比传统虚拟机更轻量化,所以最初自然会想到使用容器全面替代虚拟机,并且想当然地认为所有东西都能够正常工作,所以产生了 nova-docker-driver,heat-docker-driver 等项目。但不幸的是,虚拟化应用的现实情况非常复杂,最终 OpenStack 认识到,容器完全不同于虚拟机,也不应该把容器当成虚拟机来使用,容器需要一套完全不同的管理工具,以便在大型企业、超大规模数据中心和云环境中被使用。

经过从 H 版本到 K 版本的摸索,OpenStack 对于整合容器的思路逐步清晰与成熟,温哥华 OpenStack Summit 上, Container/Docker 成为一大关注焦点,随后发表的白皮书《Exploring Opportunities: Containers and OpenStack》阐明了 OpenStack 今后深度整合容器的方式与方向。基于这份白皮书,Liberty 版本发布时,包含了许多容器相关的重要新特性:

  • Magnum - 提供容器环境的编排、部署与管理,即:COE(Container Orchestration Engines) as a service,目前支持 Kubernetes、Mesos 和 Docker Swarm;
  • Kuryr - 集成 libnetwork 等原生的容器网络组件,打通容器网络与 Neutron 网络;
  • Murano - 提供应用目录服务,实现服务与应用程序的一键发布、快速部署和生命周期管理;
  • Solum - 简化云应用程序从研发到交付的生命周期管理,为云应用开发者提供持续集成的能力;
  • Manila - 文件共享服务,可以为容器应用的 Replication 和多读多写提供持久化存储方案 。

Magnum

Magnum 项目由 OpenStack 联合创始成员 Rackspace 主导开发,在 OpenStack 整合容器方面扮演了一个重要角色。Magnum 解决什么问题?正如项目团队主管 Otto 所说:“在容器上运行应用时出现的大多数问题都是基础设施问题,包括‘我如何与我们的网络连接在一起?我利用自己的存储能够做哪些工作?我的地址来自哪里?我如何编排它们?如何扩展它们?’,而这些正是 Magnum 要解决的核心问题。“

(点击放大图像)

在Liberty 版本发布了首个Magnum 生产级的完整版,支持Kubernetes、Apache Mesos 和Docker Swarm 等COE(Container Orchestration Engines) backends,支持基于TLS 的Master/Minion/Worker 间的安全连接,支持Neutron LBaaS 以及弹性伸缩,以及支持Master 节点的HA 部署方案。

Magnum 本身并不直接负责容器的生命周期管理,而是把这部分控制权交给 COE backends,但这并不是说 Magnum 仅仅是负责 COE 集群的部署,用户利用 Magnum 提供的 API 可以对容器进行间接的精细控制,比如在 Kubernetes 上创建一个端口等,根据 COE backends 的不同,可以获得不同的原生 API 体验。

除了可以选择不同的 COE backends,由于 Magnum 集成在 Nova、Ironic 等 OpenStack 的现有服务之中,因此通过 Magnum 可以将集群部署在不同的计算资源上,即:可以部署在虚拟机 (VM) 上,也可以部署在裸机 (BareMetal) 上,这样更利于使用者采用容器技术。

Magnum 支持也并不仅仅局限于 Linux,微软正在将 Windows Server 容器和 Hyper-V 容器这两个不同类型的容器整合至 Windows Server 2016 之中,这两种容器都可以由 Docker Engine 管理,自然 Magnum 最终将能够覆盖 Docker 或微软自己的容器管理工具,以管理 OpenStack 云中的微软容器与虚拟层技术。

Kuryr

Kuryr 是 OpenStack 的一个新项目,通过直接集成 libnetwork 等原生的容器网络组件,把容器和 Docker 网络加入到 Neutron 解决方案和网络服务的使用中,从而弥补其中现存的差距 。

(点击放大图像)

目前Neutron 已经成熟,并且有着非常丰富的插件与驱动生态系统,可以提供网络解决方案和服务(例如,负载平衡即服务LBaaS、虚拟私有网络即服务VPNaaS,以及防火墙即服务FWaaS),而相比较而言目前的容器网络还不够完善,Kuryr 的使命就是向Docker 传递Neutron 网络和服务,在容器网络和容器与OpenStack 混合的环境中,能够零成本地使用现有Neutron 网络的一切成果。

Kuryr 还有一个重要的任务是解决虚拟环境之上容器网络的性能问题。我们知道,通用的虚拟机 Neutron 网络是使用 Overlay 技术实现的,容器网络一般也会使用 Flannel 等 Overlay 技术,如果容器环境建立在虚拟机之上 (VM nested containers ),那么容器网络就是 Overlay over Overlay 的架构。两层封包解包对网络传输性能的影响非常大,Kuryr 尝试将这种低效的架构进行扁平化,从而提高网络性能。而对于容器来说,并不用关心是建立在虚拟机 (VM nested containers ) 之上, 还是建立在物理主机 (Bare Metal) 之上。这一特性非常适用于 Magnum 进行容器部署,所以未来 Magnum 也计划把 Kuryr 作为 COE 网络的默认选项。

Murano

容器的出现解决了服务与应用的快速部署与弹性扩展的问题,使得这些年不温不火的 PaaS 平台重新得到了关注。如何将第三方开发者的服务与应用方便地发布出来是 PaaS 平台的一个重要功能点,即 PaaS 平台的应用目录 (Application Catalog) 服务。各主流的 PaaS 平台,比如 OpenShift、CloudFundry、GAE 都有相应的方案,但发布接口与应用打包方式并不统一。OpenStack 的 Murano 致力于通过标准化以及一套新的编程语言(YAQL)来解决这一问题。

Murano 是 OpenStack 的应用目录服务,在 Murano 的世界里,一切皆服务 (Anything as a Service),不管是虚拟机镜像、容器镜像、服务应用模板,甚至是一个编排模板 (HOT),都可以在 Murano 中发布。第三方开发者与管理员可以通过标准的接口、标准的应用打包规范 、标准的应用发布流程,标准的生命周期管理流程,来实现服务与应用程序的一键发布、快速部署和管理,降低服务与应用程序对底层基础架构的依赖。

在 Liberty 版本中,开发者的控制得到加强,支持应用版本升级。 应用程序的使用者可以自由选择应用将要被部署的网络。另外,在基础设施控制方面,Murano 能够使用 Glance Artifact Repository 作为它的存储后端,通过 Glance Artifact API 即可读取或存储服务镜像。

(点击放大图像)

Solum

Solum 项目实现了 PaaS 平台中的持续集成 / 持续交付的功能,使云服务能更简单的应用和集成到用户的应用开发过程中。基于 OpenStack 架构 的 DRY(“不重复自己”)原则,Solum 高度利用现有的 OpenStack 已经存在的组件,例如 Heat、Nova、Glance、Keystone、Neutron 等,还可以与 Murano 配合建立应用目录索引为其他应用提供服务。

不管源代码的语言是什么,通过 Solum 提供的模块化 Language Pack 机制,可以做到跨开发者、跨测试、跨生产环境地将源代码打包到一个 Docker 镜像,并发布到一个 OpenStack 云上。Solum 集成多个开发环境,如 Eclipse、IntelliJ、Komodo 等,从应用开发的源头上简化了整个应用程序的持续集成过程。

(点击放大图像)

Manila

Docker 对于容器的网络与存储都给出了合理的解决方案,这在单个容器上也的确是有效的,但是把容器放到集群中运行时,情况就变得复杂了。在集群环境中,为了实现容器的高可用,相同的容器会被启动多份,并且集群调度器还会在某个时机根据某种策略将容器迁移到另外一个 worker 节点,这就要求容器的存储需要提供多读多写以及随容器迁移的特性,坦白来说,目前还没有同时解决这两个问题的完美、高效的原生容器存储方案,NFS 等传统的共享文件系统是现阶段相对可以接受的方案之一。

Manila 作为共享文件系统服务,自然提供多读多写与容器位置无关的特性,满足容器集群的基本要求。除此之外,在 Liberty 版本中 Manila 还提供很多扩展以提高共享文件系统的可用性。

Manila 超额申请的功能能够自动精简配置存储,让 Manila 管理后台超额申请的程度。用户可超额申请 2 倍、10 倍,或是他们认为可能需要的倍数。
因为共享存储用户不会从一开始就精确知道自己需要多少空间,Manila 允许用户对共享存储大小进行扩展 / 收缩。

自动化增加共享可以让用户能够监控如创建共享,或是批准对共享的访问等操作,触发脚本自动增加共享。

共享迁移允许共享从一个存储控制器迁移至另一个上面,从而用户能够方便地对共享存储的内容进行维护而不用停止服务。

在下一个版本 Mitaka 中,Manila 计划对大规模升级和高可用性的进一步支持、共享复制等。共享复制将允许 Manila 配置共享,以便将其复制到具有不同可用性的区域中。一旦数据中心遭遇停电、火灾或水灾,用户可以切换至数据的副本上,从而维持应用的运行。共享复制支持各种执行情况,例如,双主动复制,或是主动 - 被动复制,同步或异步都将被支持。

总结

OpenStack 与容器的深度整合,能让 IaaS 层的资源使用更加充分,管理粒度细化,资源利用率提高,因为容器相对虚拟机来说更轻量,对资源的利用率会更加充分,同时容器也可以充分利用现有 OpenStack 中众多的成熟项目,省去了重新发明轮子的无用功。

目前 Liberty 版本对于容器的支持与整合只是一个开端,未来 OpenStack 对于容器的支持将会是持续的。OpenStack 的容器白皮书中所描述的用户所期待的容器和容器管理细节,都将在 Mitaka 以及后续版本中逐步实现。

作者介绍

郑阳是创业团队轻元科技的技术负责人。轻元科技基于 OpenStack Liberty 版本,集成了 Kubernetes 容器编排系统,开发了一个容器和虚拟机统一管理、组合服务的云平台,并部署实施了多个私有云客户。加入轻元科技之前,郑阳是 NEC 中国的高级技术经理,在 SDN、OpenStack 领域有着多年的研发和部署经验。


感谢陈兴璐对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-03-24 17:263113

评论

发布
暂无评论
发现更多内容

AI简报:图像超分模型 EDSR+RDN

AIWeker

人工智能 5月月更 超分 AI简报

重磅官宣!摩尔线程携手7家核心分销商伙伴共拓GPU市场机遇

科技热闻

改善CRM系统策略的方法

低代码小观

CRM 客户关系管理 企业管理系统 CRM系统 客户关系管理系统

Neo 生态技术月报 | 助力开发者玩转智能合约

TinTinLand

区块链

云数赋能+数字办公 助力政企数字化

浪潮云

Hoo网格策略 | 一「网」在手 告别「追涨杀跌」

区块链前沿News

虎符 Hoo 网格交易

用更云原生的方式做诊断|大规模 K8s 集群诊断利器深度解析

尔达Erda

程序员 运维 云原生 k8s 工具

fastposter v2.8.1 发布 电商海报生成器

物有本末

Python Pillow fastposter fast-poster

时间堆原理详解及C++11的实现

C++后台开发

后端开发 Linux服务器开发 C++11 C++后台开发 时间堆

DeFi挖矿智能合约Dapp系统开发搭建

薇電13242772558

智能合约

墨天轮访谈 | 京东云曲艺伟:京东零售核心业务背后的数据库实践

墨天轮

数据库 京东云 国产数据库

FLASK项目动态更新配置的方法

西北望高楼

Python flask

Squids DBMotion数据库迁移服务上线|助力云端数据畅游无阻!

沃趣科技

设计模式关系图(全网首发)之行为模式

设计模式

移动端异构运算技术-GPU OpenCL 编程(基础篇)

百度Geek说

后端

【FinClip 黑客马拉松优秀参赛项目@灰鲸疫情地图】疫情之下,安全出行的一站式解决方案

FinClip

finclip FinClip Hackthon 疫情地图

直播回顾 | 后疫情时代,食品行业破局秘籍get一下!

旺链科技

区块链 溯源 产业区块链

性能提升 57% ,SMC-R 透明加速 TCP 实战解析 | 龙蜥技术

OpenAnolis小助手

互联网 网络协议 高性能 TCP/IP 龙蜥技术

超潜力公链DFINITY——DeFi 开发者最佳进入时期

TinTinLand

区块链

AIRIOT物联网低代码平台如何配置欧姆龙omron驱动?

AIRIOT

低代码 物联网 驱动配置

当开放服务网格 OSM 遇到 Pipy

Flomesh

Service Mesh 服务网格 SMI OSM

首届 FinClip Hackathon 圆满落幕,亚马逊云科技|云服务平台助力获奖团队高速成长

FinClip

亚马逊 finclip FinClip Hackthon

云计算和运维工程师冲突吗?运维岗需要云计算知识吗?

行云管家

云计算 运维 IT运维 云运维

深入微服务-服务注册与发现 SpringCloud Eureka之基础

janyxe

微服务 云原生 SpringCloud Eureka 服务注册与发现

《方博碳讨室》:四问欧洲绿色能源转型

Geek_2d6073

当我们谈论服务质量的时候,我们在谈什么?

VoltDB

5G QoS 电信运营商

谢孟军:中国 Go 语言领军人的创业第五年

腾源会

开源 Go 语言 腾源会 WeOpen Talk

前端路由工作原理与使用

CRMEB

堡垒机属于什么设备?是网络设备吗?

行云管家

网络安全 服务器 堡垒机 网络设备

茶饮市场当前情况如何?走入下半场的现制茶战局,又将去向何方?

易观分析

茶饮

【直播回顾】如何成为一名优秀的OpenHamrony贡献者?

OpenHarmony开发者

OpenHarmony 贡献代码

OpenStack Liberty版本对容器支持的详解_语言 & 开发_郑阳_InfoQ精选文章