You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
运维
VCI Pod 驱逐及防护
复制全文
下载 pdf
VCI Pod 驱逐及防护
Pod 驱逐是在 Kubernetes 上运行工作负载的正常行为。VCI 在一些计划或计划外的事件期间,包括不限于节点升级、节点宕机、节点资源运营等场景,可能会驱逐用户的 Pod 工作负载,以确保您使用的底层节点保持健康的状态,以及优化节点资源使用效率。为了保障您应用服务的可用性,我们提供了一系列防护策略,需要您针对您自身业务的特点进行自定义配置。​
场景说明​
包括但不限于以下场景中,VCI 可能会发起对业务 Pod 的驱逐操作:​
  • 节点异常(NotReady):VCI 业务节点由系统管理,用户不需要感知,但用户的业务 Pod 仍需调度和运行在这些节点上。当某个节点宕机或者处于 NotReady 状态时,VCI 将会开启节点自愈流程,此时节点上的 Pod 将会被驱逐。​
  • 节点升级:升级节点内核或其他模块时,可能需要触发节点重启操作。在节点重启前,VCI 会先对节点上的所有 Pod 进行驱逐。​
  • 资源调度运营:VCI 为了优化资源使用效率,会不定期进行资源运维操作,此时可能会对资源上的一些 Pod 进行驱逐,以进行资源碎片整合等资源效率优化操作。​
针对上述驱逐场景,VCI 将其分成如下两类:​
  • 异常场景下的被动驱逐:包括节点异常的场景。该场景下,由于已经发生异常并且正在进行自愈,因此对于此类场景中的 Pod 驱逐动作,VCI 不会 做过多防护。​
  • 正常场景下的主动驱逐:包括节点升级和资源调度运营。该场景下,由于 Pod 和节点处于正常状态,所以对此类场景的驱逐动作,VCI 会提供一些防护策略。​
驱逐防护说明​
干扰预算机制​
干扰预算机制(Pod Disruption Budgets,简称 PDB)是 Kubernetes 提供的应用级别驱逐防护策略,用于保证驱逐场景 Workload 层面的服务可用性。它可以对任意支持 Scale子资源 的 Workload 类型生效,包括原生的 Deployment 或者您自定义的 CRD。为 Pod 设置 PDB 相关操作,请参见 Kubernetes 官网文档。​
VCI 防护策略​
VCI 的运维防护策略可按如下说明配置:​
  • 集群级别配置:通过 vci-profile 文件,配置 Annotation key 为vci.volcengine.com/evict-min-available,value 为百分比(默认为 50%),表示驱逐后允许可用的 Pod 的最小数量。更多操作说明,请参见 通过配置 vci-profile 使用 VCI。​
  • 应用级别配置:直接通过 Kubernetes PDB 中的 minAvailable 语义配置,详细操作,请参见 Kubernetes 官网文档。​
如上两种防护策略可以同时存在于同一个集群,并同时生效。​
期望运行时长保障​
对于一些不可中断的计算型任务,如果您期望这类 Pod 在一定时间内不被主动驱逐,您可以预估一个计算任务执行的最长时间,并通过在 Pod 上添加 Annotation key 为:vci.volcengine.com/evict-delay-time, value 为具体时长(单位为秒)的方式设置期望运行时长。例如:为 Pod 添加 Annotation:vci.volcengine.com/evict-delay-time: 3600,则 VCI 会对该 Pod 发起的主动驱逐进行延后处理,以Pod.Status.StartAt为时间基准,确保 Pod 在此 3600 秒(即 1 小时)之后,才能被主动驱逐。​
驱逐通知​
VCI 针对驱逐场景下的应用可用性防护,提供了丰富的策略。除宕机等非计划内的被动驱逐场景以外,VCI 默认只按您设置的防护策略和期望运行时长保障进行驱逐动作,并在驱逐前几分钟通过 Kubernetes Event 向您的集群推送事件通知。驱逐通知分为以下三个部分:​
  • 主动运维实施前会对受影响的 VCI 实例(Pod)发送实例驱逐通知,该事件的提前通知时间可通过 Annotation:vci.volcengine.com/evict-notification-time进行配置,事件内容将标识具体执行运维操作的时间:​
  • ​
    level​
    reason​
    message​
    Warning​
    EvictNotification​
    The pod will be evicted by VCI after {second}, reason: {}​
    ​
  • 实例驱逐的 Kubernetes 事件内容如下:​
  • ​
    level​
    reason​
    message​
    Warning​
    Evicted​
    Pod has been evicted by VCI, reason: {}​
    ​
  • 防护策略不允许驱逐或驱逐执行失败等情况下,Pod 驱逐被取消的 Kubernetes 事件内容如下:​
  • ​
    level​
    reason​
    message​
    Warning​
    EvictCanceled​
    The pod evict by VCI is canceled, reason {}​
    ​
您可以通过事件中心配置相应的告警规则。详细操作,请参见 事件监控。​
配置信息​
VCI 实例运维防护策略和运维处理策略所支持的 Annotation 配置如下表所示。多 VCI 实例情况下,您可以通过 vci-profile 进行全局配置。详细操作,请参见 通过配置 vci-profile 使用 VCI。​
​
配置项​
默认值​
含义​
vci.volcengine.com/evict-min-available​
50%​
主动运维时,被驱逐后允许可用的 Pod 的最小数量百分比。​
vci.volcengine.com/evict-notification-time​
600​
主动运维时,提前通知用户的时间,单位为秒(s)。​
vci.volcengine.com/evict-delay-time​
0​
主动运维时,延迟执行驱逐的时长,单位为秒(s)。​
​
​
最近更新时间:2026.01.21 14:45:12
这个页面对您有帮助吗?
有用
有用
无用
无用