簡體   English   中英

kubernetes cronjob 只運行一次?

[英]kubernetes cronjob only runs once?

我使用以下時間表創建了一個 k8s CronJob(每分鍾運行一次):

schedule: "*/1 * * * *"

我看到我的 CronJob 創建了:

NAMESPACE     NAME                   READY   STATUS    RESTARTS   AGE
job-staging   job-1593017820-tt2sn   2/3     Running   0          10m

我的工作只是對日志執行 Printf 一次,然后退出。

當我執行kubernetes get cronjob時,我看到:

NAMESPACE     NAME                   READY   STATUS    RESTARTS   AGE
job-staging   job   */1 * * * *      False   1         19m        19m

當我查看日志時,它看起來只運行了一次,這是第一次運行。 我需要阻止我的程序退出嗎?

我以為 k8s 會重新啟動我的程序,但也許這是一個錯誤的假設。

您對 Kubernetes (“重新啟動程序”)行為的假設是正確的。

您可能知道,Job 基本上是一個 Kubernetes Pod,它執行一些進程並在以零退出代碼退出時成功完成。 CronJob 的“Cron”部分是最明顯的,它安排 Job 以特定的時間模式執行。

Most YAML objects for CronJobs include the restartPolicy: OnFailure key that prevents Kubernetes from rescheduling the Job for a non-zero exit code (the hello-world YAML file in Kubernetes documentation uses this flag).

根據我在您的kubectl指令獲得的日志中看到的內容,您的 Job 似乎失敗了 - 因為Status 1 我建議您使用kubectl logs -f -n default job-1593017820-tt2sn檢查 CronJob 的日志,以了解腳本執行中是否存在任何可能的錯誤(如果您的腳本以退出代碼顯式退出,請檢查可能的非-零代碼)。

[更新]

CronJobs 也有限制:

cron 作業在其計划的每個執行時間大約創建一次作業 object。 我們說“約”是因為在某些情況下可能會創造兩個工作崗位,或者可能不會創造任何工作崗位。 我們試圖使這些罕見,但不完全阻止它們。 因此,作業應該是冪等的。

我認為這些是非常罕見的情況,但也許你已經發現自己處於這些罕見的情況中。 文檔在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM