中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kubernetes中的Job和CronJob資源對象怎么用

發布時間:2020-06-05 14:00:31 來源:億速云 閱讀:307 作者:Leah 欄目:云計算

本文以Kubernetes中的Job和CronJob資源對象為例,為大家分析Kubernetes中的Job和CronJob資源對象的使用方法,閱讀完整文相信大家對Job和CronJob資源對象有了一定的認識。

一、Job

(1)Job概述

Job負責處理短暫的一次性任務,即僅執行一次的任務,它保證批處理任務的一個或多個pod成功結束。

Kubernetes支持以下幾種Job:

  • 非并行Job:通常創建一個Pod直到其成功結束;
  • 固定結束次數的Job:在spec字段下添加completions字段。創建多個Pod,直到滿足completions規定的數值。如果不添加的話,默認情況下是1個;
  • 帶有工作隊列的并行Job:在spec字段下添加Parallelism字段。表示幾個job同時并行工作。如果不添加的話,默認情況下是1個;

根據可以設置completions字段、Parallelism字段,可以將Job分為以下幾種:
Kubernetes中的Job和CronJob資源對象怎么用

(2)Job Controller

Job Controller負責根據Job yaml文件中Spec字段定義的內容創建Pod,并持續監控Job的狀態,直至其成功結束。如果失敗,則根據restartPolicy(只支持OnFailure和Never,不支持Always)決定是否創建新的pod再次重試任務。

如圖:
Kubernetes中的Job和CronJob資源對象怎么用

(3)應用示例

一個簡單的小示例:

[root@master job]# cat job.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
[root@master job]# kubectl apply -f job.yaml            //生成Job資源
[root@master job]# kubectl get job                        //查看Job
NAME       COMPLETIONS   DURATION   AGE
test-job   1/1           2s         5s
[root@master job]# kubectl get pod -o wide      //查看Job運行的詳細信息
NAME             READY   STATUS      RESTARTS   AGE   IP            NODE     NOMINATED NODE   READINESS GATES
test-job-rq9ws   0/1     Completed   0          25s   10.244.1.15   node01   <none>           <none>
[root@master job]# kubectl logs test-job-rq9ws             //查看通過Job生成的Pod的日志信息
hello k8s job
[root@master job]# kubectl delete jobs test-job        
//刪除Job,那么對應的pod也會被刪除!

(4)提高Job的執行效率

一個簡單的小示例:

[root@master job]# cat job.yaml 
kind: Job
apiVersion: batch/v1
metadata:
  name: test-job
spec:
  parallelism: 2
  completions: 10
  template:
    metadata:
      name: test-job
    spec:
      containers:
      - name: hello
        image: busybox
        command: ["echo","hello k8s job"]
      restartPolicy: Never
[root@master job]# kubectl apply -f job.yaml 
[root@master job]# kubectl get job
NAME       COMPLETIONS   DURATION   AGE
test-job   10/10         7s         15s
//可以看出是運行了10個任務

查看Job運行的詳細信息,如圖:
Kubernetes中的Job和CronJob資源對象怎么用
由這個示例可以查看:

  • parallelism:表示同時運行多少個Pod執行任務;
  • completions:表示總共需要完成的pod的數量;

一個簡單的小示例:

[root@master job]# cat job.yaml 
kind: Job
apiVersion: batch/v1
metadata:
  name: test-job
spec:
  backoffLimit: 5
  activeDeadlineSeconds: 100
  template:
    metadata:
      name: test-job
    spec:
      containers:
      - name: hello
        image: busybox
        command: ["echddddddo","hello k8s job"]
      restartPolicy: Never
[root@master job]# kubectl apply -f job.yaml 
[root@master job]# kubectl get job
NAME       COMPLETIONS   DURATION   AGE
test-job   0/1           2m28s      2m28s
[root@master job]# kubectl get pod 
NAME             READY   STATUS               RESTARTS   AGE
test-job-4lzsc   0/1     ContainerCannotRun   0          111s
test-job-8q659   0/1     ContainerCannotRun   0          2m42s
test-job-hjjbx   0/1     ContainerCannotRun   0          2m41s
test-job-qcf4z   0/1     ContainerCannotRun   0          2m31s

由這個示例可以看出:

  • backoffLimit:表示出現錯誤重試次數;
  • activeDeadlineSeconds:表示Job在集群中存活的時間;

關于Job就簡單介紹這么多了!

二、CronJob

CronJob即定時任務,類似于Linux系統中的crontab,在指定的時間周期運行指定的任務。

CronJob yaml文件中的spec字段下的schedule是用來定義的時間間隔的,其用法與crontab一樣(分、時、日、月、周);jobTemplate字段指定需要運行的任務;

在kubernetes 1.15中,使用CronJob需要使用API的batch/v2alpha1這個版本,但是,kubernetes本身并沒有這個版本,如下:

[root@master job]# kubectl api-versions | grep batch/v2alpha1

需要進行以下操作使Kubernetes群集支持這個batch/v2alpha1版本,操作如下:

[root@master ~]# vim /etc/kubernetes/manifests/kube-apiserver.yaml
在spec字段的command字段下添加以下內容:
    - --runtime-config=batch/v2alpha1=true
[root@master ~]# systemctl restart kubelet.service
//重啟kubelet服務
[root@master ~]# kubectl api-versions | grep batch/v2alpha1
batch/v2alpha1

為了防止內容添加發生錯誤,附上圖片一張:
Kubernetes中的Job和CronJob資源對象怎么用

(1)應用示例

[root@master job]# cat cronjob.yaml 
kind: CronJob
apiVersion: batch/v2alpha1
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            command: ["echo","hello cronjob"]
          restartPolicy: Never
[root@master job]# kubectl apply -f cronjob.yaml

查看效果:
Kubernetes中的Job和CronJob資源對象怎么用

這樣測試是沒有問題的,但是如果指定計劃任務時,就會發現它不會像預期的效果一樣!
如下:

[root@master job]# cat cronjob.yaml 
kind: CronJob
apiVersion: batch/v2alpha1
metadata:
  name: hello
spec:
  schedule: "18 16 15 1 3"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            command: ["echo","hello cronjob"]
          restartPolicy: Never
[root@master job]# date
2020年 01月 15日 星期三 16:18:48 CST
[root@master job]# kubectl get pod
No resources found.

關于Kubernetes中的Job和CronJob資源對象的使用方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

清丰县| 莱芜市| 赤壁市| 奉新县| 辉县市| 寿宁县| 阿城市| 奈曼旗| 威宁| 赤壁市| 灵寿县| 渭南市| 将乐县| 太谷县| 浏阳市| 五家渠市| 临颍县| 贺州市| 连南| 运城市| 巴林左旗| 佛山市| 仁化县| 册亨县| 宕昌县| 察哈| 黔西县| 九龙坡区| 古蔺县| 洛宁县| 漯河市| 满洲里市| 互助| 永福县| 景德镇市| 日照市| 固阳县| 泾川县| 上思县| 清徐县| 云梦县|