HBO为何选择Kubernetes助力《权力的游戏》?
技术
作者:
译者:王晓轩
2017-12-27 03:13

现在已经有越来越多的IT公司选择Kubernetes作为他们的容器编排系统。就像文中所介绍的,社区的活跃度和用户数量是很多人选择它的重要原因之一。其次就是功能的完善和成功的案例。《权力游戏》是世界上最受欢迎的电视剧之一,观众既可以在HBO网络上观看,也可以通过HBO Go流媒体服务观看。对于播放一个像《权利的游戏》这样火爆的片子来说,会有很多不同的技术问题需要去解决。HBO的开发者采用了一个开源的容器编排平台Kubernetes去处理它们。


在2017年12月7日的北美KubeCon论坛上,HBO的工程师解释了如何和为什么选择Kubernetes来完成《权力的游戏》第七季在2017年7月和8月的首映。
“我们从不使用容器到用Kubernetes去管理所有的服务,” HBO高级工程师Illya Chekrygin对KubeCon听众说。
Kubernetes是一个开源的容器编排系统,它起源于Google。从2015年7月,Cloud Native Compute Foundation(CNCF)主持了Kubernetes的开发工作,而且有很多的开发者和软件厂商都对它都贡献了代码。
Chekrygin解释了HBO Go流媒体服务是完全不同的API服务,都用Node.js以及Go编程语言。HBO的流媒体平台部署在亚马逊网络服务(AWS)上并使用EC2虚拟机,使用它的支持自动缩放功能。为了协助处理需求,HBO Go框架使用负载平衡器来分发流量。

HBO的流量模式可以比作一道“墙”,Chekrygin说。
这道“墙”是指,其流量在黄金时段骤然提升,这时观众们大量涌入进行节目观看。Chekrygin说,看着《权利的游戏》一集接一集,一季换一季在HBO上播出,HBO的工程师对他们未来能否处理更多的需求充满了怀疑(译者注:意思是说,每一集的收视率都屡创新高,服务器快扛不住了)。
“当新的一集发布时,最大的挑战是如何提前预测到流量的最高点,”Chekrygin说。
在HBO工程师们面临的诸多挑战当中,已部署资源利用率低下无疑是最令人头痛的一项。Chekrygin解释说,Node.js的代码往往只使用CPU的一个内核。他指出,AWS EC2实例,具有很高的网络流量处理能力,但它是基于双核CPU的。因此,HBO仅使用了整个部署集群CPU容量的50%。
在EC2上启动新实例的速度无法满足HBO的实际需求,因此Chekrygin提到工程师们必须采取容量过度配置的方式,从而应对预期之外的暂时性流量模式。当然也需要启动一些ELB(弹性的块存储)去传送数据。
“虽然我们的CPU利用率在50%以下,但我们发现,资源仍然不够用,”Chekrygin说。“所以为了服务可靠性(译者注:就是在收视高峰的时候服务器别挂了),只要在任何的时候,ELB和其他资源的利用率发现越过80%,就会出发报警”。
HBO还发现在《权力的游戏》的观看高峰期,用来提供给观众的IP地址也不够了。


为什么选择Kubernetes呢?
“我从一开始就关注Kubernetes,”Chekrygin说,“但是我们仍然对Meses、Docker Swarm 和ECS(ESC弹性容器服务)做了调查。”
“HBO选择Kubernetes的原因之一是它的技术可以提高资源的利用率和集群本身的自愈能力。此外,Kubernetes被HBO认为比其他的容器编排系统更快更安全。
当HBO决定用Kubernetes部署应用时,仍然用AWS的云服务,因为在2016年HBO没有自己的云服务器部署Kubernetes,但是最近情况发生了变化。
AWS在11月29日刚刚宣布,可以为Kubernetes(EKS)提供自己的弹性容器服务。Chekrygin说,HBO的工程师做了大量的工作,以确保Kubernetes能够满足的《权力游戏》的生产部署需求。
HBO电视台的高级工程师Zihao Yu,在KubeCon上说,HBO最终使用自定义Teraform模板来帮助管理和部署Kubernetes集群。Teraform是HashiCorp开发的一个开源项目,可以帮助企业管理基础设施,部署代码。
Yu说在网络层面,HBO选择开源软件Flannel软件定义网络(SDN)封包技术(译者注:就是网络Overlay,他确定不是host-gw?,Overlay一层速度有保证吗?我记得好像对CPU也有损耗,在红帽的OpenShift里也用了OVS,好像有一个对硬件的最低要求吧,sorry我跑题了)并且创建一个自定义的安全组去处理服务交付。


经验教训
《权力的游戏》第七季的首发由Kubernetes构建的平台执行,其中涉及许多步骤,当然包括大量的测试。
“两个或三个月内,我们为《权力的游戏》首映每周跑大量的压力测试,”Chekrygin说。”我们的第一次尝试,非常可怜。”
压力测试帮助HBO工程师找到哪里还有问题。Chekrygin说,微调和分析帮助我们的平台为《权力的游戏》第七季首演做准备。Chekrygin说,没有网上的资源,没有Kubernetes的社区和讨论组的帮助,HBO的 Kubernetes集群部署很有可能不会进行的这么顺利。
“对我们来说,部署和测试过程中发现的许多问题不是由Kubernetes引起的。把它们部署到Kubernetes里,只是让问题更快更容易的暴露出来,”Chekrygin说。“当然我们关注其他的编排系统,但我们选择Kubernetes最大的原因是他的活力和活跃的社区。”


原文链接:http://www.eweek.com/cloud/why-hbo-chose-kubernetes-to-help-stream-game-of-thrones


328 comCount 0