[英]Kubernetes cronjob run multiple processes at the same time without creating multiple jobs
我有一個 Python 進程,我想在 Kubernetes cronjob 中每n分鍾啟動一次,並從隊列中讀取一些消息(比如 5 條),然后處理/轉換一些文件並根據這些隊列消息對結果進行分析。 如果n分鍾后進程仍在運行,我不想啟動新進程。 總的來說,我希望其中一些(比如 3 個)能夠同時運行,但是,同時運行的進程永遠不能超過 3 個。 為了嘗試實現這一點,我嘗試了以下(簡化):
apiVersion: batch/v1
kind: CronJob
metadata:
name: some-job
namespace: some-namespace
spec:
schedule: "*/5 * * * *"
concurrencyPolicy: "Forbid"
jobTemplate:
spec:
parallelism: 3
template:
spec:
containers:
- name: job
image: myimage:tag
imagePullPolicy: Always
command: ['python', 'src/run_job.py']
現在這相當於最多同時運行三個進程,因為“並行度”為 3,並且 concurrencyPolicy 為“禁止”,即使進程 go 超過 5 分鍾標記也是如此。
我特別遇到的問題是一個吊艙(例如吊艙 1)可能比其他兩個吊艙需要更長的時間才能完成,這意味着吊艙 2 和 3 可能會在一分鍾后完成,而吊艙 1 僅在 10 分鍾后完成,因為處理更大隊列中的文件。
我認為parallelism: 3
會導致 pod 2 和 3 在完成后被刪除和替換(當新的 cron 間隔命中時),它們不是並且必須等待 pod 1 完成,然后才能在 cron 間隔命中時啟動三個新的 pod再次。
當我考慮它時,考慮到 cronjob 的規范和含義,這個功能是有意義的。 但是,我想知道是否能夠讓這些 pod/進程不相互依賴以重新啟動,而不必定義重復的 cronjob,所有這些都運行一個進程。
否則,也許我想知道是否可以輕松啟動更多重復的 cronjobs 而無需將它們復制到多個清單中。
重復的 cronjobs 似乎是實現您正在尋找的方法。 一次生成 3 個副本,單個作業。 您可以將作業清單模板化並生成多個,如下例所示。 該示例不在您的問題上下文中,但您可以理解。 http://kubernetes.io/docs/tasks/job/parallel-processing-expansion
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.