本文讲的是容器集群部署 选好编排工具是关键【IT168 评论】容器技术提供了组件化的环境,可以帮助业务应用在云之间轻松迁移而无需显著的返工。随着容器在企业持续获得发展,厂商将增加新的功能让用户可以创建可扩展的基于容器的环境。然而,大范围控制容器部署也会有一些并发症。容器肯定是跟资源相匹配的。这些挑战会导致集群管理和编排的并发需求。
集群管理工具是一个通过图形界面或者通过命令行来帮助你管理一组集群的软件程序。有了这个工具,你就可以监控集群里的节点,配置services,管理整个集群服务器。集群管理可以从像发送工作到集群的低投入活动,到像负载均衡和可得性的高介入工作。
当前主流的容器集群管理技术,包括了 Docker 官方的 Docker Swarm、Twitter 背书的 Mesos 和 Google 背书的 Kubernetes。
这些可选的编排工具有一些共同的特征,如容器配置、发布和发现、系统监控和故障恢复、声明式系统配置以及有关容器布置和性能的规则和约束定义机制。除此之外,有些工具还提供了处理特定需求的特性。
其中,由于Apache Mesos 只是一个分布式内核,目前的发展方向是数据中心操作系统,它同时支持 Marathon、Kubernetes 和 Swarm 等多种框架,连 Mesosphere 也是 Kubernetes 生态的一员,从编排的角度,讨论 Mesos 意义不大,故而只对比 Docker Swarm 和 Kubernetes。
来自Docker的原生解决方案
Docker Swarm的优点之一在于,它是一种原生解决方案――你可以使用Docker命令,实施Docker网络、插件和卷。Swarm管理器创建几个主节点,并为领导选举创建特定规则。万一首要的主节点出现故障,就可以实施这些管理机制。Swarm调度器拥有诸多过滤器,包括亲和标签和节点标签。过滤器可以将容器与底层节点联系起来,提高资源利用率、提升性能。
Swarm对用户来说,之前使用Docker的经验可以继承过来。非常容易上手,学习成本和二次开发成本都比较低。同时Swarm本身专注于Docker集群管理,非常轻量,占用资源也非常少。简单说,就是插件化机制,Swarm中的各个模块都抽象出了API,可以根据自己一些特点进行定制实现。
与所有的开源项目一样,Swarm项目也成立了自己的社区,参与社区的方法基本上和其他社区一致。当遇到问题时,可以在社区创建issue,然后描述问题,最好能上环境信息以及问题重现的步骤,这样有利于问题的定位。当然也可也直接通过IRC或者邮件直接交流。
经验老道的Kubernetes
另外一个非常重要的编排技术就是Kubernetes,前身是Borg,是Google 内部使用的集群管理工具,迄今已在 Google 生产环境中运行15年,说久经考验并不过分。
Kubernetes的开发者致力于保持它一直处于可访问、轻量级状态,并且易于使用。它可以在很多云环境中使用,包括私有云,公有云,多云端和混合云。Kubernetes可以在fly上进行自我修复,它以自动复制,自动再启动,自动定位为特色。它可以被不断扩展,它的特点是hookable,可插拔和模块化。
Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合,将最终的应用服务交给用户。Kubernetes在模型建立之初就考虑了容器跨机连接的要求,支持多种网络解决方案,同时在Service层次构建集群范围的SDN网络。其目的是将服务发现和负载均衡放置到容器可达的范围,这种透明的方式便利了各个服务间的通信,并为微服务架构的实践提供了平台基础。而在Pod层次上,作为Kubernetes可操作的最小对象,其特征更是对微服务架构的原生支持。
可以说,基于 Borg 成熟的经验打造的 Kubernetes,为容器编排管理提供了完整的开源方案,并且社区活跃,生态完善,积累了大量分布式、服务化系统架构的最佳实践,从目前的支持率上看,Kubernetes也是遥遥领先。
原文发布时间为:2017-05-02
本文作者:张存
本文来自云栖社区合作伙伴IT168,了解相关信息可以关注IT168
原文标题:容器集群部署 选好编排工具是关键