跳至內容

為什麼我無法刪除 Amazon ECS 叢集?

3 分的閱讀內容
0

我無法刪除 Amazon Elastic Container Service (Amazon ECS) 叢集。

簡短說明

當您嘗試刪除叢集時,可能會收到下列其中一個錯誤訊息:

  • 「操作期間發生錯誤『DeleteClusters SDK 錯誤: 任務處於作用中狀態時無法刪除叢集。(服務: AmazonECS;狀態碼: 400;錯誤代碼: ClusterContainsTasksException;請求 ID: 144948ca-1614-40e7-a08b-80d7f1fe38f6; Proxy: null』。「(RequestToken: f389c9fe-8ce3-855c-581a-ebe32a9a9901,HandlerErrorCode: GeneralServiceException)」
  • 「操作期間發生錯誤『DeleteClusters SDK 錯誤: 服務處於作用中狀態時無法刪除叢集。(服務: AmazonECS;狀態碼: 400;錯誤代碼: ClusterContainsServicesException;請求 ID: 1eb29389-dab7-4345-a453-cde2c2b54c60; Proxy: null)』。「(RequestToken: ec646d54-de77-f96c-d9a6-ac04c520f45a, HandlerErrorCode: GeneralServiceException)」
  • 「錯誤:刪除 ECS 叢集 (arn:aws:ecs:REGION:000000000000:cluster/my-ecs-cluster):作業錯誤 ECS: DeleteCluster,https 回應錯誤 StatusCode: 400, RequestID: 128b7de0-45e3-4130-8c8c-dcceb27a8bb9, ClusterContainsContainerInstancesException: 當容器執行個體處於活動狀態或耗盡時,無法刪除叢集。」
  • 「呼叫 DeleteCluster 作業時發生錯誤 (UpdateInProgressException): 指定的叢集處於忙碌狀態。叢集附件必須處於 UPDATE_COMPLETE 或 UPDATE_FAILED 狀態才能進行更新。請稍候,然後再試一次。」

若要刪除 Amazon ECS 叢集,您必須先刪除所有服務、停止所有正在執行的任務、取消註冊所有容器執行個體,並刪除所有命名空間。

解決方法

注意: 如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,則請參閱對 AWS CLI 進行錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

(選用) 識別 Amazon ECS 服務命名空間

在刪除服務和任務之前,最佳做法是確定與您服務相關的非必要 AWS Cloud Map 命名空間。

如果您的服務使用服務探索,請執行以下 describe-services AWS CLI 命令來識別服務探索服務 ARN:

aws ecs describe-services --cluster CLUSTER_NAME --service SERVICE_ARN --query services[*].serviceRegistries[*].registryArn --output text

注意: 將 **CLUSTER_NAME **替換為叢集名稱,將 SERVICE_ARN 替換為 Amazon ECS 服務 ARN。

然後,執行以下 get-service 命令來識別命名空間 ID:

aws servicediscovery get-service --id SERVICE_ID --query Service.NamespaceId --output text

注意:SERVICE_ID 替換為服務探索服務 ID。

如果您的服務使用 Service Connect,請執行下列 describe-services 命令來識別命名空間 ID:

aws ecs describe-services --cluster CLUSTER_NAME --service SERVICE_ARN --query services[*].deployments[].serviceConnectConfiguration.namespace --output text

注意: 將 **CLUSTER_NAME **替換為叢集名稱,將 SERVICE_ARN 替換為 Amazon ECS 服務 ARN。

停止所有正在執行的任務

若要列出所有正在執行的任務,請執行以下 list-tasks 命令:

aws ecs list-tasks --cluster CLUSTER_NAME --region REGION

注意:CLUSTER_NAME 替換為叢集名稱,將 REGION 替換為您的 AWS 區域。

若要停止任務,請執行下列 stop-task 命令:

aws ecs stop-task --cluster CLUSTER_NAME --task TASK_ARN --region REGION

注意:CLUSTER_NAME 替換為叢集名稱,將 TASK_ARN 替換為任務 ARN,將 REGION 替換為您的區域。

或者,使用 Amazon ECS 主控台停止任務

刪除 Amazon ECS 服務

若要列出叢集中的所有服務,請執行以下 list-services 命令:

aws ecs list-services --cluster CLUSTER_NAME

注意:CLUSTER_NAME 替換為叢集名稱。

若要刪除服務,請執行以下 delete-service 命令:

aws ecs delete-service --cluster CLUSTER_NAME --service SERVICE_ARN --force --region REGION

注意:CLUSTER_NAME 替換為叢集名稱,將 SERVICE_ARN 替換為服務 ARN,並將 REGION 替換為您的區域。

或者,使用 Amazon ECS 主控台來刪除服務

取消註冊 Amazon ECS 容器執行個體

若要列出所有已註冊的容器執行個體,請執行下列 list-container-instances 命令:

aws ecs list-container-instances --cluster CLUSTER_NAME --region REGION --output text --query containerInstanceArns

注意:CLUSTER_NAME 替換為叢集名稱,將 REGION 替換為您的區域。

若要從叢集中取消註冊容器執行個體,請執行下列 deregister-container-instance 命令:

aws ecs deregister-container-instance --cluster CLUSTER_NAME --region REGION --container-instance CONTAINER_INSTANCE_ARN --force

**注意:**將 CLUSTER_NAME 替換為叢集名稱,將 REGION 替換為您的區域,將 CONTAINER_INSTANCE_ARN 替換為容器執行個體 ARN。

或者,使用 Amazon ECS 主控台取消註冊容器執行個體

刪除命名空間

取消註冊所有服務執行個體

若要列出服務中的所有服務探索執行個體,請執行下列 list-instances 命令:

aws servicediscovery list-instances --service-id SERVICE_DISCOVERY_ID_EXAMPLE

注意:SERVICE_DISCOVERY_ID_EXAMPLE 替換為服務探索服務 ID。

若要從服務探索服務取消註冊執行個體,請執行以下 deregister-instance 命令:

aws servicediscovery deregister-instance --service-id SERVICE_DISCOVERY_ID_EXAMPLE --instance-id INSTANCE_EXAMPLE

注意:SERVICE_DISCOVERY_ID_EXAMPLE 替換為服務探索服務 ID,將 INSTANCE_EXAMPLE 替換為執行個體 ID。

刪除所有服務探索服務

若要查看命名空間中的所有服務探索服務,請執行下列 list-services 命令:

aws servicediscovery list-services --filters Name=NAMESPACE_ID,Values=NAMESPACE_EXAMPLE,Condition=EQ

注意:NAMESPACE_EXAMPLE 替換為您的命名空間 ID。

若要刪除服務探索服務,請執行下列 delete-service 命令:

aws servicediscovery delete-service --id SERVICE_ID_EXAMPLE

注意:SERVICE_ID_EXAMPLE 替換為服務 ID。

刪除命名空間

若要刪除命名空間,請執行下列 delete-namespace 命令:

aws servicediscovery delete-namespace --id NAMESPACE_EXAMPLE

注意:NAMESPACE_EXAMPLE 替換為您的命名空間 ID。

或者,使用 AWS Cloud Map 主控台刪除命名空間

檢查叢集附件狀態

如果您將叢集與 Amazon EC2 Auto Scaling 群組容量供應商關聯,請檢查叢集附件的狀態。在刪除叢集之前,叢集附件必須具有 UPDATE_COMPLETEUPDATE_FAILED 狀態。如果您刪除具有 UPDATE_IN_PROGRESS 狀態叢集附件的叢集,則會收到 UpdateInProgressException 錯誤。

若要檢查您的叢集附件,請執行以下 describe-clusters 命令:

aws ecs describe-clusters --cluster CLUSTER_NAME --include ATTACHMENTS --query clusters\[\].attachmentsStatus

注意:CLUSTER_NAME 替換為叢集名稱。

如果叢集附件具有 UPDATE\IN\PROGRESS 狀態,請等到狀態自動解決後,再刪除該叢集。

(選用) 刪除與叢集關聯的容量供應商

若要查看與叢集關聯的容量供應商,請執行以下 describe-clusters 命令:

aws ecs describe-clusters --cluster CLUSTER_NAME --include ATTACHMENTS --query clusters\[\].capacityProviders[] --output text

注意:CLUSTER_NAME 替換為叢集名稱。

若要取消容量供應商與叢集的關聯,請執行以下 put-cluster-capacity-providers 命令:

aws ecs put-cluster-capacity-providers --cluster CLUSTER_NAME --capacity-providers [] --default-capacity-provider-strategy []

注意:CLUSTER_NAME 替換為叢集名稱。

若要刪除容量供應商,請執行以下 delete-capacity-provider 命令:

aws ecs delete-capacity-provider --capacity-provider CAPACITY_PROVIDER_NAME

注意:CAPACITY_PROVIDER_NAME 替換為容量供應商名稱。

或者,使用 Amazon ECS 主控台刪除容量供應商

刪除叢集

若要刪除叢集,請執行以下 delete-cluster 命令:

aws ecs delete-cluster --cluster CLUSTER_NAME

注意:CLUSTER_NAME 替換為叢集名稱。

或者,使用 Amazon ECS 主控台刪除叢集

相關資訊

當我為 Amazon ECS 叢集設定新容量供應商或更新現有容量供應商時,如何對發生的問題進行疑難排解?

AWS 官方已更新 1 年前