Kubernetes 还是 DC/OS?实现云原生的路上,选型只是开始!

作者 | 甜梨

根据CNCF发布2019年年度调查报告显示,容器在实际生产环境中的使用率逐年增加,2016年和2018年的容器使用率分别是23%和73%,到了2019年,这一比例上升到了84%。除了使用率,容器的部署规模也在增加,在调查中,58%的受访者表示其容器部署数量在250个以上。

当容器数量达到一定规模时,就需要容器编排平台了。最开始,业内能够称得上容器编排平台的就只有Kubernetes,Swarm 只能算是一个管理平台,同时还需要Compose 和 Docker Machine等工具的配合,Mesos虽然作为资源调度平台能够管理容器,但还需要编排工具和组件服务的配合。

不过,Kubernetes “独步天下”的局面没有持续很久,在容器编排平台领域就出现了一个竞争者——DC/OS。DC/OS 是 D2iQ公司(原名:Mesosphere)牵头开源的一个项目,其核心是基于 Mesos 实现的,可以集中基础设施资源,并实现跨多个分布式应用来共享资源。

选型指南:DC/OS 还是 Kubernetes ?

“尺有所短寸有所长”,在企业实际生产环境中,Kubernetes和DC/OS应该如何选型呢?一般来说,技术选型要分多种情况,下面我们就从集群规模、工作负载和复杂度三个方面来看看选型结果。

大集群选DC/OS,小集群选Kubernetes

我们把集群规模可以分为两个部分来谈论,分别是集群数量和单个集群规模。

集群数量

这里的集群数量指的是集群中虚拟机或实体机的数量,包括开发、测试、生产以及其它业务。一般我们是以500个集群为界限的,如果超过500,就可以认为是大集群,应该选择DC/OS,如果少于500,那么就认为是中小集群,更适合选择Kubernetes。

单个集群规模

顾名思义,单个集群规模指的是在单个集群中的节点数量。一般来说,如果单集群节点为8-10个,建议使用Kubernetes,而单集群节点超过100,则建议使用DC/OS。

多定制使用DC/OS,少定制使用Kubernetes

如果从工作负载的角度来看,DC/OS和Kubernetes应该怎么选呢?业界比较普遍的选型方法是,如果是千节点集群且定制较少使用Kubernetes,而如果是万节点集群且定制较多,更适合使用DC/OS。

DC/OS的内核是Mesos,Mesos的优势在于双层调度机制,第一层调度先将整个Node分配给Framework,之后再进行二次调度。如果有多个Framework,还可以进行并行调度。

Kubernetes数据结构的设计层次比较细,更符合微服务的设计思想。例如从容器->Pods->Deployment,每个运行的容器都可能被封装为这么多的层次,且每一层都可以拆分组合,并具备自己的作用。

至于在定制方面的适用场景,我们用一个例子来类比,就像我们常见的搭积木,Mesos是零散的积木,需要自己组装来实现业务模型,而Kubernetes就是组装好的积木,直接拿来用就好了。

除此之外,应用状态也是一个需要考虑的因素。通常,应用的状态分为有状态和无状态两部分,两者的关键区别在于状态信息是由请求方还是响应方保存,如果是请求方保存就是无状态,反之亦然。

无状态应用无需关心响应方是谁,也无需同步各个响应方之间的信息,甚至被删除也不会影响其它。而有状态应用需要及时同步数据,不能丢失数据,消耗内存资源保存数据等,因此更需要谨慎对待。相比于Kubernetes,DC/OS捆绑了很多组件,且是分布式部署,因此能够支持更多的有状态服务,即使是复杂的分布式系统也可以在几分钟内部署完成。

复杂度:多租户/多部门协作选DC/OS,反之选Kubernetes

按照惯例,我们先给出选型结论:如果企业内部有多个业务部门,多个开发、测试、生产系统,需要协作完成相关工作,复杂度较高,那么建议选择DC/OS,反之,则建议选择Kubernetes。那么问题来了,在企业具体实践中,复杂度都表现在什么地方呢?

存储资源的复杂度,当企业内的数据中心或机房超过一个时,那么就需要关心如何降低运维的难度,如何按需对业务系统提供即时支持;

多需求的复杂度,当企业存在多部门、多业务,且需求不同的时候,那么就要关心如何满足平台提供方与资源提供方的定制化需求;

管理流程和人员的复杂性,如何做到集中和统一管理,减少差异化带来的额外成本。

......

选型结束,才是开始

选型结束,就万事大吉了吗?不,现在才是开始!即使选择了合适的平台或工具,在实际应用中也难免会踩坑。

我们总结了企业在使用开源解决方案时,通常会遇到的坑:

版权升级常出故障;

运维复杂性;

公有云托管存在弊端;

缺乏成熟度和互操作性;

无法为任务关键型应用提供可靠支持;

......

如何“避坑”呢?最简单直接的方法就是采用企业级解决方案。相比于开源解决方案,企业级方案更适合大多数企业使用,因为它会针对企业场景进行测试和验证,能够提供质量有保证的版本,同时也会支持和维护旧的版本。同时,企业级解决方案背后的厂商还会提供相应的服务级别协议(SLA),企业的关键任务型应用系统可在某个时间段内获得支持。更重要的是,大部分企业级解决方案是预编译的,即开即用。

毫无疑问,Kubernetes和DC/OS开源解决方案在使用时也会遇到某些问题,想要拥有更好的使用体验,那就要采用企业级解决方案。而D2iQ 恰好同时提供Kubernetes和DC/OS的企业级解决方案——Ksphere和DC/OS企业版。

D2iQ原名为Mesosphere,是一家2013年成立于美国的企业级云平台提供商。2014年,D2iQ获得了1050万美元的A轮融资之后,成立了德国分公司,2015年发布了众所周知的DC/OS,2017年正式进军中国,成立北京分公司——北京美索斯菲尔科技有限公司,2018年,完成D轮融资1.25亿美元,2019 年,将公司名称从 Mesosphere 更为D2iQ,并在同年发布 KUDO 和 Konvoy。

D2iQ(Day-2-IQ)是什么意思呢?Day 2是一个几年前就已经被提出的 DevOps概念,指的是实现初始部署并投入生产环境后,应用程序开发生命周期的持续迭代,以及基础设施和应用的健康监控和运维阶段。在这一阶段,企业会面临升级、安全和维护等等诸多问题,IQ 则代表了更加先进、智能化的解决思路和能力,例如为企业提供自动化运维服务、产品智能化等等。D2iQ表明这个公司不再只是支持Mesos或Kubernetes技术,而是更聚焦于如何帮助企业使用开源工具,简化复杂和耗时的工作。

Ksphere:针对Kubernetes的云原生解决方案

Ksphere= Kubernetes+Kommander(K8s联邦式多集群管理)+全栈云原生生产运维组件+KUDO云原生组件仓库

相比于单纯安装Kubernetes,运行Kubernetes平台和部署云原生应用要复杂得多,仅仅是部署可用的Kubernetes集群,就需要许多核心组件作为补充。而Ksphere解决方案提供了必需的企业级能力,主要由五大部分组成:

Konvoy:是专为初次使用Kubernetes的企业设计的,可以在跨本地、云和边缘环境中将容器和应用程序自动化;

Kommander:Kubernetes联邦式多集群管理。主要针对同时采用Konvoy和其它Kubernetes服务造成的集群扩张现象,提供多集群单一控制面板,具备集中化安全性和监控功能,支持混合云/多云/边缘云/本地部署的任意Kubernetes发行版;

KUDO:随着Kubernetes应用的增多,驱动应用程序的数据服务也在不断扩张。而KUDO可以简化Data Service Operator的构建,更有效利用有状态数据服务;

Dispatch:Kubernetes原生的GitOps CI/CD平台,可用于快速构建和部署云原生微服务应用程序;

MKE引擎:基于DC/OS,提供单一的控制平面,可管理在同一操作系统上运行的多个集群和高密度多Kubernetes。

值得注意的是,Ksphere的所有GA产品都通过大规模混合工作负载测试,证实了关键服务互操作性,并且针对企业生产运维阶段的不同需求,也有不同的解决方案。

DC/OS 企业级解决方案

DC/OS=Mesos+Marathon+云原生组件

DC/OS是专为大规模生产部署设计的,可满足企业大规模集群需求,并可在多云/混合云和边缘计算基础设施上运行和管理容器和数据服务。目前最新的版本是DC/OS 2.0,支持云原生应用程序、批处理作业、主流J2EE应用程序、主流Windows应用程序、D2iQ数据科学引擎(DSE)和分布式数据服务。

在企业实际生产环境中,DC/OS企业级解决方案可以提供多方面的便利条件:

部署灵活:一个接口可跨多个云、数据中心和边缘计算环境;

工作量少:提供“即服务”的部署方式,可减少安装、扩展、修补和升级Kubernetes、Spark和Kafka等复杂服务的时间和工作量;

增强互操作性:提供多个服务互操作性测试和支持;

保证分布式工作负载安全:减少对安全威胁的暴露,简化策略执行,保证合规性;

多租户:跨多个团队使用统一基础设施,提高资源利用率,控制跨资源和工作负载的访问。

躬行践履,DC/OS与Ksphere的实践之路

“纸上得来终觉浅,绝知此事要躬行。”

选得好,还要用得好,如何才能用好Ksphere和DC/OS企业版呢?我们来看看中国联通和游戏公司是怎么做的?

支撑数千节点,8万在线实例,中国联通的DC/OS实践之路

电信核心业务运营支撑系统(cBSS)是中国联通用于支持前台销售、客户服务及内部支撑全流程的业务管理系统。自2014年开始,cBSS支持的用户数量一直在快速增长,2019年已经达到了2.5亿多,用户量激增促使系统不得不进行升级改造。

2015年,中国联通开始针对cBSS系统开始做去IOE、减负分流、x86化改造等相关工作,并取得了一些成果。改造之后,cBSS 系统中共有上千台x86的多套子系统集群,这些集群彼此独立,并采用了人工运维的方式,因此在多个方面遇到了挑战,例如资源利用率低、人工部署运维方式易出错,各子系统环境不一致导致人员重复分配,存在大量重复工作等。

2016年,中国联通开始对cBSS做容器化改造,整体的技术选型是以Mesos、Marathon为核心实现容器资源的分布式调度与协调,以Haproxy、Confd、Etcd为核心实现服务注册和业务的引流,以DC/OS为基础实现数据中心资源实时调度与管理。

据了解,cBSS系统总共完成了7大类55种计费应用的容器化改造,容器进程峰值达8.5万,日均支撑100亿条话单数据处理。

2017年,中国联通将cBSS实践在集团内部进行了推广,落地了多租户容器化调度管理平台——“天宫1.0”,该平台是在DC/OS开源版基础上定制开发的,其特性包括:实现跨地域、高效协作、即时申请、即时开发、持续集成、灰度发布规范治理。

2018年,中国联通发布了功能更为强大的升级版本——“天宫2.0”平台。与天宫 1.0相比,该版本选择了在DC/OS企业版上运行Kubernetes,在现有平台基础上,增加了Kubernetes集群,实现了Kubernetes+DC/OS双引擎架构。

2019年,中国联通推出了“天宫 3.0”平台,共支撑总部+21个分子公司+政企客户的93个应用,资源利用率提升60%,运维效率提升50%。据了解,天宫 3.0的工作负载统一调度由Mesos两层调度机制实现,平台架构以包括D2iQ的Mesos、Marathon、DC/OS等开源软件为基础进行升级改造,支持Intel和ARM CPU双核体系架构,可独立或混合部署不同架构服务器;采用混动双擎——Kubernetes和DC/OS架构,实现应用无缝迁移,组件拿来即用。

目前,天宫平台在北京和西咸两地设有数据中心,共有数千节点,不仅支撑了覆盖全国32个省业务的cBSS系统,而且也支撑了营业、AI新客服、店奖等新上线的业务系统,在线运行应用实例数达到了8万。

1亿会员、500+个微服务子系统,游戏公司的Ksphere实践之路

为了适应市场需求变化和技术革新,某游戏娱乐公司决定通过技术来实现全国集团中心的整体统一,并为将来业务系统预留扩展能力。

该游戏公司的Ksphere实践总共分为两个阶段:

第一阶段:500+个微服务子系统的CI/CD能力建设

游戏公司在第一阶段的系统建设,涉及了超过500个微服务子系统的构建与集成,其中支持的渠道终端设备超过了30万个,会员账户超过1亿,授权管理用户2.3万(管理人员3千人,工作人员2万人)。并且,系统数据保存要求在线实时可查的全量数据保存6个月,历史数据由存储设备保存5年,而关键数据永久保存。

由于支持的微服务子系统数量较多,CI/CD能力就成为了系统的瓶颈。因此,该公司想要重新建设一套CI/CD方案,并希望这套方案能够满足以下需求:

方案必须完全基于CNCF开源社区,避免厂商技术锁定;

方案需要保证 Kubernetes 云原生,能够充分利用Kubernetes的资源管理与调度能力,提高集群的资源利用率;

支持多租户场景,在微服架构下,能够满足各产品团队对于持续集成/持续发布的自服务能力;

支持单点登录集成(SSO)与基于RBAC的用户身份认证与授权。

基于这些选型需求,游戏公司选择了D2iQ提供的Dispatch解决方案,在原有的CI流程基础上,优化了在Kubernetes云原生环境下的CI流程与CD流程。据了解,优化之后,原本2个月一次的产品生产环境发布,已经缩短到了2周,且测试环境已经实现了每天一次定时发布。

优化之后的CI和CD流程

第二阶段:数据统一管控平台建设

第一阶段完成之后,该游戏公司有了进一步优化的目标,想要实现各个业务线之间的充分信息共享,因此,决定开发数据统一管控平台。该平台的主要目标是实现信息资源的整合,提高技术响应的速度,实现信息共享,实现大数据分析和提升数据质量。

该游戏公司整个应用系统的数据可以根据需求分为三大类:

大数据聚合类:负责业务交易日志,性能数据聚合等;

实时交易类数据:需提供较高的读写性能,与数据一致性要求;

业务管理类数据:主要负责存储账户,权限,配制等信息。

针对这三类数据,D2iQ的KUDO有状态数据服务框架及其开源数据服务提供了相应的支撑:

针对大数据聚合类数据,KUDO提供了不同的数据处理方案,例如对于隔夜Batch数据,KUDO项目提供Cassandra、Spark满足客户业务交易日志的分析、聚合与存储;对于实时的性能数据流,KUDO项目提供Kafka、Kafka Connect、Spark Streaming来支撑客户性能数据的聚合处理;

针对实时交易类数据,基于KUDO框架的MySQL容器化高可用解决方案提供了容器化的数据选型思路;

针对业务管理类数据,KUDO提供了高可用的HDFS集群,满足客户的分布式存储需求。

独木难成林,生态建设必不可少

根据451 Research的预测,截至2022年,应用容器技术的市场规模预计将达到43亿美元,是2019年的两倍。这一数据不仅表示容器市场的前景广阔,同时也说明了这一领域还有很多空白。想要推动容器技术的向前发展,单靠一家公司是不可行的,必须依靠集体和生态的力量。

独木难成林,生态建设还需要每个公司和个体的努力。以D2iQ为例,它是Core Kubernetes早期的三大贡献者之一,目前在Kubernetes项目的代码提交行数在全球企业中排名前十。在社区中,不仅创建了容器存储接口标准(CSI),同时还支持多个开源项目,例如Helm项目、Kubernetes、Kubebuilder、SIG API Machinery、Controller Runtime和Cluster API。

同时,D2iQ自身的解决方案也会与整个生态系统中的其它技术做整合,用户可以自由选择关键的技术和组件。

据了解,目前已经整合的技术和组件包括存储平台Portworx、Hedvig、OpenEBS和Pure Service Orchestrator,网络平台Argo Tunnel、Calico、Traefik,安全平台NG-WAF、Aqua、Open Policy Agent,数据库Couchbase、MongoDB、Cassandra、InfluxDB、ArangoDB,应用类Lightbend和Gitlab,数据流/消息Kafka和Flink。

极客网企业会员

免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。

2020-04-10
Kubernetes 还是 DC/OS?实现云原生的路上,选型只是开始!
作者 | 甜梨根据CNCF发布2019年年度调查报告显示,容器在实际生产环境中的使用率逐年增加,2016年和2018年的容器使用率分别是23%和73%,到了20

长按扫码 阅读全文