【问题标题】:Force terminate AutoScaling instances stuck in Pending:Wait强制终止卡在 Pending:Wait 中的 AutoScaling 实例
【发布时间】:2018-09-15 11:31:09
【问题描述】:

我有一个 AutoScaling 组,我在实例启动时使用 LifecycleHooks,其中一些由我控制,一些由其他 AWS 服务控制。我一直在添加/删除 LifecycleHooks 并更改 ASG 的大小,并且实例卡在 Pending:Wait 中。我认为这是因为它正在等待来自 LifecycleHook 的信号,但我无法让它让步。

我尝试了很多方法:

在 EC2 控制台中终止实例

我终止了实例,但 ASG 等待 LifecycleHook 心跳超时,然后才真正从 ASG 终止实例,这可能需要一个小时。

手动完成 LifecycleHooks

我尝试手动完成 LifecycleHooks,如下伪代码所示:

describeAutoScalingGroups -> asg {
    instances = getPending(asg.instances)
    describeLifecycleHooks -> lifecycleHooks {
        lifecycleHooks.each {
            instances.each {
                completeLifecycleAction(instance, hook)
            }
        }
    }
}

这并不能解决问题。我猜它等待的 LifecycleHook 已从 ASG 中删除,因此无法手动完成 LifecycleHook。

下一步是什么?

显然,我应该更加小心地以正确的顺序删除这些资源,所有这些以及减少心跳也会有所帮助,但是我如何强制终止 ASG 中的实例,无论它在等待什么?

【问题讨论】:

    标签: amazon-web-services autoscaling


    【解决方案1】:

    在控制台中终止 EC2 实例后,手动完成 LifecycleHook 对我有用:

    aws autoscaling complete-lifecycle-action --lifecycle-hook-name $HOOK --auto-scaling-group-name $ASG --lifecycle-action-result ABANDON --instance-id $ID
    

    【讨论】:

      【解决方案2】:

      今天遇到了这个问题,我可以使用 AWS CLI 强制删除。

      aws autoscaling delete-auto-scaling-group --auto-scaling-group-name <asg name> --force-delete
      

      但是请注意,要使其工作,您必须第一次使用--force-delete 参数本身,如果 ASG 已经处于挂起删除状态,这将不起作用。

      【讨论】:

      • 这不是同一个问题。我想终止一个特定的实例,而不是整个 ASG。不幸的是,终止实例 API 没有强制删除选项。
      猜你喜欢
      • 2014-02-16
      • 2017-12-31
      • 2015-02-24
      • 2020-06-15
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      • 2021-03-09
      • 2013-04-24
      相关资源
      最近更新 更多