我正在使用Terraform(v0.12.28
)启动我的AWS环境(aws provider v2.70.0
)。
当我尝试使用terraform destroy
删除所有资源时,遇到以下错误:
error deleting subnet (subnet-XXX): timeout while waiting for state to become 'destroyed' (last state: 'pending', timeout: 20m0s)
我可以添加Terraform代码,但是我认为资源堆栈中没有什么特别的东西,基本上包括:
就我而言,问题似乎与附加到ALB的ENI有关-从AWS控制台可以看出:
在寻找解决方案时,我注意到这是一个常见问题,可能来自不同的资源和依赖类型。
我将在这个问题上重点解决与VPC组件(子网,ENI等)和依赖于它们的资源(负载均衡器, EC2,Lambda函数等)并且无法删除,可能是由于在删除之前需要分离阶段的事实。
我们将不胜感激任何帮助。
(*)此环境(DEV)的Terraform用户具有完整的管理员特权:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}
所以这不应该与政策有关。
相关问题示例:
Update: Issue affecting HashiCorp Terraform resource deletions after the VPC Improvements to AWS Lambda(解决方案不起作用-我具有AWS提供程序的更新版本)。
AWS VPC - cannot detach "in use" AWS Lambda VPC ENI
Lambda Associated EC2 Subnet and Security Group Deletion Issues and Improvements
AWS: deletion of subnet times out because of scaling group
Error waiting for internet gateway to detach / Cluster has node groups attached
答案 0 :(得分:0)
我在将服务(特别是负载均衡器)部署到集群后尝试销毁 EKS 集群时遇到了这个问题。为了解决这个问题,我手动删除了负载均衡器和与负载均衡器关联的安全组。
Terraform 不知道 k8s 提供的资源,也不会清理依赖的资源。
如果您不确定是什么资源阻止了 Terraform 破坏基础设施,您可以尝试以下方法:
terraform apply
恢复到良好状态,然后使用 kubectl
清理资源,然后再次运行 terraform destroy
。AmazonEKS
。此问题的另一个变体是 DependencyViolation
错误。例如:
删除 VPC 时出错:DependencyViolation:vpc 'vpc-xxxxx' 具有依赖关系,无法删除。状态码:400