真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Kubernetes的Job資源對(duì)象怎么用

Kubernetes的Job資源對(duì)象怎么用?相信大部分人都還不知道Job資源對(duì)象的使用方法,為了讓大家學(xué)會(huì),給大家總結(jié)了以下內(nèi)容,話不多說(shuō),一起往下看吧。

我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、錫林郭勒盟ssl等。為超過千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的錫林郭勒盟網(wǎng)站制作公司

概念

在有些場(chǎng)景下,是想要運(yùn)行一些容器執(zhí)行某種特定的任務(wù),任務(wù)一旦執(zhí)行完成,容器也就沒有存在的必要了。在這種場(chǎng)景下,創(chuàng)建pod就顯得不那么合適。于是就是了Job,Job指的就是那些一次性任務(wù)。通過Job運(yùn)行一個(gè)容器,當(dāng)其任務(wù)執(zhí)行完以后,就自動(dòng)退出,集群也不再重新將其喚醒。

從程序的運(yùn)行形態(tài)上來(lái)區(qū)分,可以將Pod分為兩類:長(zhǎng)時(shí)運(yùn)行服務(wù)(jboss、MySQL等)和一次性任務(wù)(數(shù)據(jù)計(jì)算、測(cè)試)。RC創(chuàng)建的Pod都是長(zhǎng)時(shí)運(yùn)行的服務(wù),Job多用于執(zhí)行一次性任務(wù)、批處理工作等,執(zhí)行完成后便會(huì)停止(status.phase變?yōu)镾ucceeded)。

環(huán)境介紹

主機(jī)IP地址服務(wù)
master192.168.1.21k8s
node01192.168.1.22k8s
node02192.168.1.23k8s

基于[ https://blog.51cto.com/14320361/2464655]() 的實(shí)驗(yàn)繼續(xù)進(jìn)行

一、kubernetes支持以下幾種job

  • 非并行job:通常創(chuàng)建一個(gè)pod直至其成功結(jié)束。
  • 固定結(jié)束次數(shù)的job:設(shè)置spec.completions,創(chuàng)建多個(gè)pod,直到.spec.completions個(gè)pod成功結(jié)束。
  • 帶有工作隊(duì)列的并行job:設(shè)置.spec.Parallelism但不設(shè)置.spec.completions,當(dāng)所有pod結(jié)束并且至少一個(gè)成功時(shí),job就認(rèn)為是成功。

Job Controller

Job Controller負(fù)責(zé)根據(jù)Job Spec創(chuàng)建pod,并持續(xù)監(jiān)控pod的狀態(tài),直至其成功結(jié)束,如果失敗,則根據(jù)restartPolicy(只支持OnFailure和Never,不支持Always)決定是否創(chuàng)建新的pod再次重試任務(wù)。

例子

(1)編寫一個(gè)job的yaml文件

[root@master yaml]# vim jop.yaml
kind: Job
apiVersion: batch/v1
metadata:
  name: test-job
spec:
  template:
    metadata:
      name: test-job
    spec:
      containers:
      - name: hello
        image: busybox
        command: ["echo","hello k8s job!"]
      restartPolicy: Never

(2)執(zhí)行一下

[root@master yaml]# kubectl apply -f jop.yaml 

(3)查看一下

[root@master yaml]# kubectl get pod

Kubernetes的Job資源對(duì)象怎么用

查看日志
[root@master yaml]# kubectl logs test-job-gs45w 

Kubernetes的Job資源對(duì)象怎么用

我們可以看到j(luò)ob與其他資源對(duì)象不同,僅執(zhí)行一次性任務(wù),默認(rèn)pod借宿運(yùn)行后job即結(jié)束,狀態(tài)為Completed。

(4)修改一下jop的yaml文件,把echo命令換成亂碼

[root@master yaml]# vim jop.yaml
kind: Job
apiVersion: batch/v1
metadata:
  name: test-job
spec:
  template:
    metadata:
      name: test-job
    spec:
      containers:
      - name: hello
        image: busybox
        command: ["asdasxsddwefew","hello k8s job!"] #修改
      restartPolicy: Never

(5)先刪除之前的pod

[root@master yaml]# kubectl delete jobs.batch test-job 

(6)執(zhí)行一下

[root@master yaml]# kubectl apply -f jop.yaml 

(7)查看一下

[root@master yaml]# kubectl get pod -w

Kubernetes的Job資源對(duì)象怎么用

它會(huì)一直創(chuàng)建pod直到完成命令。

(8)修改一下jop的yaml文件,修改重啟策略

[root@master yaml]# vim jop.yaml 
kind: Job
apiVersion: batch/v1
metadata:
  name: test-job
spec:
  template:
    metadata:
      name: test-job
    spec:
      containers:
      - name: hello
        image: busybox
        command: ["asdasxsddwefew","hello k8s job!"]
      restartPolicy: OnFailure

(9)先刪除之前的pod

[root@master yaml]# kubectl delete jobs.batch test-job 

(10)執(zhí)行一下

[root@master yaml]# kubectl apply -f jop.yaml 

(11)查看一下

[root@master yaml]# kubectl get pod -w

Kubernetes的Job資源對(duì)象怎么用

它會(huì)一直重啟pod完成命令,直到重啟到一定次數(shù)就會(huì)刪除job。

二、提高Job的執(zhí)行效率

1. 我們可以在Job.spec字段下加上[parallelism]()選項(xiàng)。表示同時(shí)運(yùn)行多少個(gè)Pod執(zhí)行任務(wù)。


(1)編寫一個(gè)job的yaml文件

[root@master yaml]# vim jop.yaml
kind: Job
apiVersion: batch/v1
metadata:
  name: test-job
spec:
  parallelism: 2    #同時(shí)啟用幾個(gè)pod
  template:
    metadata:
      name: test-job
    spec:
      containers:
      - name: hello
        image: busybox
        command: ["echo","hello k8s job!"]
      restartPolicy: OnFailure

(3)執(zhí)行一下

[root@master yaml]# kubectl apply -f jop.yaml 

(4)查看一下

[root@master yaml]# kubectl get pod

Kubernetes的Job資源對(duì)象怎么用

查看日志

Kubernetes的Job資源對(duì)象怎么用

2. 我們可以在Job.spec字段下加上complations選項(xiàng)。表示總共需要完成Pod的數(shù)量

(1)編寫一個(gè)job的yaml文件

[root@master yaml]# vim jop.yaml
kind: Job
apiVersion: batch/v1
metadata:
  name: test-job
spec:
  complations: 8            #運(yùn)行pod的總數(shù)量8個(gè)
  parallelism: 2            #同時(shí)運(yùn)行2個(gè)pod
  template:
    metadata:
      name: test-job
    spec:
      containers:
      - name: hello
        image: busybox
        command: ["echo","hello k8s job!"]
      restartPolicy: OnFailure

job 字段解釋:

completions:標(biāo)志Job結(jié)束需要成功運(yùn)行的Pod個(gè)數(shù),默認(rèn)為1
parallelism:標(biāo)志并行運(yùn)行的Pod的個(gè)數(shù),默認(rèn)為1
activeDeadlineSeconds:標(biāo)志失敗Pod的重試最大時(shí)間,超過這個(gè)時(shí)間不會(huì)繼續(xù)重試.

(2)先刪除之前的pod

[root@master yaml]# kubectl delete jobs.batch test-job 

(3)執(zhí)行一下

[root@master yaml]# kubectl apply -f jop.yaml 

(4)查看一下

[root@master yaml]# kubectl get pod

Kubernetes的Job資源對(duì)象怎么用
可以看到pod是兩個(gè)兩個(gè)的啟動(dòng)的。

3. 如何定時(shí)執(zhí)行Job

(1)編寫一個(gè)cronjob的yaml文件

[root@master yaml]# vim cronjop.yaml
kind: CronJob
apiVersion: batch/v1beta1
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *" #限定時(shí)間
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            command: ["echo","hello","cronjob"]
          restartPolicy: OnFailure

(2)先刪除之前的pod

[root@master yaml]# kubectl delete jobs.batch test-job 

(3)執(zhí)行一下

[root@master yaml]# kubectl apply -f jop.yaml 

(4)查看一下

[root@master yaml]# kubectl get pod

Kubernetes的Job資源對(duì)象怎么用

[root@master yaml]# kubectl get cronjobs.batch 

Kubernetes的Job資源對(duì)象怎么用

此時(shí)查看Pod的狀態(tài),會(huì)發(fā)現(xiàn),每分鐘都會(huì)運(yùn)行一個(gè)新的Pod來(lái)執(zhí)行命令規(guī)定的任
務(wù)。

練習(xí):規(guī)定2020.1.15.10.5分運(yùn)行上面的crontab任務(wù)。

(1)編寫一個(gè)cronjob的yaml文件

[root@master yaml]# vim cronjop.yaml
kind: CronJob
apiVersion: batch/v1beta1
metadata:
  name: hello
spec:
  schedule: "5 10 15 1 *" #限定時(shí)間
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            command: ["echo","hello","cronjob"]
          restartPolicy: OnFailure

(2)先刪除之前的pod

[root@master yaml]# kubectl delete cronjobs.batch hello 

(3)執(zhí)行一下

[root@master yaml]# kubectl apply -f jop.yaml 

(4)查看一下

[root@master yaml]# kubectl get pod

Kubernetes的Job資源對(duì)象怎么用

這時(shí)會(huì)發(fā)現(xiàn),如果規(guī)定具體時(shí)間,可能并不會(huì)執(zhí)行任務(wù)。

(5)添加apiVersion庫(kù)

[root@master yaml]# vim /etc/kubernetes/manifests/kube-apiserver.yaml 
spec:
  containers:
  - command:
    - kube-apiserver
    - --runtime-config=batch/v2alpha1=true    #添加

Kubernetes的Job資源對(duì)象怎么用

(6)重啟kubelet

[root@master yaml]# systemctl restart kubelet.service 

(7)查看api版本

[root@master yaml]# kubectl api-versions 

Kubernetes的Job資源對(duì)象怎么用

(8)編寫一個(gè)cronjob的yaml文件

[root@master yaml]# vim cronjop.yaml
kind: CronJob
apiVersion: batch/v1beta1
metadata:
  name: hello
spec:
  schedule: "47 10 15 1 *" #限定時(shí)間
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            command: ["echo","hello","cronjob"]
          restartPolicy: OnFailure

(9)執(zhí)行一下

[root@master yaml]# kubectl apply -f jop.yaml 

(4)查看一下

[root@master yaml]# kubectl get pod -w

Kubernetes的Job資源對(duì)象怎么用

注意:此時(shí)仍然不能正常運(yùn)行指定時(shí)間的Job,這是因?yàn)镵8s官方在cronjob這個(gè)資源對(duì)象的支持中還沒有完善此功能,還待開發(fā)。

跟Job資源一樣在cronjob.spec.jobTemplate.spec 下同樣支持并發(fā)Job參數(shù):
parallelism,也支持完成Pod的總數(shù)參數(shù): completionsr

以上就是Kubernetes的Job資源對(duì)象的使用方法,看完之后是否有所收獲呢?如果想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊!


網(wǎng)站名稱:Kubernetes的Job資源對(duì)象怎么用
新聞來(lái)源:http://weahome.cn/article/jehgoi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部