设置BCI Pod的故障处理策略
更新时间:2025-03-06
默认情况下,BCI Pod创建失败后,系统会自动重试尝试创建。如果您希望尽快得到创建结果以便及时处理故障,可以修改BCI Pod的故障处理策略。
配置说明
在虚拟节点上创建BCI Pod时,可能会因为库存不足等原因导致Pod创建失败,默认情况下,系统会自动进行重调度,尝试重新创建Pod。您可以通过添加bci.virtual-kubelet.io/bci-fail-strategy的Annotation来修改BCI Pod的故障处理策略,设置BCI Pod创建失败后是否尝试重新创建。
重要
- Annotation请添加在Pod的metadata下,例如:创建Deployment时,Annotation需添加在spec>template>metadata下。
- 仅支持在创建BCI Pod时添加BCI相关Annotation来生效BCI功能,更新BCI Pod时添加或者修改BCI相关Annotation均不会生效。
bci.virtual-kubelet.io/bci-fail-strategy的取值说明如下:
取值 | 说明 | 场景 |
---|---|---|
fail-back | 失败自动恢复。即Pod创建失败后自动尝试重新创建。此时,Pod会保持Pending状态,直到创建成功变为Running状态。 | 侧重成功率,能够接受Pod延迟交付。 |
fail-over | 失败转移。效果等同于fail-back。 | 侧重成功率,能够接受Pod延迟交付。 |
fail-fast | 快速失败。Pod创建失败后直接报错。Pod显示为Pending状态,由上层编排决定是否重试,或者把Pod创建调度到普通节点。 | 侧重效率,希望Pod快速交付,有完善的失败处理逻辑。 |
配置示例
YAML
1apiVersion: apps/v1
2kind: Deployment
3metadata:
4 name: nginx
5 labels:
6 app: nginx
7spec:
8 replicas: 1
9 selector:
10 matchLabels:
11 app: nginx
12 template:
13 metadata:
14 name: nginx
15 labels:
16 app: nginx
17 annotations:
18 bci.virtual-kubelet.io/bci-fail-strategy: "fail-fast" #设置Pod故障处理策略,不再重新创建
19 spec:
20 containers:
21 - name: nginx
22 image: nginx:1.7.9
23 ports:
24 - containerPort: 80
25 resources:
26 limits:
27 cpu: "1"
28 memory: "2Gi"
29 restartPolicy: Always
以上YAML示例中,BCI Pod的故障处理策略为fail-fast。如果Pod长时间Pending,您可以查看Pod status.reason。
- 如果Pod status.reason为ContainerInstanceScheduleFailed,则表示BCI调度失败。此时查看Pod status condition,通过ContainerInstanceCreated的reason和message可以确定具体原因,进而采取相应措施,例如修改指定的规格,设置多可用区等。
-
如果Pod status.reason为空(fail-fast一般不会出现该情况),可以查看Pod status condition,通过ContainerInstanceCreated的status确认调度状态。
- 如果ContainerInstanceCreated为False,且reason不是Creating,则表示BCI调度还未成功,需要继续等待。 以库存不足创建BCI Pod失败为例,当Pod的故障处理策略为fail-fast时,Pod status condition为ContainerInstanceCreated的示例如下:
说明
如果Pod的故障处理策略为fail-back,Pod创建失败后系统会自动尝试重调度。此时,Pod status.reason不会显示ContainerInstanceScheduleFailed,您也可以查看Pod status condition,通过ContainerInstanceCreated的reason和message确定当前调度周期内调度失败的原因。
Plain Text
1{
2 "conditions": [
3 {
4 "lastProbeTime": "2025-03-04T15:13:26Z",
5 "lastTransitionTime": "2025-03-04T15:13:26Z",
6 "message": "Create BCI failed because the specified instance is out of stock",
7 "reason": "NoStock",
8 "status": "False",
9 "type": "ContainerInstanceCreated"
10 }
11 ],
12 "message": "Create BCI failed because the specified instance is out of stock",
13 "reason":"ContainerInstanceScheduleFailed",
14 "phase": "Pending"
15}