我的 Amazon Elastic Container Service (Amazon ECS) 容量提供商的所需实例计数与我预期的不同。或者,所需实例计数与关联的 Amazon EC2 自动扩缩组的实例数量不同。
解决方案
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
检查 EC2 自动扩缩组中的实例是否无法加入集群
检查实例是否显示在与您的容量提供商关联的自动扩缩组中,而不是显示在 Amazon ECS 控制台上。如果存在网络配置、AWS Identity and Access Management (IAM) 或 Amazon ECS 容器代理问题,则容器实例将无法加入集群。
要解决这些问题,请参阅为什么我的 Amazon EC2 实例无法加入 Amazon ECS 集群?
检查容量提供商的配置
使用 Amazon ECS 控制台或 AWS CLI。
Amazon ECS 控制台
完成以下步骤:
- 打开 Amazon ECS 控制台。
- 在导航窗格中,选择 Clusters(集群)。
- 选择您的集群。
- 选择 Infrastructure(基础设施)选项卡。
AWS CLI
运行以下 describe-capacity-providers 命令:
aws ecs describe-capacity-providers --capacity-providers YOUR_CAPACITY_PROVIDER
**注意:**请将 YOUR_CAPACITY_PROVIDER 替换为您的容量提供商名称。
在输出中,检查 TargetCapacity 和 minimumScalingStepSize 值。
要保持集群的额外容量,请将 TargetCapacity 的值设置为小于 100%。值越低,集群的额外容量越高。有关目标容量的详细信息,请参阅深入了解 Amazon ECS 集群自动扩缩。要修改 TargetCapacity,请使用 Amazon ECS 控制台。或者,运行以下 update-capacity-provider 命令:
aws ecs update-capacity-provider --name YOUR_CAPACITY_PROVIDER --auto-scaling-group-provider managedScaling={targetCapacity=DESIRED_VALUE}
**注意:**请将 YOUR_CAPACITY_PROVIDER 替换为您的容量提供商名称,将 DESIRED_VALUE 替换为您的 TargetCapacity 值。
MinimumScalingStepSize 定义了 Amazon ECS 可以横向扩展的最小实例数量。即使实际需求小于该值,Amazon ECS 也会根据 MinimumScalingStepSize 进行扩展。因此,Amazon ECS 可能会暂时与容量提供商关联超过所需数量的容器实例。要更新 minimumScalingStepSize,请运行以下 update-capacity-provider 命令:
aws ecs update-capacity-provider --name YOUR_CAPACITY_PROVIDER --auto-scaling-group-provider managedScaling={minimumScalingStepSize=DESIRED_VALUE}
**注意:**请将 YOUR_CAPACITY_PROVIDER 替换为您的容量提供商名称,将 DESIRED_VALUE 替换为您的 MinimumScalingStepSize 值。
有关详细信息,请参阅通过集群自动扩缩功能自动管理 Amazon ECS 容量。
检查自动扩缩组的配置
要检查自动扩缩组的自动扩缩策略和容量配置,请运行以下 describe-auto-scaling-groups 命令:
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names YOUR_AUTO_SCALING_GROUP
**注意:**请将 YOUR_AUTO_SCALING_GROUP 替换为与您的容量提供商关联的自动扩缩组的名称。
Amazon ECS 集群自动扩缩会自动向容量提供商关联的自动扩缩组添加扩展策略。因此,最好不要修改或添加与自动扩缩组关联的扩展策略。
要根据 CPU 使用率等指标扩展 Amazon ECS,最佳做法是使用 AWS 应用程序自动扩缩。有关如何使用自定义指标的信息,请参阅 Autoscaling Amazon ECS services based on custom metrics with Application Auto Scaling。
集群自动扩缩不会修改自动扩缩组的 MinimumCapacity 或 MaximumCapacity 值。如果 MinimumCapacity 高于 0,则表示可能存在空实例。如果 MaximumCapacity 过低,容量提供商将无法扩展以满足 Amazon ECS 服务的需求。要修改这些值,请运行以下 update-auto-scaling-group 命令:
aws autoscaling update-auto-scaling-group --auto-scaling-group-name YOUR_AUTO_SCALING_GROUP --min-size DESIRED_VALUE --max-size DESIRED_VALUE
**注意:**请将 YOUR_AUTO_SCALING_GROUP 替换为与您的容量提供商关联的自动扩缩组的名称,将 DESIRED_VALUE 替换为您的容量值。