容器按照持续运行的时间可分为两类:服务类容器和工作类容器。
服务类容器通常持续提供服务,需要一直运行,比如 http server,daemon 等。工作类容器则是一次性任务,比如批处理程序,完成后容器就退出。
Kubernetes 的 Deployment、ReplicaSet 和 DaemonSet 都用于管理服务类容器;对于工作类容器,我们用 Job。
先看一个简单的 Job 配置文件 myjob.yml:
① batch/v1
是当前 Job 的 apiVersion
。
② 指明当前资源的类型为 Job
。
③ restartPolicy
指定什么情况下需要重启容器。对于 Job,只能设置为 Never
或者 OnFailure
。对于其他 controller(比如 Deployment)可以设置为 Always
。
通过 kubectl apply -f myjob.yml
启动 Job。
kubectl get job
查看 Job 的状态:
DESIRED
和 SUCCESSFUL
都为 1
,表示按照预期启动了一个 Pod,并且已经成功执行。kubectl get pod
查看 Pod 的状态:
因为 Pod 执行完毕后容器已经退出,需要用 --show-all
才能查看 Completed
状态的 Pod。
kubectl logs
可以查看 Pod 的标准输出:
以上是 Pod 成功执行的情况,如果 Pod 失败了会怎么样呢?我们下一节讨论。
有学习K8S的思维脑图吗?
公众号cloudman6上有k8s教程的目录
大神的书一定要一直更下去呀!大神已经讲的很清楚了,最好在学完以后大神能设计有一整套实践示例,比如说设计一套完整的实践架构,同学们也能跟着大神操作,前段时间才看完大神的docker
照着每张的内容挨个实践就能达到你想要的那个效果
新版本的k8s,pod执行完毕容器已经退出,目前好像不用加--show-all也可以看到completed状态的pod。我的版本是1.11。