Kubernetes作业与集装箱制造状态下的吊舱
我正在试图找出是否有办法强制一个卡在Kubernetes作业与集装箱制造状态下的吊舱,kubernetes,job-scheduling,kubernetes-pod,Kubernetes,Job Scheduling,Kubernetes Pod,我正在试图找出是否有办法强制一个卡在containerCreating状态的pod(出于无法装载不可访问的NFS等正当原因)在特定时间后移动到失败状态 我有Kubernetes作业,我正在Jenkins管道中运行。我使用作业状态(type:completed | failed)确定结果,然后收集作业结果(kubectl get pods+kubectl日志)。只要POD进入已知的故障状态,如ContainerCannotRun或Backofflimit,并且因此作业状态变为故障,它就可以正常工作
containerCreating
状态的pod(出于无法装载不可访问的NFS等正当原因)在特定时间后移动到失败状态
我有Kubernetes作业
,我正在Jenkins管道中运行。我使用作业状态(type:completed | failed
)确定结果,然后收集作业结果(kubectl get pods
+kubectl日志
)。只要POD进入已知的故障状态,如ContainerCannotRun
或Backofflimit
,并且因此作业
状态变为故障
,它就可以正常工作
出现问题的地方是pod进入containerCreating
状态并保持这种状态。然后,作业状态保持活动状态,并且永远不会更改。在作业
清单中,有没有一种方法可以强制处于容器创建
状态的pod在一定时间后移动到失败状态
例如:
吊舱状态
- image: myimage
imageID: ""
lastState: {}
name: primary
ready: false
restartCount: 0
state:
waiting:
reason: ContainerCreating
hostIP: x.y.z.y
phase: Pending
qosClass: BestEffort
startTime: "2020-05-06T17:09:58Z"
active: 1
startTime: "2020-05-06T17:09:58Z"
工作状态
- image: myimage
imageID: ""
lastState: {}
name: primary
ready: false
restartCount: 0
state:
waiting:
reason: ContainerCreating
hostIP: x.y.z.y
phase: Pending
qosClass: BestEffort
startTime: "2020-05-06T17:09:58Z"
active: 1
startTime: "2020-05-06T17:09:58Z"
感谢您的输入。如文件所述,使用activeDeadlineSeconds
或backoffLimit
activeDeadlineSeconds
适用于作业的持续时间,无论创建了多少POD。一旦作业达到activeDeadlineSeconds
,其所有正在运行的pod都将终止,作业状态将变为类型:失败,原因:deadlineextended
一旦达到退避限制,作业将被标记为失败,任何正在运行的POD将被终止
请注意,作业的activeDeadlineSeconds
优先于其backoffLimit
。因此,重试一个或多个失败的POD的作业在达到activeDeadlineSeconds
指定的时间限制后将不会部署额外的POD,即使尚未达到backoffLimit
apiVersion: batch/v1
kind: Job
metadata:
name: pi-with-timeout
spec:
backoffLimit: 5
activeDeadlineSeconds: 100
template:
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
不幸的是,这不起作用。pod没有故障,它处于
容器创建
状态。您的建议是我已经使用的pod在CrashbackLoopOff
或ContainerCannotRun
状态下失败。那么,是什么让pod保持在containerCreating中呢?有人在执行作业时输入了错误的NFS远程路径。我知道如何解决这个问题,我只需要在pod陷入这种状态时自动销毁作业。我希望有一种方法可以在containerCreating
状态下的一个pod在X分钟后失败,而不是我必须围绕它编写脚本。