我在服务器端使用Kubernetes 1.26(EKS)和kubectl客户端1.27.1。
我有一个这样定义的工作:
apiVersion: batch/v1
kind: Job
metadata:
name: build
spec:
template:
spec:
restartPolicy: Never
volumes:
.....
containers:
- name: build-tool
....
我的pod由于OOMKilled或其他原因而死亡,然后Kubernetes启动另一个pod。为什么?
它不应该重新启动。
相关阅读:
1条答案
按热度按时间unhi4e5o1#
我想你错过了文档的这一部分:
由于多种原因,整个Pod也可能失败,例如当Pod被踢出节点(节点升级,重启,删除等)时,或者Pod的容器失败并且.spec.template.spec.restartPolicy =“Never”。**当Pod失败时,Job控制器会启动一个新的Pod。**这意味着您的应用需要处理在新Pod中重新启动的情况。特别是,它需要处理临时文件、锁、不完整的输出等由以前的运行引起的问题。
spec.template.spec.restartPolicy
的值影响Pod(docs)中失败 containers 的响应,但与Pod本身的失败无关。您可以通过设置podFailurePolicy来控制Job控制器如何响应失败的 Pod。