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

3 分的閱讀內容
0

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

解決方法

首先,請使用 AWSSupport-TroubleshootECSContainerInstance AWS Systems Manager 執行手冊來自動檢查潛在問題。AWSSupport-TroubleshootECSContainerInstance 執行手冊會自動排解 EC2 執行個體無法註冊或加入叢集的常見原因。

**注意:**確保在 Amazon ECS 叢集和 EC2 執行個體所在的相同 AWS 區域中,使用 AWSSupport-TroubleshootECSContainerInstance 執行手冊。

如果執行手冊的輸出沒有提供建議,請執行下列動作手動疑難排解問題。

先決條件:

在 Amazon Linux 2 執行個體上驗證 Amazon ECS 代理程式的狀態

執行下列命令,以檢查執行個體的 Amazon ECS 容器代理程式是否正在執行:

sudo systemctl status ecs

如果 Amazon ECS 容器代理程式未在執行個體上執行,執行下列命令以啟動代理程式:

sudo systemctl start ecs

開始命令的輸出看起來類似於以下範例:

Active: active (running)

若要檢查 Docker 服務是否正在執行,請執行下列命令:

sudo systemctl status docker

如果 Docker 服務未處於執行狀態,請執行下列命令以啟動服務:

sudo systemctl start docker

開始命令的輸出看起來類似於以下範例:

Active: active (running)

檢查啟動組態

如果啟動執行個體屬於 Auto Scaling 群組的一部分,則驗證 Auto Scaling 群組的啟動組態正確無誤。如需詳細資訊,請參閱** 5\。使用新 Amazon Machine Image (AMI) 重新整理 Amazon ECS 容器執行個體叢集中的建立新啟動組態**步驟。

檢查容器執行個體的 AMI

如果容器執行個體的 AMI 是複製或自訂 AMI,請確定執行個體符合下列要求:

Amazon ECS 最佳化的 AMI 已預先設定下列要求。除非您的應用程式需要該 AMI 未提供的版本,否則最佳實務是使用 Amazon ECS 最佳化的 AMI。如需詳細資訊,請參閱擷取 Amazon ECS 最佳化的 Linux AMI 中繼資料

檢查執行個體的使用者資料是否包含正確的叢集資訊

要檢查執行個體的使用者資料是否包含正確的叢集資訊,請執行下列命令:

#!/bin/bash  echo ECS_CLUSTER=cluster-name >> /etc/ecs/ecs.config

**注意:**將 cluster-name 取代為您的叢集名稱。

驗證日誌檔

如果問題仍然存在,請使用 Amazon ECS 日誌收集器來收集日誌。然後,檢閱日誌以找到原因。您也可以檢查 Amazon ECS 容器代理程式和 Docker 容器主機上的日誌檔。

若要檢視 Amazon ECS 容器代理程式和 Docker 的日誌檔,請執行下列命令:

sudo cat /var/log/ecs/ecs-agent.log.YYYY-MM-DD-**sudo cat /var/log/docker

**注意:**將 ** YYYY-MM-DD **取代為您要檢查日誌檔案的日期。

對常見錯誤進行疑難排解

錯誤: 啟動新的 EC2 執行個體。狀態原因: 此帳戶目前已被封鎖,且無法辨識為有效帳戶。如果您有任何疑問,請聯絡 aws-verification@amazon.com。啟動 EC2 執行個體失敗。

當您的 AWS 帳戶遭到封鎖且 Amazon 無法識別您的帳戶時,就會發生此錯誤。若要解除封鎖帳戶,請傳送電子郵件至 ** aws-verification@amazon.com **,要求 AWS 解除封鎖您的帳戶。

錯誤:重新註冊: ClientException: 容器執行個體 12345678910abcdefghixzy 處於非作用中狀態。\ n\ t 狀態代碼: 400,請求 ID: 012345678a-012345b-012ab-0a1-9f645f4s5c12" module=agent.go

Amazon ECS 容器代理程式無法使用叢集註冊 EC2 容器執行個體時,就會發生此錯誤,因為 EC2 執行個體處於非使用中狀態。此錯誤與執行個體上執行的應用程式有關。要瞭解錯誤的原因,請先檢查應用程式。如果錯誤仍然存在,請檢查 Amazon ECS 容器代理程式日誌。

錯誤: 很少執行個體可以加入叢集,但使用相同的設定,其他執行個體無法加入叢集。

當特定 API 呼叫超過速率配額並導致 ThrottlingException 時,會發生此錯誤。如需詳細資訊,請參閱 Amazon ECS API 的要求限流。若要解決此錯誤,請提升帳戶層級的速率配額。使用 AWS CloudTrail 檢查常見的 API 呼叫,例如 ListTasksRegisterContainerInstance

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

Amazon 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 個月前