為什麼我的 Amazon ECS 或 Amazon EC2 執行個體無法加入叢集?
我無法使用 Amazon Elastic Container Service (Amazon ECS) 叢集註冊我的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。
解決方法
先決條件
在完成下列手動步驟之前,請使用 AWSSupport-TroubleshootECSContainerInstance AWS Systems Manager 執行手冊自動檢查潛在的問題。
AWSSupport-TroubleshootECSContainerInstance AWS Systems Manager 執行手冊會自動排解 Amazon EC2 執行個體無法註冊或加入叢集的常見原因。執行手冊會檢查下列要求:
- 執行個體的使用者資料包含正確的叢集資訊。如需詳細資訊,請參閱啟動設定 Amazon ECS Linux 容器執行個體以傳遞資料。
- 執行個體設定檔包含必要的權限。
- 網路設定正確。
**注意:**確保在 ECS 叢集和 EC2 執行個體所在的相同 AWS 區域中,使用 AWSSupport-TroubleshootECSContainerInstance 執行手冊。
如果執行手冊的輸出沒有提供建議,請使用下列解決方法手動排解此問題。
在 Amazon Linux 2 執行個體上驗證 Amazon ECS 代理程式的狀態
要檢查執行個體上的 Amazon ECS 容器代理程式是否執行,請執行下列命令:
sudo systemctl status ecs
如果容器代理程式未在執行個體上執行,執行下列命令以啟動代理程式:
sudo systemctl start ecs
命令輸出的輸出必須與下列範例命令輸出類似:
ecs start/running, process 23403
檢查啟動組態
如果啟動執行個體屬於 AWS 應用程式 Auto Scaling 群組的一部分,則確認 Auto Scaling 群組的啟動組態正確無誤。如需詳細資訊,請參閱使用新 AMI 重新整理 Amazon ECS 容器執行個體叢集中的「建立新啟動組態」步驟。
檢查執行個體的 Amazon Machine Image (AMI)
如果您用於 EC2 執行個體的 AMI 是複製或自訂 AMI,則確認執行個體有下列要求:
- 執行至少 3.10 版 Linux 核心的 Linux 發行版。
- 最新版本的 Amazon ECS Linux 容器代理程式。
- 執行至少 1.9.0 版和任何 Docker 執行時期相依性的 Docker 常駐程式。如需詳細資訊,請參閱 Docker 網站上的從二進位檔安裝 Docker 引擎。要查看目前的 Docker 版本,執行 sudo docker version 命令。如需詳細資訊,請參閱 Docker 網站上的安裝 Docker 引擎。
Amazon ECS 最佳化的 AMI 已預先設定下列要求。除非您的應用程式需要該 AMI 尚未提供的版本,否則最佳實務是使用 Amazon ECS 最佳化的 AMI。
檢查執行個體的使用者資料是否包含正確的叢集資訊
要檢查執行個體的使用者資料是否包含正確的叢集資訊,請執行下列命令:
#!/bin/bash echo ECS_CLUSTER=<cluster-name> >> /etc/ecs/ecs.config
驗證日誌檔
如果問題仍然存在,請使用 Amazon ECS 日誌收集器來收集日誌。然後,檢閱日誌以找到原因。您也可以檢查容器代理程式和 Docker 容器主機上的日誌檔。
要檢視容器代理程式和 Docker 的日誌檔,執行下列命令:
sudo cat /var/log/ecs/ecs-agent.log.YYYY-MM-DD-**sudo cat /var/log/docker
對常見錯誤進行疑難排解
錯誤: 啟動新的 EC2 執行個體。狀態原因: 此帳戶目前已被封鎖,且無法辨識為有效帳戶。如果您有任何疑問,請聯絡 aws-verification@amazon.com。啟動 EC2 執行個體失敗。
當您的帳戶遭到封鎖且 Amazon 無法識別您的帳戶時,就會發生此錯誤。要解除封鎖您的帳戶,請傳送電子郵件至 aws-verification@amazon.com。確保在電子郵件中包含您需要解除帳戶封鎖的內容。
錯誤:重新註冊: ClientException: 容器執行個體 12345678910xxxxxxxxxxxx 處於非使用中狀態。\n\t狀態碼: 400,請求 ID: 012345678a-012345b-012ab-0a1-9f645f4s5c12" module=agent.go
ECS 代理程式無法使用 ECS 叢集註冊 EC2 容器執行個體時,就會發生此錯誤,因為 EC2 執行個體處於非使用中狀態。此錯誤與執行個體上執行的應用程式有關。要瞭解錯誤的原因,請先檢查應用程式。如果錯誤仍然存在,請檢查 ECS 代理程式日誌。
錯誤: 很少執行個體可以加入叢集,但使用相同的設定,其他執行個體無法加入叢集。
此錯誤可能是因為特定 API 呼叫超出速率限制時產生的 ThrottlingException 所導致。要解決此錯誤,提高帳戶層級的速率限制。檢查 API,例如 RegisterTargets 和 RegisterContainerInstance。
錯誤: 變更執行個體類型後,新執行個體將無法加入叢集。
ECS 代理程式停留在待處理狀態且無法變更執行個體類型時,就會發生此錯誤。要變更 Amazon ECS 的執行個體類型,完成下列步驟:
- 刪除容器執行個體。
- 啟動具有新執行個體大小的新容器執行個體。
注意: 最佳實務是對您的叢集使用 Amazon ECS 最佳化的 Amazon Linux 2 AMI 啟動執行個體。
或者,您可以建立新的啟動組態。然後,更新 Auto Scaling 群組的啟動組態。
如需詳細資訊,請參閱如何在 Amazon ECS 中變更容器執行個體類型?
錯誤: 無法向 ECS 註冊為容器執行個體: AccessDeniedException: User: arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/i-00aa11bb22cc33def 未授權執行:ecs:RegisterContainerInstance on resource: arn:aws:ecs:us-east-1:1122334455:cluster/exampleCluster . status code: 400,請求 ID: 0a123456-7899-10101-a987-6543210deff
-或-
錯誤: 2019-06-29T16:10:09Z [ERROR] 重新註冊時發生錯誤: AccessDeniedException: User: arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/i-0052b2e858b1891ef 未授權執行:ecs:RegisterContainerInstance on resource: arn:aws:ecs:us-east-1:1122334455:cluster/exampleCluster status code: 400,請求 ID: 0a123456-7899-10101-a987-123456pqrs
由於缺少 IAM 權限,會發生這些錯誤。要解決這些錯誤,必須建立容器執行個體 IAM 角色。
然後,執行 AWSSupport-TroubleshootECSContainerInstance 執行手冊以確定容器執行個體角色缺少哪些權限。
相關資訊
相關內容
- 已提問 1 年前lg...
- 已提問 2 年前lg...
- 已提問 1 年前lg...
- 已提問 1 年前lg...
- 已提問 1 年前lg...
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 2 年前