对在 Amazon Ec2 容器服务中使用的实例感到困惑

Confusion about instances used inside a Amazon Ec2 Container Service

创建 Ec2 容器引擎集群时,它会创建一个 Compute Engine 托管实例组来管理创建的实例。这些实例来自 Ec2 服务,这意味着它们是虚拟机。

但我们知道,容器代表了一种基于操作系统级虚拟化而不是硬件虚拟化来部署容器的新方式 像重量级和不可移植的虚拟机,这不是矛盾吗?如果我错了纠正我。

我们使用容器是因为与 VM 相比它们非常快(无论是在启动时间还是任务执行方面),并且它们节省了大量 space 存储空间。因此,如果我们有一个节点 (vm) 最多可以支持 4 个容器,我们的客户可以快速午餐 4 个容器,但超过这个数字,Ec2 autoscaler 将需要午餐一个新节点 (vm) 来支持即将到来的容器,这会产生一些任务延迟。

是否无法在物理机上启动容器?

对于 运行 关键时间执行任务,您有什么建议?

我认为您是在一个错误的假设下工作,即 ECS 直接根据任务需求扩展虚拟机("container instances" -- 容器 运行 的实例)。

如果那是真的,那么您就有道理了,因为任何时候如果容器实例资源不足且无法立即可用,集群就会变得缓慢且无响应。

尽管存在 Auto Scaling 组,但 ​​ECS 不会这样做。

Depending on the Amazon EC2 instance types you use in your clusters, and quantity of container instances you have in a cluster, your tasks have a limited amount of resources that they can use when they are run. ECS monitors the resources available in the cluster to work with the schedulers to place tasks. If your cluster runs low on any of these resources, such as memory, you will eventually be unable to launch more tasks until you add more container instances, reduce the number of desired tasks in a service, or stop some of the running tasks in your cluster to free up the constrained resource. (emphasis added)

http://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch_alarm_autoscaling.html

所以,不...它不会在您容量不足时缓慢启动新任务。它根本不会启动它们。

但是不要抢在我前面。

上面的 link 通过示例解释了虚拟机(容器实例)的扩展是如何设计的。

当然,您根本不必让它们自适应扩展。您可以使用您的物理服务器模型(注意:我说物理服务器 model —— 意思是一个固定的、非弹性的资源池,在总是-运行ning 虚拟机上,因为虚拟机是 EC2 提供的),只需选择您始终等待 运行ning 的实例数,本质上是模拟物理服务器。例如,如果您想要 8 个容器实例,则 "auto scaling group" 将始终保持恰好 8 个,如果其中一个实例出现硬件故障,则会创建替换实例。 "auto" 成就就是维持现状。而且,当然,在此配置中,您可以手动将 8 个重新配置为 12 个,并且 "auto" 的成就是您会自动获得 4 个新的以添加到现有的 8 个中。

但是如何理想地使用该服务的想法是,您的虚拟机组根据您设计的规则扩大和缩小,以预期未来任务所需的资源 - - 或者未来缺少任务。

在给出的示例中,内存预留是触发器:

When the memory reservation of your cluster rises above 75% (meaning that only 25% of the memory in your cluster is available to for new tasks to reserve), the alarm triggers the Auto Scaling group to add another instance and provide more resources for your tasks and services.

它会触发更多容器实例的添加,以便您在需要时始终拥有已在线确定的适当剩余容量阈值。

当然,内存只是一种资源,75%只是为示例选择的任意阈值。

Auto Scaling Groups 可以根据各种触发器进行扩展——月亮的短语、股票市场的价格趋势,任何适合预期您想要的 盈余的数量 capacity 和 can be quantited and monitored can be used... 但是当任务由于资源不足而无法启动时,此服务不会直接通过实际尝试启动新任务来扩展自身。

这就是你原来论点的缺陷。

为什么是虚拟机?很简单,因为当您因为预计不需要容量而销毁虚拟机时,您将停止为其付费。

鉴于此,您可能会同意这不是缺点,而是优点。当您不使用物理服务器时,它们永远不会停止给您带来成本。

您根本不需要为 VM 不需要的容量支付任何费用——您只需为您正在使用的容量以及您需要立即保持可用以处理预期的容量支付费用要求。

您可以立即准备好您愿意支付的闲置盈余,或者您可以通过允许尽可能少的剩余容量来最大限度地节省开支,以便能够毫不延迟地访问。