Kubernetes为activeDeadlineSeconds
和JobSpec
提供了一个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']
参考文献:
答案 0 :(得分:2)
社区维基对未来的回答:
根据@Clorichel,此问题已在k8s v1.8中修复 https://github.com/kubernetes/kubernetes/issues/32149
我的建议是,如果可以访问最新功能和错误修复,则将群集升级到最新版本。