我的 Amazon Elastic Container Service (Amazon ECS) 容量提供者所需的執行個體數與我預期的不同。或者,所需的執行個體數與關聯的 Amazon EC2 Auto Scaling 群組的數量不同。
解決方法
注意: 如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,則請參閱對 AWS CLI 進行錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
檢查 EC2 Auto Scaling 群組中的執行個體是否無法加入叢集
檢查與容量提供者關聯的 Auto Scaling 群組中是否出現某個執行個體,但該執行個體未出現在 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 容量。
檢查 Auto Scaling 群組的組態
若要檢查 Auto Scaling 群組的自動擴展政策和容量組態,請執行以下 describe-auto-scaling-groups 命令:
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names YOUR_AUTO_SCALING_GROUP
注意: 將 YOUR\AUTO\SCALING\GROUP 替換為與容量提供者關聯的 Auto Scaling 群組的名稱。
Amazon ECS 叢集自動擴展會自動將擴展政策新增至容量提供者的關聯 Auto Scaling 群組。因此,修改或新增與 Auto Scaling 群組關聯的擴展政策並不是最佳做法。
若要根據 CPU 使用率等指標擴展 Amazon ECS,最佳做法是使用 AWS Application Auto Scaling。有關如何使用自訂指標的資訊,請參閱使用 Application Auto Scaling 根據自訂指標自動擴展 Amazon ECS 服務。
叢集自動擴展不會修改 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 替換為與您的容量提供者關聯的 Auto Scaling 群組的名稱,並將 DESIRED_VALUE 替換為您的容量值。