Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes作业与集装箱制造状态下的吊舱_Kubernetes_Job Scheduling_Kubernetes Pod - Fatal编程技术网

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分钟后失败,而不是我必须围绕它编写脚本。