Job資源對(duì)象
服務(wù)類的Pod容器:RC、RS、DS、Deployment.
工作類的Pod容器:Job--->執(zhí)行一次,或者批量執(zhí)行處理程序,完成之后推出容器。
[root@master ~]# cat job.yaml
kind: Job
apiVersion: batch/v1
metadata:
name: test-job
spec:
template:
metadata:
name: test-job
spec:
containers:
創(chuàng)新互聯(lián)專注于企業(yè)
網(wǎng)絡(luò)營(yíng)銷推廣、網(wǎng)站重做改版、措美網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、
H5場(chǎng)景定制、
商城網(wǎng)站定制開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為措美等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
- name: hello
image: busybox
command: ["echo","hello k8s job!"]
restartPolicy: Never
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
test-job-qgc6p 0/1 Completed 0 55s
[root@master ~]# kubectl logs test-job-qgc6p
hello k8s job!
PS:注意,如果容器內(nèi)執(zhí)行任務(wù)有誤,會(huì)根據(jù)容器的重啟策略操作容器,不過(guò)這里的容器重啟策略只能是:Never、OnFailure
提高Job的執(zhí)行效率
我們可以在Job.spec字段下加上parallelism選項(xiàng)。表示同時(shí)運(yùn)行多少個(gè)Pod執(zhí)行任務(wù)
我們可以在Job.spec字段下加上completions選項(xiàng)。表示總共需要完成Pod的數(shù)量。
[root@master ~]# cat job.yaml
kind: Job
apiVersion: batch/v1
metadata:
name: test-job
spec:
completions: 8 //總共需要完成多少個(gè)Pod
parallelism: 2 //同時(shí)運(yùn)行幾個(gè)pod
template:
metadata:
name: test-job
spec:
containers: - name: hello
image: busybox
command: ["echo","hello k8s job!"]
restartPolicy: OnFailure
如何定時(shí)執(zhí)行Job
kind: CronJob
apiVersion: batch/v1beta1
metadata:
name: hello
spec:
schedule: "/1 *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
command: ["echo","hello cronjob!"]
restartPolicy: OnFailure
[root@master ~]# kubectl apply -f cronjob.yaml
[root@master ~]# kubectl get cronjobs.batch
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
hello /1 * False 0 47s 51s
[root@master ~]# kubectl logs hello-1579053480-vpm6t
hello cronjob!
此時(shí)查看Pod的狀態(tài),會(huì)發(fā)現(xiàn),每分鐘都會(huì)運(yùn)行一個(gè)新的Pod來(lái)執(zhí)行命令規(guī)定的任務(wù)。
練習(xí):
規(guī)定2020年1月15號(hào)上午十點(diǎn)五分運(yùn)行上面的crontab任務(wù)。
[root@master ~]# cat cronjob.yaml
kind: CronJob
apiVersion: batch/v1beta1
metadata:
name: hello
spec:
schedule: "5 10 15 1 3"
jobTemplate:
spec:
template:
spec:
containers: - name: hello
image: busybox
command: ["echo","hello cronjob!"]
restartPolicy: OnFailure
這時(shí)會(huì)發(fā)現(xiàn),如果規(guī)定具體時(shí)間,可能并不會(huì)執(zhí)行任務(wù)。
[root@master ~]# kubectl api-versions //查看api版本
添加apiVersion庫(kù)。
[root@master ~]# vim /etc/kubernetes/manifests/kube-apiserver.yaml
//在yaml文件中添加
- --runtime-config=batch/v2alpha1=true
然后重啟kubelet服務(wù),重新識(shí)別api yaml文件內(nèi)容即可。
//查看api版本庫(kù)
[root@master ~]# kubectl api-versions
PS:注意,此時(shí)任然不能正常運(yùn)行指定時(shí)間的job,這時(shí)因?yàn)閗8s官方在cronjob這個(gè)資源對(duì)象的支持中還沒(méi)有完善此功能。還待開發(fā)。
跟job資源一樣在cronjob.spec.jobTemplate.spec下同樣支持并發(fā)Job參數(shù):parallelism,也支持完成Pod的總數(shù)參數(shù):completions
分享文章:job資源對(duì)象-創(chuàng)新互聯(lián)
網(wǎng)站URL:
http://weahome.cn/article/ccddde.html