1

我有一个 eks 集群,其节点组基于具有以下配置的混合实例分发启动模板:

region: us-west-2  
instance_distribution: [p2.xlarge, p3.2xlarge, p2.8xlarge]  
max_price: 0.9  
on_demand_percentage_above_base_capacity: 0  
on_demand_base_capacity: 0  
spot_instance_pools: 2

在将自动缩放从 0 缩放到 1 时,集群自动缩放器遇到了以下问题:

Launching a new EC2 instance. Status Reason: Could not launch Spot Instances. SpotMaxPriceTooLow - Your Spot request price of 0.9 is lower than the minimum required Spot request fulfillment price of 0.918. Launching EC2 instance failed. 
At the time, the spot price of p3.2xlarge happened to be 0.918. 

似乎请求的是现货 p3.2xlarge,而不是请求 p2.xlarge 的按需实例(即使 p2.xlarge 的按需价格 0.9 低于现货价格 0.918对于 p3.2xlarge)。我希望分配一个按需 p2.xlarge 实例,而不是请求一个 p3.2xlarge 现场实例。是因为我配置了on_demand_percentage_above_base_capacity: 0吗?

更一般地说,我希望能够配置集群以获取 p2.xlarge 的现场实例,并且在不可能的情况下,按需请求。实现我想要的功能的最佳配置是什么?

on_demand_percentage_above_base_capacity 的配置是否严格执行?如果 on_demand_percentage_above_base_capacity 设置为 1 并且我的第一个实例是按需实例,我接下来的几个扩展请求是否会被迫仅产生点实例,或者它更像是有指导意义的权重(例如,如果没有可用点,它仍然会回退到按需而不是未能满足请求)?

4

1 回答 1

7

TL;当没有可用的 Spot 时,DR AutoScaling 不会按需故障转移,但会尝试将 Spot 容量故障转移到其他 Spot 实例类型和可用区

我希望分配一个按需 p2.xlarge 实例,而不是请求一个 p3.2xlarge 现场实例。是不是因为我配置了on_demand_percentage_above_base_capacity: 0?

没错,当您将两个按需设置都设置为 0 时,AutoScaling Group (ASG) 将永远不会尝试启动按需实例。使用混合实例策略时,ASG 将首先确定要启动的点与按需实例的数量,然后再做出任何其他决定。有关其工作原理的一些详细示例,请参阅 AWS Doc。 https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-purchase-options.html#asg-instances-distribution

更一般地说,我希望能够配置集群以获取 p2.xlarge 的现场实例,并且在不可能的情况下,按需请求。实现我想要的功能的最佳配置是什么?

ASG 无法做到这一点。如果您将 ASG 配置为仅启动 Spot 实例,它不会故障转移到按需。同样,如果您将其设置为启动 50% 的 Spot,50% 的按需启动,如果没有 Spot,它仍然不会故障转移到按需启动。它只会启动按需一半,然后继续尝试启动现货一半。防止容量问题发生的最佳方法是:1) 启用更多实例类型和可用区(因为每个实例类型的每个区域都有不同的容量池)2) 不要设置最高现货价格。现货价格永远不会超过按需价格。您可能还想查看可以为您选择的实例类型添加权重的新功能: https://aws.amazon。

on_demand_percentage_above_base_capacity 的配置是否严格执行?

是的

如果 on_demand_percentage_above_base_capacity 设置为 1 并且我的第一个实例是按需实例,我接下来的几个扩展请求是否会被迫只产生现场实例

假设您设置 on_demand_base_capacity: 0 如果您将 percent_above_base 设置为 1,则 ASG 将按需生成第一个实例(ASG 始终根据需要向上取整),接下来的 99 将是现货,然后是按需 1,等等。当没有现货容量时,它不会按需故障转移

于 2019-11-29T19:01:52.540 回答