版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://cloud.tencent.com/developer/article/1434996
目前行业里针对容器相关的开源技术标准化组织主要有两个:OCI和CNCF。其中OCI由Docker公司倡议发起,旨在定义容器运行引擎和容器应用镜像的相关技术规范;而CNCF由Google发起,目标是推动以容器为基础的云原生应用架构模式以及相关的各项技术,其中 Google 已经将 Google 自身的“DCOS”系统Kubernetes捐献给CNCF,Google每年仍会投入大量工程师全职开发Kubernetes,但Kubernetes已经完全属于CNCF基金会,因此可以把Kubernetes和CNCF基金会的关系类比为OpenStack和OpenStack基金会的关系。
以Docker为代表的容器对应用提供了良好的兼容性,是云计算未来发展的关键技术之一。从2013年Docker推出以来,容器技术经历了四个阶段:第一个阶段是2013年,主要还是应用在开发工具方面;第二个阶段是2014年,开发者开始尝试在生产环境中支持容器,提供服务器运行时环境,标志性事件是 2014 年6月Docker1.0版本的发布以及年底推出的Docker Machine、Swarm、Compose 三剑客;第三阶段是2015年,容器真正部署进入了生产环境中,并出现了各种容器平台和管理工具;第四阶段就是今年,开始实现容器的标准化和微服务化,并且开始全面发力进入企业级市场。图B.1是Docker截止今年上半年的发展历程。 此外2016年下半年Docker最大的热点就是Docker1.12版本的发布,该版本引入了内置编排机制,Docker1.12通过Docker Swarm命令实现了容器集群,可实现一个大系统的部署。
图B.1 Docker发展历程
Apache Mesos系统作为一个集群资源管理调度系统,可以用来管理Docker 集群。同其他大部分分布式系统一样,Mesos 为了简化设计,也是采用了 Master/Slave 结构;为了解决 Master 单点故障,将 Master 做得尽可能地轻量级,其上面所有的元数据可以通过各个 Slave 重新注册而进行重构,故很容易通过 Zookeeper 解决该单点故障问题。 Mesos 可以轻松支持 Hadoop,MPI,Spark 等计算框架,并支持在同一集群下的资源混用;同时,Mesos 和 Docker 可以做到无缝结合,通过 Marathon 可提交服务性应用,通过 Chronos 可提交批处理性应用。
Kubernetes是Google开源的容器集群管理系统。它构建在Docker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能,本质上可看作是基于容器技术的mini-PaaS平台。 其优点包括:应用轻量级;支持公有云、私有云、混合云部署;功能模块化,各功能模块可插拔、可挂接、可组合;支持容器自动恢复、自动重启、自动复制。
Swarm 项目是 Docker 公司发布的容器管理工具,用来提供容器集群服务,目的是更好的帮助用户管理多个Docker Engine,方便用户使用,像使用Docker Engine一样使用容器集群服务。 Swarm是一套较为简单的工具,用以管理Docker集群,使得Docker集群对外以 Docker API 接口呈现,这样带来的好处是,如果现有系统使用 Docker Engine,则可以平滑将Docker Engine切到Swarm上,无需改动现有系统。Swarm 对用户来说,之前使用 Docker 的经验可以继承过来。同时 Swarm 本身专注于Docker集群管理,非常轻量,占用资源也非常少。
Hyper是一家中国国内的开源软件创业企业。Hyper的主要项目包括:undefined HyperContainer:Linux上的虚拟化容器,结合了虚拟化和容器两者的优势,其特点可以概括为“Fast as Container, Secure as VM”; runV:OCI认可的虚拟化容器实现,受到了行业的广泛支持,其中包括为,Google,IBM,Intel,思科等等;undefined Hypernetes:融合了 Kubernetes 和 OpenStack 的多租户、安全的 Kubernetes版本,可以用来提供公有容器云服务。
Harbor是由VMware中国研发团队负责开发的开源企业级容器Registry项目。Harbor可帮助用户迅速搭建企业级的Registry服务。它提供了简单易用的管理图形界面,基于角色的访问控制(Role Based Access Control)、镜像远程复制(同步)、AD/LDAP集成,以及审计日志等企业用户需求的功能,同时还原生支持中文,深受中国用户的喜爱。undefined 该项目推出仅仅5多个月,在GitHub 获得了较多的点赞和下载数,社区积 极参与开发,有2/3的代码贡献着来自全球各地。Harbor采用商业友好的Apache 2许可协议,许多厂商和用户已经把Harbor开源项目集成到了自己的解决方案中,大大推动了容器应用在国内的普及。 项目地址:https://github.com/vmware/harbor
Open DC/OS(https://dcos.io)是Mesosphere公司发布的商业DC/OS(DataCenter Operating System)的开源版本,使用Mesos作为其内核。DC/OS 以现代操作系统为设计原型,旨在为数据中心提供一个开箱即用,以及和现代操作系统一样方便易用的接口:CLI、GUI、软件包管理工具、服务发现等。 Open DC/OS的架构也和现代操作系统极为相似。以Mesos为内核,拥有一个Marathon作为meta-framework,其作用相当于现代操作系统中的init或systemd,包含容器编排、服务发现、网络、存储、大数据等一系列开源或商业的解决方案,并可通过一键部署的方式安装这些服务。 Open DC/OS合作伙伴包括:HP、Microsoft、Oracle、IBM、EMC等,社区主要的代码贡献者现在主要为Mesosphere、IBM等。
OpenStack 致力于物理资源的编排调度,容器可以可以看作轻量级的计算资源,所以OpenStack欲将容器治于帐下。先有NOVA DOCKER DRIVER的先行者,再有NOVA HEAT 插件,但是这些项目都有缺陷没法实现对容器的完美调度编排,乃至最新Newton上的Magnum项目,支持Kubernets、Mesos、Docker Swarm集群,OpenStack正在一步步接近对容器编排调度的目标。 反过来,容器致力于云计算时代新式应用的打包封装和运行管理,OpenStack 本身就是一个非常典型的云应用,天生微服务化和组件化,先后有多家社区和公司宣布将对OpenStack进行容器化发布,预计不久的将来,容器仓库中就将出现各版本的OpenStack镜像。这对OpenStack本身的发展也是一个有利的助推器,将享受容器化带来的种种便利,如一键实现部署更新,集群高可用性,等等。容器和OpenStack将形成你中有我,我中有你,齐头并进的良性发展局面。
金融客户业务系统数量众多,环境管理问题日益突出。Docker作为开源容 器虚拟化技术,具有轻量级、标准化的特点,发展势头迅猛。由Docker发展到容器云,某金融客户的目标是建设有效的环境治理机制,规范环境的使用过程。同时,针对各业务系统运维需求,从交付、部署到监控等各个方面实现标准化运维,做到自动化运维。
某国有大型能源行业IT基础架构部署方式上采取按项目集中式部署。因此软硬件紧密耦合,导致业务部署周期长、资源利用率低。伴随物联网和互联网应用的快速发展,又推出了智能电表、手机买电客户端等互联网特点的应用,并且大力引入大数据服务。而基础架构支撑业务负载变化能力不足,动态扩展和回收能力无法满足业务全天候弹性需求,运维复杂度和成本居高不下的问题凸现。容器改造后的系统提供了PaaS平台技术支撑,在原有容器云产品的基础上与OpenStack进行了深入集成,提供了完整的云环境治理管控平台能力,在一个系统界面下就可以完成所有操作,不仅提高了国网的IT管理运维能力,也提升了国网信息化项目交付的自动化、标准化水平。
- 案例介绍: API项目是央视网的一个重要的应用,作为央视影音项目中的数据提供系统,承载全网对外动态数据,融合来自不同平台、不同类型的数据,以丰富的形式对外提供数据接口支持。支撑着央视网 旗下的央视网门户、央视影音、央视新闻、央视体育等众多业务。 使用容器化平台来运行API业务后,实现了API的快速部署,秒级扩容,极大的方便了大活动场景下的扩容需求。容器化较传统虚拟化颗粒度更小,提高了服务器资源的利用率,降低公司的运营成本。同时容器化平台实现Devops流程,持续集成、持续发布,简化了运维和开发人员的工作流程,减少了业务的交付周期,提高了业务的扩展性。
- 需求分析: 央视网每年都要经历多次重要活动的播出重保工作,例如阅兵、世界杯、奥运会、春晚等。活动期间系统的重要保障:“高安全、高可用、弹性扩容”。我们前期需要对业务进行大规模扩容并且在活动期间可能会遇到的资源问题做出快速响应,所以需要快速的应对这种扩展需求。我们急切需求一种快速的扩容,缩容方式,来应对活动期间的资源需求及活动后的资源回收。
- 解决方案:
1. API逻辑架构和规模 逻辑构架是五层结构,分为前端、接口层缓存、接口、数据库缓存、数据库,如图D.1。
图D.1 API逻辑架构
1. 容器化目标 • 对业务进行解耦,将业务拆分成独立的模块。undefined • 秒级横向扩容能力,快速响应活动期间的突发性流量。undefined • 屏蔽底层异构,实现混合云无缝部署。undefined • 无手工操作,从代码到线上环境发布,上线时间大大缩短。undefined • 提供一致性的测试和开发环境。undefined • 灰度发布、A/B测试降低快速发布带来的风险。
2. 容器化管理undefined (1) 平台管理undefined 利用mesos资源管理框架及marathon调度框架打造出高可用的容器化管
理平台,实现容器的秒级扩容,快速部署。undefined (2) 日志管理undefined 利用ELK日志管理平台将容器日志统一的存储与分析,构建出可视化的日
志分析平台。undefined (3) 服务注册undefined 利用Bamboo和zookeeper构建服务注册中心,实现节点和容器的自动发现及注册,配置的自动加载,无需人工干预。
D.2容器云架构对比图
图D.3 容器管理平台功能架构图
容器管理平台核心基于Kubernetes构建,外围模块采取开源+自研开发,主要包括以下子系统:
应用、容器管理:基Kubernetes增强,主要提供集群管理,资源调度,应用管理,应用编排,容器扩缩容,灰度发布,应用监控等核心功能;
镜像管理:基于开源Docker Registry构建,支持多仓库、私有/公有仓库部署,提供镜像上传、存储、下载,分发及版本管理等功能;
运维与监控管理:基于OpenStack ceilometer等增强开发;
日志管理:主要面向主机、应用、容器及各种系统服务的日志统一收集、存储和检索系统,基于ELK方案实现;
租户/用户、权限管理:基于OpenStack KeyStone增强开发,与其他子系统包括底层IaaS平台集成。
计算资源、存储、网络管理:基于Kubernetes on Mesos方案实现,
小规模系统部署直接使用Kubernetes,采用OpenStack cinder来动态管理容器的持久化存储;网络采用Calico实现网络隔离、IP管理等功能。
通过容器技术,该项目在以下方面取得了显著的效果:
● 交付质量大幅提高: 从代码开发、测试到上线平滑过渡, 基本消除了因为环境的不统一而造成的事故。
● 快速部署测试和生产环境:原来部署一个新环境要花 2- 5 个小时,现在基本降低为0,每个团队都可以快速按照自己的需求部署属于自己团队的开发、测试环境。
● 运维效率大幅提高:服务自动扩容,无需做流量预案,无需人工盯防,公有云成本降低约三分之一,极大的提高了扩容的效率。
通过对客户需求的分析调研,我们提出了完整的基于阿里云容器服务的微服务架构来解决应用系统紧耦合的问题,提出了基于阿里云容器服务的DevOps方案来解决持续集成和持续交付的问题。其中,基于阿里云容器服务的微服务架构如图D.4所示:undefined
图D.4 基于容器服务的微服务架构
为了帮助客户提升开发效率,优化开发流程,提供了基于阿里云容器服务的DevOps 方案,通过内置的容器化 Jenkins 模版,为客户提供了从开发、构建到运维的持续集成持续交付的能力支撑。 总的来说,根据客户应用系统的实际状况,我们总结了多种模式,通过基础镜像的构建、利用DevOps流程自动构建应用镜像,应用的微服务化拆分等,完成了客户已有应用系统服务化改造,根据现存服务和新开发服务的不同业务属性提供了相应的服务间依赖定义和路由方案。容器服务提供了和阿里云平台产品的深度集成和优化,充分利用的阿里云平台丰富强大的能力,为客户提供了完整的端到端的和开发语言无关的微服务解决方案。