网易蜂巢基于万节点kubernetes支撑大规模云应用实践

本文整理自刘超在ArchSummit2016全球架构师峰会(北京站)的演讲。

网易蜂巢是做容器Docker的,用Kubernetes来管理容器。现在蜂巢已经支撑了内部、外部很大规模的云计算应用,所以我们这个题目有两个关键,一个是Kubernetes和容器,另外一个是大规模云应用。

网易蜂巢的大规模容器平台

上图展示了蜂巢发展历程。其实很早就开始做蜂巢了,一开始从私有云开始建设。发展分成两层:应用层、平台层。进行了四个方面的转变,一是从虚拟机进展到容器。因为虚拟机仅仅是资源平台的弹性,并没有实现到应用级别的弹性,实现容器后对应用层要有一定的关心、改造、架构梳理。在应用层我们要做微服务化的改造以及开发流程DevOps的改造,我们还经历了从私有云到公有云的转化。2014年95%的应用移到平台上来,2015年容器云平台才正式对外开放。很多应用都是我们自己支撑地比较好以后才作为容器云平台开放,对外进行服务。2016年主要是DevOps微服务帮助用户真正改变流程,改进架构。

上图是蜂巢上大规模的云应用,从最早的邮箱,到后来互联网应用产生了一个爆发的阶段,很多logo大家都认识,比如说笔记、云音乐、考拉海购等等。我们很骄傲的是,其中考拉海购和网易云音乐都部署在蜂巢平台上面,它们扛过了“双十一”。虽然我们的音乐产品推出时间比较晚,但是用户量很快激增,对整个架构也是一个很大的挑战。

蜂巢大规模容器平台整个架构如图所示。我们原来做过私有云、IaaS平台,IaaS平台其实是比较费力的,尤其是对网络方面的优化和存储方面的优化。到了容器平台以后,容器本身对CPU隔离、内存隔离、应用隔离做得不错,但是对跨主机网络隔离、统一存储支持做得不够,尽管有一些开源解决方案可以做这个事情,但我觉得对IaaS平台做的一些优化是能够帮助容器层来提供高性能的网络和存储服务,所以我们的容器平台和IaaS平台有深度结合。在右图的KVM,因为我们做的是公有云,最关注的就是安全问题。容器隔离性其实本身做得没有那么好,容器的权限不知道开的高还是低,如果开的低用起来很别扭,因为很多权限没有给它,但是开的高的话就可能在同一个主机上还有其他人的应用。 在公有云平台上,采取的策略是不同的租户不共享主机、不共享虚拟机,这样就能实现比较好的隔离性