kubernetes - Kubernetes Job 和 Pod 中 activeDeadlineSeconds 的区别
问题描述
Kubernetes 为两者提供了一个activeDeadlineSeconds
字段JobSpec
PodSpec
两者有什么区别?我已经完成了一项activeDeadlineSeconds
设置为 20 的小工作,在其 Pod 定义中我将activeDeadlineSeconds
字段设置为 45。这些有点随意,但意味着要间隔开。当我创建/应用作业然后运行kubectl get pods -a --watch
时,我可以看到 20 截止日期没有任何影响,但第二个截止日期是(我看到了DeadlineExceeded
输出)。
为了更加确定,我terminationGracePeriodSeconds: 10
在 PodSpec 中添加并看到了同样的东西。
工作中的目的是什么activeDeadlineSeconds
?它似乎没有向我的容器发送任何信号。
注意:我只是在图像上运行sleep
命令。ubuntu
当接收到 Kubernetes 发送的 TERM 信号时,该命令应该退出(所以我预计 20 秒后会有一个 TERM 信号,然后 Pod 很快就会死掉)
精简 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']
参考:
解决方案
未来的社区维基答案:
根据@Clorichel,此问题已在 k8s v1.8 https://github.com/kubernetes/kubernetes/issues/32149中修复
我的建议是将您的集群升级到最新版本,如果可以访问最新的功能和错误修复。
推荐阅读
- r - R:如何使用其他列中的数据在一列中创建多个新值并为每个新值重复行?
- ios - 从 Bundle 在 Facebook 上分享视频 - Swift
- scala - Future 中的空 while 循环导致 Future 永远不会在 Scala 中返回
- r - R markdown ioslides 演示布局
- c# - Http Web请求,url不存在和url存在但下载时发出的区别
- android - 如何从身份提供者会话中获取 Cognito 用户池 jwt 令牌
- r - nchar(Terms(x), type = "chars") 中的错误:检查文档术语矩阵时,无效的多字节字符串,元素 204
- sbt - SBT 的 dependsOn 没有将所有传递项目添加到类路径
- java - Hibernate OneToMany 创建许多记录
- django - 如何使用 ModelMultipleChoiceField 在模板中获取用户的全名