为了防止Spot实例(即抢占式实例)到期引发节点意外退出,阿里云容器服务ACK可通过ack-node-problem-detector组件获取实例即将释放的信息并通知给您。本文主要介绍如何查看Spot实例到期状态。

前提条件

创建Kubernetes集群且安装最新版本的ack-node-problem-detector组件。具体操作,请参见创建Kubernetes托管版集群
  • 若需要新建集群,请选中安装node-problem-detector并创建事件中心
  • 若使用已有集群,请确认ack-node-problem-detector组件为最新版本。具体操作,请参见管理组件

背景信息

在阿里云容器服务ACK中,ECS实例作为节点支持着集群以及集群上运行的服务。根据ECS实例创建时的策略,某些实例(例如Spot实例、包年包月实例)存在到期自动释放问题。若在实例自动释放时未做Pod驱逐、节点排水、节点替换等前置处理,可能影响集群服务运行情况,Master节点意外退出可能引发集群级别的故障。为了防止Spot实例到期引发的节点意外退出问题,可通过ack-node-problem-detector组件的InstanceExpired状态获取实例即将释放的信息。

操作步骤

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,单击集群
  3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  4. 在集群管理页左侧导航栏中,选择节点管理 > 节点
  5. 节点页面,单击目标节点的名称或在目标节点右侧操作列选择更多 > 详情
  6. 在节点详情页面查看InstanceExpired类型的状态。
    状态区域查看InstanceExpired类型的状态。实例是否到期
    InstanceExpired的状态说明如下所示:
    InstanceExpired的状态 说明
    True InstanceExpired的状态为True内容InstanceToBeTerminated,表示Spot实例将到期,会被释放。
    False InstanceExpired的状态为False内容InstanceNotToBeTerminated,表示Spot实例还未到期,可持续使用。
    Unknown 表示插件运行错误,请提交工单解决。
    若InstanceExpired的状态为True,可在事件区域看到以下的事件。实例过期event

后续步骤

InstanceExpired的状态为True,表示Spot实例将到期释放。若您需要继续使用该节点上的服务,请将应用调度到其他节点上。具体操作,请参见调度应用Pod至指定节点