我有一个由实例类型A的容器实例组成的ECS集群,可以说它的t2.small。该集群由多台运行多个服务的机器组成。现在,我即将有一个新的服务/任务(让我们称之为“GreatRequirements”),这将需要比任何其他服务/任务更多的CPU /内存。我希望能够引导1台大型机器(让我们称之为“LargeMachine”),其他任务永远不会放在集群上,以便集群中的这台机器始终可用于“GreatRequirements”服务。如何防止任务在某个容器实例上启动
有没有什么办法可以阻止所有其他服务/任务,而不是在该机器上安排的“GreatRequirements”,除此之外,对所有其他服务/任务都做出约束限制?实质上,我想阻止ECS表单将其他服务/任务放置在“LargeMachine”上,这样我就不会因为一堆小服务/任务阻止我的“GreatRequirements”服务启动任务而无法找到具有足够cpu /内存。
谢谢
但是,这不会阻止其它任务被定于“LargeMachine”运行,而我仍然可以结束了在这样一个场景,该机器将不会有足够的CPU /内存? –
从防止其他任务的解决方案: 你可以有一个约束e.g'属性的所有其他人的任务:ecs.instance型== T2。这会阻止它们在大型机器上运行,或者您可以将您的群集分为2个群集(一个用于普通任务,另一个用于GreatRequirements)。在新的集群中,您将拥有大型机器并安排您的任务(GreatRequirements)在该机器上运行 – Gigapalmer
在这种情况下,我将不得不为所有其他服务/任务设置约束,这是我想省略的。除了将所有实例的实例类型更改为可以使用“GreatRequirements”处理该服务的类型外,我不认为实际上有一个好的解决方案,并以某种方式检测服务由于不足而无法调度任务CPU /内存,并基于此将其他实例扩展到群集中。感谢Gigapalmer提供的帮助:-) –