墨芷汀澜
新浪微博
微信
当前位置:墨芷汀澜网 » 分析

TCOS -- 业界首个支持生产级大数据业务的容器操作系统


云与大数据的融合已是公认趋势。早期一些路线尝试采用传统虚拟化技术来落地大数据业务,但是遇到比较大的技术限制。首先因为大数据运行的基本上是资源密集型服务,虚拟化会带来较大的性能损失,其次虚拟化超卖的性能问题会导致分布式系统不稳定。容器技术的出现与成熟,才为大数据与云的结合带来比较理想的解决方案。


为了分羹市场,云计算和大数据公司纷纷参与该领域的竞争,云计算巨头如AWS和Google Cloud着力推出云上数据分析产品,创业公司Quoble专注提供在线数据分析服务,Cloudera和Hortonworks合并后也将架构容器化视为重要的战略方向之一,并估计在1年左右完成与Docker的整合。


与此同时,星环早在2017年5月就实现了基于容器的云与大数据的整合,为容器化大数据服务与AI应用定制开发,自研了容器网络、本地存储、调度策略,具备GPU调度能力,创造了业界首个支持生产级大数据业务的容器操作平台Transwarp Container Operating System。


Transwarp Container Operating System(简称TCOS)是星环为大数据系统量身定做的容器云操作系统,是AI + Big Data + Cloud融合的关键性底层支持,能够真正的支撑大数据服务与AI流畅运行于云平台。

TCOS与Transwarp Data Hub和Transwarp Data Cloud相比一直保持相对低调的状态,但在这两个产品架构中确实扮演着举足轻重的角色,作为底层容器平台为上层提供大数据业务容器化运行,以及应用云端化的关键保障。对于数据处理,TCOS可以充分满足企业对于数据、应用、资源的隔离需求,实现数据服务弹性扩缩容,通过虚拟化提升计算资源利用率,有效减少IT构建成本。对于应用开发,TCOS提供微服务构建能力,支撑敏捷开发以及持续集成,推进DevOps开发模式。TCOS随TDH和TDC的落地部署,在历代版本迭代中对企业各类生产环境的适应能力越发成熟。

近日TCOS 1.9正式发布,对Kubernetes版本兼容升级到1.9.6,对Docker的兼容性升级到17.12。TCOS 1.9从Kubernetes 1.9延续了更强的存储功能,受益于一系列通用的稳定性升级,包括Apps Workload API(Kubernetes 1.9中的关键新增特性之一)可以对无状态长任务和有状态任务提供稳定的工作负载。

除了跟随开源社区的步伐,TCOS 1.9更多的是对容器编排和容器运行的其他方面进行了探索,包括本地/共享存储的负载均衡调度、基于优先级的抢占式调度、优化容器调度速度、GPU的调度支持、固定IP等,本文将详细介绍。


存储:更多存储类型,更可靠的数据


扩展存储类型

  • Ceph的支持

新版本正式增加了对存储对象Ceph的支持。Ceph是可自均衡自恢复的分布式存储系统,同时充分利用各个存储节点上的计算能力使数据分布尽量均匀,解决了传统分布式系统中的单点故障问题,规模可以弹性扩张,同时并不会影响到性能。

Ceph作为分布式存储,本身具有比较复杂的架构体系,在Kubernetes集群中部署运维Ceph的难度较高。因此引入Rook存储服务,Rook封装了Ceph,将云存储系统与Kubernetes进行有效结合,使得存储的运行完全自动化,简化存储的操作和维护,具备高可移植性,便于Ceph群集的部署和管理。

用户可以通过FlexVolume自定义存储插件去调用Ceph,只需要定义几个接口调用Volume Driver,免去在主机上安装Ceph的工具包,更方便快捷。

  • NFS的支持

TCOS 1.9支持多种类型的NFS作为后端持久存储,包括:1.基于本地存储的NFS;2.基于CephRBD(块存储)的NFS;3.以及基于CephRGW(对象存储)的NFS,并允许部分传统应用无需改造直接通过本地POSIX接口访问对象存储。

提高本地存储Wapdrive稳定性

新版本对星环云本地存储管理系统Warpdrive 的架构作了改善和优化:增加了Pool Federation支持本地存储,允许多个小盘组合为大的存储。为了解决一个磁盘或分区出错导致整个相关联的存储池不可用的情况,新版本实现新的调度负载均衡策略,保证单个盘损坏不影响整个存储池,提升存储的可用性。Pool Federation的实现将降低因大量磁盘数量而导致增加的磁盘运维难度,相比之前复杂的配置,增强了用户友好度。统一存储池response信息,增加存储池查询效率。

在安全性方面

本地存储挂载点增加Immutable Mountpoint功能,防止磁盘故障数据卷挂载失败问题导致容器数据写到根分区,根分区满溢后系统停止运作,引起不必要的数据丢失。若创建挂载点时设置挂载点为Immutable,当挂载失败时将严禁数据写入。

通过TLS安全传输层协议对Warpdrive增加安全保护,仅允许授信组件访问Warpdrive,加强本地存储安全保护能力,确保本地存储的保密性和数据完整性。

简化运维管理

  • SLA

增加StorageQuota配置支持,可限制存储总容量大小和创建存储卷的数量,能够基于不同存储类型的存储配额设置。

  • 本地/共享存储在线扩容

用户可灵活改变存储空间,通过更新PVC大小,从而对持久化存储在线扩容。

  • 快捷的获取存储信息

在Node信息中暴露本地存储相关内容,方便用户直接通过Kubernetes查看各个节点的存储池使用信息,包括存储类型、总存储大小、已使用大小和已分配大小,同时在实现的过程中可以降低调度过程中频繁的网络IO。

  • 资源超配管理

分开管理Warpdrive临时存储和持久化存储,允许两种资源进行不同策略的超配,更加灵活的控制系统资源调配能力。

网络:全面升级


安全性提升

TCOS由Flannel实现集群节点的网络划分和网络联通,通过规划集群中的所有节点的IP地址使用规则,保证集群的所有容器都具有唯一IP地址,而且不同节点的容器可以同属同一内网,不同节点上的容器能够直接通过内网IP通信。

为了提升安全性,TCOS 1.9引入kube-router插件。kube-router提供负载均衡器、防火墙隔离和容器网络能力,可对接Kubernetes的NetworkPolicy,提升网络安全规则的粒度,相比之前对系统性能影响更低,能够支持以应用为中心灵活构建网络安全规则。

稳定性提升

TCOS 1.9优化了Flannel L2 L3转发规则,在Flannel启动或创建网络时,避免L2/L3 Miss,缓解由于Flannel故障期间引起的网络不通的情况。

随着集群规模增长,IP/MAC地址映射增多,ARP cache空间不断减少,当到达一定阈值时会触发GC,造成信息丢失,影响服务发现。新版本允许Flannel自动设置本地ARP GC阈值,避免出现ARP配置信息丢失的风险。

性能优化

增加Flannel智能路由模式:在同一个二层网络下直接使用主机网络转发,减少不必要的overlay开销;而在需要跨二层网络的情况下使用vxlan进行overlay封包以打通网络,提升网络传输效率。

把kube-proxy代理模式切换到ipvs,避免了iptables引起的性能和扩展性问题。

通过优化Kube-router的规则以及规则下发模式,有效提升了大集群场景下Network Policy的时效性。

功能更全面

  • 网络拓扑查询

对Flannel添加网络拓扑查询接口,提供网络拓扑结构查询服务,并为大数据分布式集群定制网络拓扑查询逻辑,方便感知容器的网络位置,从而实现数据多副本安全和任务调度,深化大数据的容器化运行程度。

  • 使用CoreDNS替代SkyDNS用于服务发现

CoreDNS是相对于SkyDNS更通用的DNS服务器,组件更精简,效率更高,可以对接更多类型后端(包括etcd、Kubernetes等),提供丰富的插件实现多样化的基于DNS的服务,支持写插件从而定制DNS服务。

  • 支持固定IP

即保持容器IP不变,并在CNI集成了自动IP清理的方案,在IP没有被正常释放的情况下自动清除,释放出不必要被占用的IP资源。

  • 网络流量日志

添加了基于conntrack的网络流量日志,允许用户以较低的开销监控业务的网络连接状况,并允许把网络日志放在Elasticsearch,以便用户对网络流量进行分析和调试。

  • TCOS Network Client

新增基于容器的TCOS Network Client,方便用户将集群外网络与TCOS内部网络打通,并转发Kubernetes Service和DNS的请求。

  • 负载均衡对接外部流量

支持基于IPVS的浮动IP方案,方便用户将现有的负载均衡与集群外接入流量进行对接。

调度:合理、高效、智能


更快的调度

新版本从多方面增强调度性能,引入了Scheduler Cache对调度过程的数据和信息进行缓存,减少重复计算的工作量。如tcos-scheduler通过引入eCache,增加pos-antiaffinity的cache,将调度响应速度提升至10-20倍。另外,调度器还基于容量和空闲率实现负载均衡。

StatefulSet并发创建pod,提高了创建效率,支持丰富的更新策略,允许下线指定副本。

etcd升级成效率更高的v3版本,增加集群吞吐。etcd升级成效率更高的v3版本,增加集群吞吐量。同时etcd client优化了连接方面负载均衡的bug,解决了etcd节点挂掉造成的单点故障。

对APIServer的负载进行优化,使得etcd能够运行在普通的机械硬盘上,可以根据集群大小调整各个组件QPS。

更多的功能

  • 基于抢占的调度。TCOS 1.9支持抢占式调度,实现即时抢占式调度和延时抢占式调度两种方式。赋予本地存储更高的优先级,允许本地化存储任务优先抢占其他同优先级任务。

  • 支持Share PVC,即允许不同pod可以对同一个PVC进行访问。并对PVC的访问实现合理的调度,保证访问同一个PVC的pod被调度到同一个节点。

  • 全面支持GPU。包括支持试用节点的全部GPU,支持对需要GPU的pods进行动态调度。

  • 新版本可以自由设置各种系统资源,允许对磁盘、内存和CPU进行超配。

容器运行更稳定


新版本关闭Docker Volume plugin,只允许用户使用Warpdrive提供的临时存储。发生此变化的原因是如果Docker Image声明匿名Volume,默认会在Docker分区下创建一个目录,而该目录默认不受空间大小限制,将对容器服务稳定性构成风险。因此我们在新版本中决定关闭该接口,限制用户只使用Warpdrive提供的临时存储。

用户启动容器时,系统将限制其默认可占用空间大小,防止占用过多Docker分区,影响整个容器平台性能。

修复了由于Docker创建Overlay Layer时写入本地数据失败导致的一致性问题。


友好支撑应用开发


应用上架

云应用的编排兼容了开源的Helm,并在此基础上支持Jsonnet/Ksonnet。引入Helm后,开发者将不再需要了解Kubernetes的Yaml语法并编写应用部署文件,部署应用能够达到像使用apt-get和yum一样简单易用,同时使TCOS平台能支撑运行更多的应用服务,方便应用开发部署。

支持星环自研的应用生命周期管理平台Transwarp App Manager,方便用户构建复杂的应用堆栈,轻松部署解决复杂应用的自动依赖和服务发现问题。

另外,我们优化了渲染引擎,将渲染模板写入内存,减少读盘次数,提升渲染速度,在上层可以感知到应用部署被加快。

TCOS1.9支持自动创建常见的网页应用中间件,提供自动负载均衡,允许用户指定需要创建的domain。

灵活定制触发

支持Instance添加hook,允许其在不同事件前后进行定制化的操作任务;

支持webhook,允许通过webhook进行Api Server的自定义管理,提高了管理模式的灵活性。

安全管控

支持RBAC达到更灵活高效的权限管理模式。

集群监控

支持ServiceMonitor用于收集数据系统服务监控,并且支持在Chart定义alert rule从而对ServiceMonitor的监控信息实现及时反馈告警。


本次升级回顾


星环云平台团队通过半年时间在容器应用编排发明的取得瞩目成果,提升了大数据容器操作系统对上层提供服务的能力。

云存储方面,TCOS 1.9能更灵活的接入各类存储(特别是对Ceph的正式支持),提供更通用的存储接口,可靠性和安全性进一步提升。云网络方面,实现以应用为中心的网络安全控制,性能提升,单集群的机器数量可以扩大到数千节点。云应用方面,开发自主、灵活、多样,运行更流畅,更具智能化的资源调度。此外,从1.9开始,TCOS支持一个Kubernetes管控服务管理多个Kubernetes集群,因此可以在一个云平台上支持多个Region,从而应用于类似工业云的场景。

TCOS 1.9将提升TDH和TDC在企业中部署、实施运维水平,助力企业利用云计算推动实现“数据+应用”的数字化运营。


点击“阅读原文”参与星环科技年终福利活动:

 @所有人 星环科技的2018,想与你一起分享



相关报道