Job和Pod中activeDeadlineSeconds之间的Kubernetes区别

时间:2018-11-27 18:30:25

标签: kubernetes

Kubernetes为activeDeadlineSecondsJobSpec提供了一个PodSpec字段

两者之间有什么区别?我已经将activeDeadlineSeconds设置为20,完成了一份小工作,在Pod定义中,我将activeDeadlineSeconds字段设置为45。这些是任意的,但要隔开。当我创建/应用作业然后运行kubectl get pods -a --watch时,可以看到20个截止日期没有任何影响,但是第二个截止日期有效(我看到DeadlineExceeded的输出)。

为了更加确定,我在PodSpec中添加了terminationGracePeriodSeconds: 10并看到了相同的内容。

工作中activeDeadlineSeconds的目的是什么?它似乎没有向我的容器发送任何信号。

注意:我只是在sleep图像上运行ubuntu命令。当接收到Kubernetes发送的TERM信号时,该命令应该退出(因此,我希望在20秒后出现一个TERM信号,然后该容器不久就会死掉)

简明的YAML定义:

apiVersion: batch/v2alpha1  # K8s 1.7.x
kind: CronJob
spec:
  schedule: "*/1 * * * *"
  concurrencyPolicy: Allow
  jobTemplate:
    spec:  # JobSpec
      activeDeadlineSeconds: 20   # This needs to be shorter than the cron interval  ## TODO - NOT WORKING!
      parallelism: 1
      template:  # PodTemplateSpec
        spec:
          activeDeadlineSeconds: 45
          terminationGracePeriodSeconds: 10
          containers:
          - name: ubuntu-container
            image: ubuntu
            command: ['bash', '-c', 'sleep 500000']

参考文献:

1 个答案:

答案 0 :(得分:2)

社区维基对未来的回答:

根据@Clorichel,此问题已在k8s v1.8中修复 https://github.com/kubernetes/kubernetes/issues/32149

我的建议是,如果可以访问最新功能和错误修复,则将群集升级到最新版本。