k8s(job)
1.什么是job容器按照持续运行的时间可分为两类:服务类容器和工作类容器服务类容器通常持续提供服务,需要一直运行,比如HTTPServer、Daemon等。工作类容器则是一次性任务,比如批处理程序,完成后容器就退出Kubernetes的Deployment、ReplicaSet和DaemonSet都用于管理服务类容器;对于工作类容器,我们使用Job2. 配置文件myjob.yml我们在这...
1.什么是job
容器按照持续运行的时间可分为两类:服务类容器和工作类容器
服务类容器通常持续提供服务,需要一直运行,比如HTTPServer、Daemon等。工作类容器则是一次性任务,比如批处理程序,完成后容器就退出
Kubernetes的Deployment、ReplicaSet和DaemonSet都用于管理服务类容器;对于工作类容器,我们使用Job
2. 配置文件myjob.yml
我们在这个实验中要执行一个新的job服务
batch/v1 # 是当前Job的apiVersion
指明当前资源的类型为Job
restartPolicy指定什么情况下需要重启容器。对于Job,只能设置为Never或者OnFailure。对于其他controller(比如Deployment),可以设置为Always
3. job失败的情况
我们做个试验,修改myjob.yml,故意引入一个错误
kubectl describe pod # 查看某个Pod的启动日志
下面解释一个现象:为什么kubectl get pod会看到这么多个失败的Pod?
原因是:当第一个Pod启动时,容器失败退出,根据restartPolicy:Never,此失败容器不会被重启,但JobDESIRED的Pod是1,目前SUCCESSFUL为0,不满足,所以Job controller会启动新的Pod,直到SUCCESSFUL为1。对于我们这个例子,SUCCESSFUL永远也到不了1,所以Job controller会一直创建新的Pod。为了终止这个行为,只能删除Job
4.将restartPolicy设置为OnFailure
如果将restartPolicy设置为OnFailure会怎么样?下面我们实践一下,修改myjob.yml后重新启动
更多推荐
所有评论(0)