煤炭、超大规模计算和云工作负载自动化

大约250年前,工业革命开启了一个前所未有的生产力和增长时代。社会从所有商品的艰苦、手工、手工工艺,过渡到所有商品的自动化、机器驱动的大规模制造。

这一令人难以置信的转变是由煤动力蒸汽机的发明和改进推动的。

今天,我们生活在一个由超大规模云计算驱动的技术革命中,虽然我个人在过去30多年里看到的变化是惊人的,但我相信这只是一个开始。

1865年,英国经济学家威廉·斯坦利·杰文斯(William Stanley Jevons)在研究煤炭的未来供应时指出:“因此,任何有助于提高煤炭效率和降低使用成本的事情,都直接倾向于增加蒸汽机的价值,并扩大其业务领域。”

简单地说,人们消耗资源的效率越高,消耗的资源就越多。

回到2019年,今天的煤炭是云计算。它的成本效益越高,使用起来越容易,就会被使用得越多。

但是云计算到底有多简单呢?让我们来看看AWS云中可能具有挑战性的一些领域。

EC2按需、保留和现货实例的最佳混合.....同一集群

许多公司都在寻找一种平台,可以自动将工作负载放在最合适的EC2实例上,包括定价模型和与工作负载最匹配的CPU /内存。

在成本方面,如果你购买了保留实例,你将被锁定1年或3年。如果项目比预期提前结束,那么你最终会得到完全支付(或合同承诺)的、完全未使用的资源。雷竞技rabet官网

如果您梦想使用Spot实例可以将EC2价格降低90%,那么确保可用性是一个真正的挑战(又名集群@#$%^&*!),因为AWS可以在2分钟内随时拔掉电源。

因此,总的来说,你最终只能按需付费,并在每个月底收到账单时哭泣。

请继续阅读,了解如何利用所有ri并在Spot实例上运行关键任务工作负载。

容器需求应该决定基础设施部署和工作负载位置

如果基础设施部署和工作负载布置是由实际应用程序或系统需求驱动的,那不是很棒吗?不幸的是,事实并非如此。

举个例子,弹性Kubernetes服务(EKS)和其他编配工具。它们的自动缩放通常是由节点指标驱动的,这可能完全是误导,与任务或pod的实际资源消耗无关

在Kubernetes中,主节点负责维护集群所需的状态。即使集群有多余的资源,一旦单个pod所需的CPU或RAM超过单个节点可用的雷竞技rabet官网CPU或RAM, pod将无法启动,您将收到如下错误消息:

Kubernetes错误信息

类似地,在ECS中,假设您的自动伸缩组有一个策略,可以在任务的CPU超过70%时进行伸缩。

如果任务CPU平均为65%,则没有扩展,即使ECS调度器有一个需要40% CPU的新任务。此场景将导致Task未被调度。

显然,由于这种自动伸缩差距而导致任务或pod无法运行是一个必须处理的主要问题,以确保您的工作负载在应该运行的时候运行。

出人意料的结局——有一个解决方案可以解决这一切

当然,我不会把这些问题留给你们。在最后几段中,我将简要概述spottinst如何允许您轻松地使用Spot实例、预订和(如果需要的话)按需启动集群。我还将分享spotst如何抽象出所有容器编排平台中固有的所有基础设施挑战。

在单个集群中启动现货、按需和保留实例

虽然AWS Spot Fleet对于混合良好的集群来说是一个很好的选择(它允许您定义集群中按需与现货实例的百分比),但如果任何现货实例中断,Spot Fleet将不会用按需替换它们(以确保高可用性)。

此外,即使您有可用的预留实例,Spot Fleet也不会主动寻求启动相同类型的实例,从而错过了额外的节省和成本效率。

这就是Spotinst的旗舰产品,Elastigroup,将您的集群提升到下一个级别。

例如,使用Spotinst Elastigroup,您可以:

  • 以100% Spot实例启动集群,如果有任何中断,Elastigroup将自动启动其他Spot类型或按需实例以确保可用性。
  • 充分利用任何预先购买的预留实例,因为Elastigroup知道自动启动匹配的实例(并将在旋转Spot实例之前这样做)。
  • 通过在所选可用分区中的所有子网上实现Spot请求,提高集群可用性(超出Spot Fleet的能力)。

注意:虽然Spot Fleet和spottinst都提供了Spot vs. On-Demand的百分比分布,但它不是在任务/Pod级别,而是在集群的基础设施级别。一旦AWS将生命周期添加到服务定义中,此功能将是可行的。

用《俄罗斯方块缩放》向“没有节点可用”说再见

正如我们上面提到的,可用的容器编排平台不能正确地处理基于Pod或Task请求的扩展,这通常会导致工作负载不能按计划运行。

在这里Spotinst也提供了一个全面的缩放解决方案,即俄罗斯方块缩放的一部分Spotinst海洋, Kubernetes和ECS的“无服务器容器”部署选项。

Kubernetes自动伸缩基于Pod或任务CPU和RAM需求

Spotinst Ocean会自动检测Pod或Task是否有特定的CPU或RAM需求,并将启动适当的实例大小或类型。

此外,Spotinst Ocean提供了正确大小(垂直Pod自动缩放或VPA),主要是查看实际的Pod或任务资源利用率,并基于此决定是否需要增加或减少可用的CPU和RAM。

这两个特点是相辅相成的。随着Pod和Tasks本身变得更加优化,Pod/ task驱动的扩展可以更精确地发挥作用,从而更大程度地节省成本,并有效地在集群中放置工作负载。

让我们超大型你的云

回到本文的开头,Spotinst为云消费者提供了一种更简单、更经济的方式,可以通过任何流行的云提供商(AWS、GCE、Azure等)自动化工作负载,这反过来又推动了我们技术创新和增长的新时代。

最后,这里是杰文斯著名的经济学原理,为了我们的目的,稍微修改了一下:“因此,任何有助于提高云计算的效率和降低其使用成本的事情,都直接倾向于增加云的价值,并扩大其操作领域。”

今天就去探索spotst吧!