我的 Amazon Elastic Container Service (Amazon ECS) 任務卡在「佈建中」狀態。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
若要對此問題進行疑難排解,請查看受影響服務的 Amazon ECS 服務事件,以檢查最近的部署活動和失敗。使用事件模式和錯誤訊息來確定問題是否與容量、網路或組態問題有關。如需任務啟動失敗的更多詳細資訊,請檢查已停止任務的錯誤訊息中是否存在 TaskFailedToStart 錯誤。
檢查您的容量供應商組態
若要檢查容量供應商的 Amazon EC2 Auto Scaling 群組在任務佈建期間是否達到最大容量,請執行下列 describe-auto-scaling-groups AWS CLI 命令:
aws autoscaling describe-auto-scaling-groups \
--auto-scaling-group-names your-asg-name \
--query 'AutoScalingGroups[].{DesiredCapacity:DesiredCapacity,MaxSize:MaxSize,RunningInstances:Instances[?LifecycleState==InService].InstanceId|length}'
**注意:**將 your-asg-name 替換為您的 EC2 Auto Scaling 群組名稱。
若要查看所有容器執行個體及其狀態,請執行下列 list-container-instances 命令:
aws ecs list-container-instances \
--cluster your-cluster-name \
--status ACTIVE \
--query 'containerInstanceArns[]'
若要增加 Auto Scaling 群組的容量,請執行以下 update-auto-scaling-group 命令:
aws autoscaling update-auto-scaling-group \
--auto-scaling-group-name your-asg-name \
--max-size new-max-size
**注意:**將 your-asg-name 替換為您的 EC2 Auto Scaling 群組名稱,並將 new-max-size 替換為更新後的 EC2 Auto Scaling 群組大小。
此外,請確認 Amazon ECS 代理程式在容器執行個體上運作且狀態良好。
若要進一步對容量供應商錯誤進行疑難排解,請參閱當我為 Amazon ECS 叢集設定新容量供應商或更新現有容量供應商時,如何對發生的問題進行疑難排解?
檢查您的服務組態和任務擴展
確認服務所需的數量與容器執行個體上 CPU 和記憶體的可用基礎架構容量相符。若要查看服務所需的數量和執行數量,請執行以下 describe-services 命令:
aws ecs describe-services \
--cluster your-cluster-name \
--services your-service-name \
--query 'services[].{desiredCount:desiredCount,runningCount:runningCount,pendingCount:pendingCount}'
注意: 將 your-cluster-name 替換為您的叢集名稱,將 your-service-name 替換為您的服務名稱。
若要更新服務所需的數量,請執行以下 update-service 命令:
aws ecs update-service \
--cluster your-cluster-name \
--service your-service-name \
--desired-count new-count
--force-new-deployment
注意:將 your-cluster-name 替換為您的叢集名稱,將 your-service-name 替換為您的服務名稱,並將 new-count 替換為您所需的任務數量。--force-new-deployment 選項會強制服務更新。
檢查您的服務配額
如果您超出了 Amazon ECS 服務配額,那麼您可能會遇到任務問題。若要對服務配額問題進行疑難排解,請參閱如何解決 Amazon ECS 服務配額問題?
檢查您的網路設定
檢查您的任務安全群組規則,並確保子網路具有可用的 IP 位址。對於沒有 NAT 閘道的私用子網路,請為您的組態設定所需的 VPC 端點。VPC 端點安全群組必須允許來自任務子網路 CIDR 的傳入流量。
您的安全群組也必須允許以下流量:
- 傳出 HTTPS (連接埠 443) 流量到網際網路或 NAT 閘道,以提取容器映像檔。
- 傳出流量到您使用的 VPC 端點。
- 對於使用 Application Load Balancer 的組態,來自 Application Load Balancer 安全群組的傳入流量。
- 需要通訊之容器間的傳入流量。
若要檢查 Amazon ECS 服務子網路是否具有所需的 IP 位址,請執行下列 describe-subnets 命令:
aws ec2 describe-subnets \
--subnet-ids subnet-abcde \
--query 'Subnets[].{SubnetId:SubnetId,AvailableIPs:AvailableIpAddressCount,TotalIPs:CidrBlock}'
**注意:**將 subnet-abcde 替換為您的子網路 ID。
請確定您遵守任務的網路模式要求:
- 如果是 awsvpc 模式,請確保每個任務都有專用的彈性網路介面。
**注意:**每個執行個體類型的網路介面均有最大配額。請確定您的容器執行個體具有可用於新任務的網路介面連接點。
- 如果是橋接模式,請確定 docker0 橋接在其集區中具有足夠的 IP 位址。
- 如果是主機模式,則沒有特定的網路資源限制。但是,當多個任務使用相同主機連接埠時,可能會發生連接埠衝突。
相關資訊
Amazon ECS 疑難排解
Amazon ECS 服務配額
自動擴展您的 Amazon ECS 服務
為 Amazon ECS 建置解決方案