kubernetes實踐之五十八:CronJob
一: 簡介
CronJob即定時任務,就類似於Linux系統的crontab,在指定的時間週期執行指定的任務。
1.在給定時間點只執行一次
2.週期性地在給定時間點執行
二:CronJob定義
1.spec.schedule指定任務執行週期,格式同Cron
2.spec.jobTemplate指定需要執行的任務,格式同Job
3.spec.startingDeadlineSeconds指定任務開始的截止期限
4.spec.concurrencyPolicy指定任務的併發策略,支援Allow、Forbid和Replace三個選項
三:示例
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 立刻刪除它們。
CronJob即定時任務,就類似於Linux系統的crontab,在指定的時間週期執行指定的任務。
1.在給定時間點只執行一次
2.週期性地在給定時間點執行
二:CronJob定義
1.spec.schedule指定任務執行週期,格式同Cron
2.spec.jobTemplate指定需要執行的任務,格式同Job
3.spec.startingDeadlineSeconds指定任務開始的截止期限
4.spec.concurrencyPolicy指定任務的併發策略,支援Allow、Forbid和Replace三個選項
三:示例
點選(此處)摺疊或開啟
-
apiVersion: batch/v1beta1
-
kind: CronJob
-
metadata:
-
name: hello
-
spec:
-
schedule: "*/1 * * * *"
-
jobTemplate:
-
spec:
-
template:
-
spec:
-
containers:
-
- name: hello
-
image: busybox
-
args:
-
- /bin/sh
-
- -c
-
- date; echo Hello from the Kubernetes cluster
- restartPolicy: OnFailure
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,然後刪除它們。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2156046/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- kubernetes實踐之十一:EFK
- kubernetes實踐之五十二:Helm
- kubernetes實踐之五十七:PodPreset
- kubernetes實踐之十七:架構架構
- kubernetes實踐之十九:API概述API
- kubernetes實踐之六十:Cabin-Manage Kubernetes
- kubernetes實踐之五十九:NetworkPolicy
- kubernetes實踐之六十四:CoreDNSDNS
- kubernetes實踐之九:kube-dnsDNS
- kubernetes實踐之五:網路模型模型
- kubernetes實踐之五十六:雲原生
- kubernetes實踐之四十二:StatefulSet
- kubernetes生產實踐之redis-clusterRedis
- GitOps實踐之kubernetes安裝argocdGitGo
- kubernetes實踐之六十二:Secret 使用
- kubernetes實踐之六十三:使用技巧
- kubernetes實踐之六十五:Service Mesh
- kubernetes實踐之八:TLS bootstrappingTLSbootAPP
- kubernetes實踐之十二:部署Traefik Ingress
- kubernetes實踐之十四:Service Account與Secret
- kubernetes實踐之七十三:Istio之配置請求路由路由
- kubernetes實踐之七十二:Istio之策略與遙測
- kubernetes實踐之五十五:kubectl之配置kubeconfig
- kubernetes實踐之七十:Istio之流量管理(上)
- kubernetes實踐之六十七:Istio介紹
- kubernetes實踐之四十九:Scheduler原理分析
- kubernetes實踐之六:CFSSL構建本地CA
- kubernetes實踐之五:Node節點安裝
- kubernetes實踐之五十四:垃圾回收機制
- kubernetes實踐之十六:RBAC 角色訪問控制
- kubernetes實踐之四十三: Service詳解
- kubernetes實踐之十:Kubernetes-dashboard+Heapster+InfluxDB+GrafanaUXGrafana
- kubernetes實踐之七十一:Istio之流量管理(下)
- kubernetes實踐之六十八:部署 coredns 外掛DNS
- kubernetes實踐之六十一:kubectl port-forwardForward
- kubernetes實踐之四十七:ResourceQuota ControllerController
- kubernetes實踐之五十:kubelet執行機制分析
- kubernetes實踐之五十三:Service中的故障排查