kubernetes實踐之五十八:CronJob

百聯達發表於2018-06-12
一: 簡介
CronJob即定時任務,就類似於Linux系統的crontab,在指定的時間週期執行指定的任務。
1.在給定時間點只執行一次
2.
週期性地在給定時間點執行

二:CronJob定義
1
.spec.schedule指定任務執行週期,格式同Cron
2.spec.jobTemplate指定需要執行的任務,格式同Job
3.spec.startingDeadlineSeconds指定任務開始的截止期限
4
.spec.concurrencyPolicy指定任務的併發策略,支援Allow、Forbid和Replace三個選項

三:示例

點選(此處)摺疊或開啟

  1. apiVersion: batch/v1beta1
  2. kind: CronJob
  3. metadata:
  4.   name: hello
  5. spec:
  6.   schedule: "*/1 * * * *"
  7.   jobTemplate:
  8.     spec:
  9.       template:
  10.         spec:
  11.           containers:
  12.           - name: hello
  13.             image: busybox
  14.             args:
  15.             - /bin/sh
  16.             - -c
  17.             - date; echo Hello from the Kubernetes cluster
  18.           restartPolicy: OnFailure
1. kubectl create -f croJob.yaml
2. kubectl get cronjob hello
3.
kubectl get jobs --watch  監控job執行情況

四:其它
1.Cron Job在每次排程執行時間內大概會建立一個Job物件。我們之所以說大概是因為在特定的環境下可能會建立兩個 Job,或者一個 Job 都沒建立。我們嘗試少發生這種情況,但卻不能完全避免。因此,建立 Job 操作應該是 冪等的。
Job 根據它所建立的 Pod 的並行度,負責重試建立 Pod,並就決定這一組 Pod 的成功或失敗。Cron Job 根本就不會去檢查 Pod。

2.一旦不再需要 Cron Job,簡單地可以使用 kubectl 命令刪除它:kubectl delete cronjob hello。 這將會終止正在建立的 Job。然而,執行中的 Job 將不會被終止,不會刪除 Job 或 它們的 Pod。為了清理那些 Job 和 Pod,需要列出該 Cron Job 建立的全部 Job,然後刪除它們。

3.一旦 Job 被刪除,由 Job 建立的 Pod 也會被刪除。注意,所有由名稱為 “hello” 的 Cron Job 建立的 Job 會以字首字串 “hello-” 進行命名。如果想要刪除當前 Namespace 中的所有 Job,可以透過命令 kubectl delete jobs --all 立刻刪除它們。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2156046/,如需轉載,請註明出處,否則將追究法律責任。

相關文章