第一时间 | 数人云总架构师解读Mesos1.0.0

2016年7月27号 Apache 社区发布了 Apache Mesos 1.0.0, 这是 Apache Mesos 的一个里程碑事件。相较于前面的版本, 1.0.0首先是改进了与 docker 的集成方式,弃用了 docker daemon;其次,新版本大力推进解决了接口规范化问题,新的 HTTP API 使得开发者能够更容易的开发 Mesos 框架;最后, 为了更好的满足企业用户的多租户,安全,审计等需求,新版本提供了更细粒度的授权验证机制。下面就由数人云总架构师详细谈一下他对新版本重要功能的理解。

HTTP API

1.0.0 通过统一的基于 RPC 的 HTTP API 对以前的两种不同用途的接口--Framework SDK 和 REST API,进行了整合, 这个是最近几个月 Mesos 社区在大力推进了的一个事情。

借助这次重构,社区首先是规范了 Mesos 的接口,为 API 标注了版本信息并且规范了发布流程,从而避免了以前的版本黑盒导致的不兼容问题,减少 breaking news 和客户生产环境的 surprise。

其次,以前的局限于开发语言的 Framework SDK ,功能有限的 REST API 都极大限制了第三方开发者的手脚,为开发基于 Mesos 的框架带了额外的困难,另外客户端和服务器的双向通信也增加了程序的维护成本和局限了程序的部署方式,新版本从软件工程的角度,解耦了上述双向通信问题。

最后,Mesos 也开始支持时间流。上述种种,我们可以看出 Mesos 社区正在以更开放的态度来便利社区开发者,为各种框架提供更好的对接。

一致的容器化技术

Mesos 1.0.0 的 agent 无需安装 docker 程序也可以运行 docker 容器了,或者说,Mesos 可以自己解析 docker 镜像来启动容器了。 腹黑的说,继 RKT 之后,Mesos 也抛弃了 docker daemon。我们知道,虽然在 docker 1.11 之后,containerd 的引入已经解决了 docker daemon 重启带来的容器重启问题,但是宿主机的 init 系统仍然无法直接跟踪进程的生命周期。同时,这也可以看出 Mesos 社区对 docker 技术的把控能力。

网络

对容器网络标准 CNI 的支持,CNI 标准是多家网络厂商参与制定的容器网络标准,Mesos 兼容了 CNI 标准,相当于间接的支持了 VxLAN, DC/OS overlay, Calico, Weave, Flannel 等多种网络技术。这是继一容器一 IP 功能后,Mesos 的又一重要的网络功能。

安全

多租户,安全,审计等一直是企业用户对平台软件的基本诉求,Mesos 在 1.0.0 中通过提供更细粒度的授权验证机制对此作出了响应。首先,在 1.0.0 中,Mesos 的所有敏感数据入口都是经过 SSL/TLS 加密的;其次,Mesos 管理员现在可以通过配置 ACLs 来限制用户只能在 WebUI/API 看到自己的任务了,而这就是企业用户的 must-have 要求;最后,Mesos 也提供了完善的 authorizer 接口,企业用户可以通过该接口添加自己特有的安全策略。

GPU 支持

现在你可以通过 Mesos 来跑 TensorFlow 的任务[https://www.youtube.com/watch?v=giJ4GXFoeuA&list=PL903xBaKIoaWc0hnSVyAAGAJUPxq2MCd0]了, 与管理 cpu,内存资源类似, Mesos 现在也将 GPU 资源纳入帐下。参照 nvidia-docker 的实现, Mesos 现在可以无缝的运行 GPU docker 容器了。同时, Spark, Marathon 和 Aurora 社区也加入了在 Mesos 上调度GPU的行列。

社区合作

最后,朋友多了路好走。 Mesos 社区也在加大与 IBM , Microsoft 和 Nvidia 等厂商的技术合作。其中, IBM 已经成为紧随 Mesosphere 之后的第二大 Mesos 代码贡献厂商,未来,IBM 会在 Mesos 的 optimistic offers, 资源分配优化和兼容 POWER 平台方面投入力量。 同时, Mesos 也推出了 Mesos 运行在 Microsoft 上的试验功能。