为什么我无法删除我的 Amazon ECS 集群?
我无法删除我的 Amazon Elastic Container Service (Amazon ECS) 集群。
简短描述
当您尝试删除集群时,您可能会收到以下错误消息之一:
- “操作时出现错误:‘DeleteClusters SDK 错误: 当任务处于活动状态时无法删除集群。(服务: AmazonECS;状态代码: 400;错误代码: ClusterContainsTasksException;请求 ID: 144948ca-1614-40e7-a08b-80d7f1fe38f6;代理:空)’。“(RequestToken:f389c9fe-8ce3-855c-581a-ebe32a9a9901,HandlerErrorCode: GeneralServiceException)”
- “操作时出现错误:‘DeleteClusters SDK 错误: 当服务处于活动状态时无法删除集群。(服务: AmazonECS;状态代码: 400;错误代码: ClusterContainsServicesException;请求 ID: 1eb29389-dab7-4345-a453-cde2c2b54c60;代理:空)’。“(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 命令行界面 (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。
删除命名空间
注销所有服务实例
要列出服务中的所有服务发现实例,请运行以下 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 控制台删除集群。
相关信息
- 语言
- 中文 (简体)
