Fargate 的 Amazon ECS 任務卡在「待處理」狀態時,如何為其進行疑難排解?

2 分的閱讀內容
0

我在 AWS Fargate 上運行的 Amazon Elastic Container Service (Amazon ECS) 任務處於「待處理」狀態。

解決方法

檢查您的子網路使用哪些路由到網際網路

對於公有子網路中的 Fargate 任務:

確認您的 Fargate 任務具有指派的公用 IP 位址和網際網路閘道的預設路由 (0.0.0.0/0)。為了這麼做,請在開始任務或建立新服務時,選取啟用自動指派公用 IPv4 位址的核取方塊。如需詳細資訊,請參閱公用 IPv4 位址

**注意:**您無法為現有工作或服務選取「啟用自動指派公用 IPv4 位址」核取方塊。

對於私有子網路中的 Fargate 任務:

確認您的 Fargate 任務預設路由 (0.0.0.0/0) 到 NAT 閘道、AWS PrivateLink 或其他網際網路連線來源。

  • 如果您使用的是 NAT 閘道,請將 NAT 閘道置於公有子網路中。如需詳細資訊,請參閱使用網際網路閘道和 NAT 閘道的架構
  • 如果您使用的是 AWS PrivateLink,請確認您的 AWS PrivateLink 基礎架構可以將安全群組用於您的 Amazon Virtual Private Cloud (Amazon VPC) 端點

檢查您的網路存取控制清單和安全群組設定

確認您的網路存取控制清單 (網路 ACL) 和安全群組不會封鎖子網路對連接埠 443 的出埠存取。如需詳細資訊,請參閱使用安全群組控制資源的流量

**注意:**Fargate 任務必須具有連接埠 443 的出埠存取權,才能啟用出埠流量並到達 Amazon ECS 端點。

檢查您的 VPC 端點

如果您使用的是 AWS PrivateLink,請確認您擁有所需的端點。

Fargate 平台 1.3.0 或較舊版本的所需端點:

  • com.amazonaws.region.ecr.dkr
  • S3 閘道端點

Fargate 平台 1.4.0 或較新版本的所需端點:

  • com.amazonaws.region.ecr.dkr
  • com.amazonaws.region.ecr.api
  • S3 閘道端點

**注意:**如果您的任務定義使用 AWS Secrets Manager、SSM 參數或 Amazon CloudWatch Logs,您可能需要定義端點。如需詳細資訊,請參閱使用 AWS Secrets Manager VPC 端點搭配使用 CloudWatch Logs 與介面 VPC 端點

使用 PrivateLink 時,請確認 VPC 端點的安全群組允許 Fargate 基礎架構使用這些安全群組。

檢查您的 AWS Identity and Access Management (IAM) 角色和權限

任務執行角色對 Amazon ECS 容器和 Fargate 代理程式授予權限,藉以代表您進行 AWS API 呼叫。當您執行以下操作時,Fargate 需要此角色:

  • 從 Amazon Elastic Container Registry (Amazon ECR) 中提取容器映像檔
  • 使用 awslog 日誌驅動程式
  • 使用私人登錄驗證
  • 使用 Secrets Manager 秘密或 AWS Systems Manager Parameter Store 參數來參照敏感資料

如果您的使用方式涉及上述任何案例,請確認您的任務執行角色中定義了正確的權限。如需必要權限的完整清單,請參閱 Amazon ECS 任務執行 IAM 角色

檢查拉出圖像的問題

如果您收到 Fargate 任務的 cannotpullcontainer 錯誤,請完成下文中的步驟:如何解決我在 Fargate 上 Amazon ECS 任務中遭遇的『cannotpullcontainererror』錯誤?

雙堆疊模式下的 VPC

以雙堆疊模式與 Fargate 搭配使用 VPC 時,您可以將 VPC 配置為網際網路閘道或僅限出埠的網際網路閘道,藉此執行獲指派 IPv6 位址來存取網際網路的工作。如需詳細資訊,請參閱在雙堆疊模式下使用 VPC

**注意:**若要對問題進行疑難排解,您也可以使用 Amazon ECS Exec 從任務或服務的容器執行個體擷取日誌。

已定義容器相依性

在「任務定義」中定義的容器相依性可能會導致 Fargate 工作無限期處於「待處理」狀態。範例: 如果 containerA 依賴於 containerB 的特定狀態,則 containerA 預計將保持在「待處理」狀態,直到 containerB 達成該特定狀態為止。但是,如果 containerB 從未達成所需的狀態,則該任務會無限期保持在「待處理」狀態。確保您具有適當的相依性或評估相依性。

如需詳細資訊,請參閱容器相依性


AWS 官方
AWS 官方已更新 2 年前