本次迭代的功能是基于k8s job实现的。与大家分享一下job相关内容。
相关资料
官方介绍:
http://kubernetes.io/docs/user-guide/jobs/
API:
http://kubernetes.io/docs/api-reference/batch/v1/operations/
分享内容
job与rc不同,包含的pod多用于执行一次性任务、批处理工作等,执行完成后pod便会停止(status.phase变为Succeeded)。这时通过kubectl get pods是看不到pod的,需要加“-a”参数。
RestartPolicy
job pod的template的RestartPolicy只能指定Never或OnFailure,当job未完成的情况下:
* 如果RestartPolicy指定Never,则job会在pod出现故障时创建新的pod,且故障pod不会消失。.status.failed加1。
* 如果RestartPolicy指定OnFailure,则job会在pod出现故障时其内部重启容器,而不是创建pod。.status.failed不变。
Never策略示例:
job.yaml如下所示,其中command故意将perl指令写错,这样pod将出现故障。
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
metadata:
name: pi
spec:
containers:
- name: pi
image: index.tenxcloud.com/sdvdxl/perl
command: ["perl1", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
创建job并查看job信息:
$ kubectl create -f job.yaml
job "pi" created
$ kubectl describe job/pi
Name: pi
Namespace: default
Image(s): index.tenxcloud.com/sdvdxl/perl
Selector: controller-uid=cb44e05e-18f7-11e6-b739-0800278856e6
Parallelism: 1
Completions: 1
Start Time: Fri, 13 May 2016 10:45:22 +0000
Labels: controller-uid=cb44e05e-18f7-11e6-b739-0800278856e6,job-name=pi
Pods Statuses: 1 Running / 0 Succeeded / 41 Failed
No volumes.
Events:
FirstSeen LastSeen Count From SubobjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
1m 1m 1 {job-controller } Normal SuccessfulCreate Created pod: pi-fvbql
1m 1m 1 {job-controller } Normal SuccessfulCreate Created pod: pi-f8qjn
1m 1m 1 {job-controller } Normal SuccessfulCreate Created pod: pi-83rn2
1m 1m 1 {job-controller } Normal SuccessfulCreate Created pod: pi-j525m
<