欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Kubernetes的Job資源對象怎么用-創(chuàng)新互聯(lián)

Kubernetes的Job資源對象怎么用?相信大部分人都還不知道Job資源對象的使用方法,為了讓大家學會,給大家總結了以下內容,話不多說,一起往下看吧。

網站的建設成都創(chuàng)新互聯(lián)公司專注網站定制,經驗豐富,不做模板,主營網站定制開發(fā).小程序定制開發(fā),H5頁面制作!給你煥然一新的設計體驗!已為玻璃鋼雕塑等企業(yè)提供專業(yè)服務。

概念

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

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

環(huán)境介紹

主機IP地址服務
master192.168.1.21k8s
node01192.168.1.22k8s
node02192.168.1.23k8s

基于[ https://blog.51cto.com/14320361/2464655]() 的實驗繼續(xù)進行

一、kubernetes支持以下幾種job

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

Job Controller

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

例子

(1)編寫一個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資源對象怎么用

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

Kubernetes的Job資源對象怎么用

我們可以看到job與其他資源對象不同,僅執(zhí)行一次性任務,默認pod借宿運行后job即結束,狀態(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資源對象怎么用

它會一直創(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資源對象怎么用

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

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

1. 我們可以在Job.spec字段下加上[parallelism]()選項。表示同時運行多少個Pod執(zhí)行任務。


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

[root@master yaml]# vim jop.yaml
kind: Job
apiVersion: batch/v1
metadata:
  name: test-job
spec:
  parallelism: 2   #同時啟用幾個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資源對象怎么用

查看日志

Kubernetes的Job資源對象怎么用

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

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

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

job 字段解釋:

completions:標志Job結束需要成功運行的Pod個數(shù),默認為1
parallelism:標志并行運行的Pod的個數(shù),默認為1
activeDeadlineSeconds:標志失敗Pod的重試大時間,超過這個時間不會繼續(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資源對象怎么用
可以看到pod是兩個兩個的啟動的。

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

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

[root@master yaml]# vim cronjop.yaml
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

(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資源對象怎么用

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

Kubernetes的Job資源對象怎么用

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

練習:規(guī)定2020.1.15.10.5分運行上面的crontab任務。

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

[root@master yaml]# vim cronjop.yaml
kind: CronJob
apiVersion: batch/v1beta1
metadata:
  name: hello
spec:
  schedule: "5 10 15 1 *" #限定時間
  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資源對象怎么用

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

(5)添加apiVersion庫

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

Kubernetes的Job資源對象怎么用

(6)重啟kubelet

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

(7)查看api版本

[root@master yaml]# kubectl api-versions

Kubernetes的Job資源對象怎么用

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

[root@master yaml]# vim cronjop.yaml
kind: CronJob
apiVersion: batch/v1beta1
metadata:
  name: hello
spec:
  schedule: "47 10 15 1 *" #限定時間
  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資源對象怎么用

注意:此時仍然不能正常運行指定時間的Job,這是因為K8s官方在cronjob這個資源對象的支持中還沒有完善此功能,還待開發(fā)。

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

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

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

當前名稱:Kubernetes的Job資源對象怎么用-創(chuàng)新互聯(lián)
文章地址:http://chinadenli.net/article28/dgjicp.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供外貿建站網站設計、ChatGPT關鍵詞優(yōu)化、軟件開發(fā)、網站建設

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網站托管運營