為什麼我無法刪除 Amazon ECS 叢集?
我無法刪除 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 服務
若要列出叢集中的所有服務,請執行以下 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 容器執行個體
若要列出所有已註冊的容器執行個體,請執行下列 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_COMPLETE 或 UPDATE_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 主控台刪除叢集。
相關資訊
- 語言
- 中文 (繁體)

相關內容
- 已提問 3 年前