用 k8s 运行一次性任务 — Kubernetes(19)steemCreated with Sketch.

in kubernetes •  7 years ago 

容器按照持续运行的时间可分为两类:服务类容器和工作类容器。

服务类容器通常持续提供服务,需要一直运行,比如 http server,daemon 等。工作类容器则是一次性任务,比如批处理程序,完成后容器就退出。

Kubernetes 的 Deployment、ReplicaSet 和 DaemonSet 都用于管理服务类容器;对于工作类容器,我们用 Job。

先看一个简单的 Job 配置文件 myjob.yml:

641.png

batch/v1 是当前 Job 的 apiVersion

② 指明当前资源的类型为 Job

restartPolicy 指定什么情况下需要重启容器。对于 Job,只能设置为 Never 或者 OnFailure。对于其他 controller(比如 Deployment)可以设置为 Always

通过 kubectl apply -f myjob.yml 启动 Job。

642.png

kubectl get job 查看 Job 的状态:

643.png

DESIREDSUCCESSFUL 都为 1,表示按照预期启动了一个 Pod,并且已经成功执行。kubectl get pod 查看 Pod 的状态:

644.png

因为 Pod 执行完毕后容器已经退出,需要用 --show-all 才能查看 Completed 状态的 Pod。

kubectl logs 可以查看 Pod 的标准输出:

645.png

以上是 Pod 成功执行的情况,如果 Pod 失败了会怎么样呢?我们下一节讨论。

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

有学习K8S的思维脑图吗?

公众号cloudman6上有k8s教程的目录

大神的书一定要一直更下去呀!大神已经讲的很清楚了,最好在学完以后大神能设计有一整套实践示例,比如说设计一套完整的实践架构,同学们也能跟着大神操作,前段时间才看完大神的docker

照着每张的内容挨个实践就能达到你想要的那个效果

新版本的k8s,pod执行完毕容器已经退出,目前好像不用加--show-all也可以看到completed状态的pod。我的版本是1.11。