為什麼我的 Amazon ECS 或 Amazon EC2 執行個體無法加入叢集?

2 分的閱讀內容
0

我無法使用 Amazon Elastic Container Service (Amazon ECS) 叢集註冊我的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。

解決方法

先決條件

在完成下列手動步驟之前,請使用 AWSSupport-TroubleshootECSContainerInstance AWS Systems Manager 執行手冊自動檢查潛在的問題。

AWSSupport-TroubleshootECSContainerInstance AWS Systems Manager 執行手冊會自動排解 Amazon EC2 執行個體無法註冊或加入叢集的常見原因。執行手冊會檢查下列要求:

**注意:**確保在 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,則確認執行個體有下列要求:

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,例如 RegisterTargetsRegisterContainerInstance

錯誤: 變更執行個體類型後,新執行個體將無法加入叢集。

ECS 代理程式停留在待處理狀態且無法變更執行個體類型時,就會發生此錯誤。要變更 Amazon ECS 的執行個體類型,完成下列步驟:

  1. 刪除容器執行個體
  2. 啟動具有新執行個體大小的新容器執行個體
    注意: 最佳實務是對您的叢集使用 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 執行手冊以確定容器執行個體角色缺少哪些權限。

相關資訊

建立虛擬私有雲端

為什麼我的 Amazon ECS 容器執行個體與 Amazon Linux 1 AMI 中斷連線?

Amazon ECS 疑難排解

建立您自己的執行手冊

AWS 官方
AWS 官方已更新 4 個月前