- 文档首页
容器服务
弹性容器实例 VCI
用户指南
运维
VCI Pod 快速失败(Fail-fast)
运维
VCI Pod 快速失败(Fail-fast)
VCI Pod 快速失败(Fail-fast)
本文介绍如何在 VCI 场景下,通过故障处理策略开启 Pod 快速失败(Fail-fast)能力。当 VCI 实例因库存不足、规格不可用等原因创建失败时,系统可快速返回失败结果并透出明确标识,帮助用户及时感知并切换到备用方案(如从规格族 A 切换到 规格族 B),避免长时间无效等待。
默认情况下,VCI Pod 创建失败后会自动重试,通过退避算法持续尝试直至实例创建成功,适用于对成功率敏感、可等待库存的场景。但在 GPU 等稀缺资源场景下,该机制会导致 Pod 长时间 Pending 并反复重试,需要用户等待 2~5 分钟才能确认失败,不满足实际业务场景需求。
为此,VCI 提供故障处理策略(Fail-strategy), 支持在 Pod 上声明快速失败行为,资源创建类任务失败时不再长时间重试,而是快速判定并透出明确失败原因,将确认失败的耗时从分钟级缩短到秒级。
Pod 快速失败能力通过在 Pod 上添加 Annotation 来开启。核心 Annotation 说明如下所示。
使用 VCI Pod 快速失败能力时,请注意以下限制。
- 已准备好备用方案,以便在快速失败后及时切换。切换方案示例,请参见本文下方 切换备用方案。
下文示例以通用型规格(vci.n3a.4c-8gi)的 Deployment 为例,通过将 Pod 子网指定到 cn-beijing-a 可用区,模拟vci.n3a规格在该可用区无库存,从而验证开启快速失败后的效果。各地域和可用区支持的 VCI 规格信息,请参见 地域和可用区。VCI Pod 子网配置方法,请参见 管理虚拟节点。 工作负载中通过 Pod Annotations 开启快速失败。
- 使用 kubectl 连接集群。详情请参见 连接集群。
- 创建 Deployment 的 YAML 文件。示例文件vci-failfast-demo.yaml代码如下。
开启快速失败后,Pod 不会直接变为 Failed,而是在 Pod 的status.phase中显示状态为Pending,同时status.reason置为CreatePodError,并在status.message中给出具体失败原因,容器则停留在ContainerCreating状态。
- 执行以下命令,获取 Deployment 中 Pod 的名称。
- 执行以下命令,查看 Pod 的status字段。
上层工作负载或运维流程可根据快速失败标识,触发切换逻辑。例如在 GPU 无库存时,改为提交使用大核 CPU 规格的工作负载继续计算。下文提供两种方案,更多方案,您可以根据实际业务情况自行实现。
通过在同一个工作负载内追加备用规格来确保业务负载成功创建并正常运行。
VCI 中指定规格/规格族的相关 Annotation(例如preferred-instance-types)支持传入多个规格/规格族,用半角逗号分隔并按前后顺序排列优先级,高优先级规格无资源时使用低优先级规格/规格族创建实例。
说明
该方案将切换动作前置到创建阶段,多数库存波动无需人工介入即可自动兜底,快速失败仅在所有候选规格都不可用时触发。
快速失败后切换规格并重建 Pod,保证业务成功创建并正常运行。
当所有候选规格都无库存、Pod 已透出CreatePodError时,通过修改工作负载的规格 Annotation 切换到新的备用规格,并触发滚动更新重建 Pod。
- 切换到备用规格。以下命令将规格从vci.n3a.4c-8gi切换为备用规格vci.u1.4c-8gi。
说明
针对方案二,您可以自行实现一个自动化流程,由自定义控制器或运维脚本持续监听 Pod 的status.reason,一旦检测到CreatePodError,即按预设的备用规格列表自动执行上述 patch 与重建动作,实现无人工介入的快速切换。
最近更新时间:2026.08.24 15:44:26