Qbox如何使用Kubernetes和Supergiant在AWS账单上每月节省50%

编者注:今天的帖子是由Qbox团队负责的。Qbox是一家托管的Elasticsearch供应商,分享了他们在Kubernetes上的经验以及如何帮助他们节省了50%的云费用。 

一年多以前,我们在Qbox面临一个生存问题。几乎所有主要的IaaS提供商都推出或收购了与我们直接竞争的服务 托管的Elasticsearch 服务,其中许多人开始免费提供它。除非我们可以对基础架构进行重新设计以使其比以前的VM方法以及IaaS弟兄正在使用的VM方法更具性能,更稳定和更便宜,否则,零竞争即将到来。借助Kubernetes,Docker和Supergiant(我们自己的用于管理分布式和有状态数据的手动滚动层)的帮助,我们能够节省50%的费用,大约是五位数。同时,支持票也直线下降。我们对结果感到非常满意,因此决定 开源超级巨人 作为自己的独立产品。这篇文章将演示我们如何完成它。

早在2013年,当甚至没有多少人对Elasticsearch熟悉时,我们就推出了具有专用直接VM模型的即服务产品。我们手动选择了针对Elasticsearch优化的某些实例类型,并且用户配置了在任何区域的隔离虚拟机上运行的单租户,多节点集群。我们为DevOps支持和监控在每计算小时价格上增加了一个标记,随着Elasticsearch成为当今的全球现象,与世界相处一会儿。

背景
随着我们成长为成千上万的集群和更多的节点,这不仅是我们的AWS账单一发不可收拾。我们每天有4个工程师每天全天候替换死节点并回答支持请求。更糟糕的是与使用情况相比分配的资源量。我们有数千台服务器,其CPU总体利用率不到5%。我们在绝对无能为力的处理器上花了太多钱。 

我们如何到达那里并没有什么神秘的事情。虚拟机是一种有限的资源,并且使用像Elasticsearch这样的计算密集型,易爆应用程序,我们会为那些可能会减少集群规模以节省资金的用户或那些可能会过度配置和超支的用户提供帮助。当上述竞争压力迫使我们束手无策时,我们不得不重新评估一切。

采用Docker和Kubernetes
我们的团队暂时避开了Docker,大概是基于模糊的假设,即容器无法实现虚拟机所具有的网络和磁盘性能。该假设被证明是完全错误的。

为了运行性能测试,我们必须找到一个可以管理联网容器和卷的系统。那就是我们发现Kubernetes的时候。最初,这对我们来说是陌生的,但是当我们熟悉了自己并建立了性能测试工具后,我们就被卖了。它不仅比以前好,而且更好。

我们观察到的性能提高归因于我们可以在一台机器上“打包”的容器数量。具有讽刺意味的是,我们开始进行Docker实验是为了避免“嘈杂的邻居”,当多个容器共享同一个VM时,我们认为这是不可避免的。但是,这种隔离在性能和成本上也成为瓶颈。要使用一个真实的示例,如果一台计算机有2个核心,而您需要3个核心,那么您就遇到了问题。很少会遇到带有3个内核的公共云VM,因此典型的解决方案是购买4个内核而不充分利用它们。

这就是Kubernetes真正开始发光的地方。它的概念是 要求和限制,它提供了对资源共享的精细控制。多个容器可以共享一个基础主机VM,而不必担心“嘈杂的邻居”。例如,他们可以请求对一定数量的RAM进行排他控制,并且可以在预期溢出时定义限制。它是实用,高效且具有成本效益的多租户。我们能够提供单租户和多租户世界中最好的东西。

Kubernetes +超级巨人
我们建了 超级巨人 最初是针对我们自己的Elasticsearch客户。 超级巨人通过允许预包装和可重新部署的应用程序拓扑来解决Kubernetes的复杂性。更具体地说,Supergiant使您可以使用与微服务有些相似的组件。组件代表一组几乎统一的软件实例(例如Elasticsearch,MongoDB,您的Web应用程序等)。他们汇总了将复杂拓扑部署到易于管理的紧凑实体中所需的所有各种Kubernetes和云操作。

对于Qbox,我们从需要1:1节点到大约1:11节点。当然,节点更大,但是利用率却有很大的不同。如下图所示,我们可以将一大堆小实例塞满一个大实例,而不会损失任何性能。较小的用户可以依靠更大的资源获得更高的网络吞吐量,这也将带来更大的CPU和RAM突发。

sg-example.png

节省成本
打包算法 在Supergiant中,随着利用率的提高,我们的基础架构足迹立即减少了25%。请记住,这带来了更好的性能和更少的支持票。我们可以调用打包算法,并可能节省更多的钱。同时,由于我们的节点更大且更可预测,因此我们可以更充分地利用AWS预留实例的经济优势。我们采用了1年的部分RI,无论是付出还是付出,都会将剩余成本削减40%。我们的客户仍然可以灵活地向上,向下和移出其Elasticsearch节点,而不必强迫我们不断调整,合并,拆分和重组预订。最终,我们节省了50%。每年60万美元可以用来支付工程薪酬,而不用充实我们的IaaS提供商。