當容器完成時是否可以有一個可競爭的Job?當一個容器完成時完成Kubernetes Jobs
對於爲例,我想與2個容器中運行一個吊艙的工作:
- Elasticsearch容器
- 一些Java應用程序容器連接至Elasticsearch
的Java應用程序容器運行,並完整,但顯然Elasticsearch容器將繼續無限期地運行。
因此,工作永遠不會完成。解決辦法是什麼?
乾杯
當容器完成時是否可以有一個可競爭的Job?當一個容器完成時完成Kubernetes Jobs
對於爲例,我想與2個容器中運行一個吊艙的工作:
的Java應用程序容器運行,並完整,但顯然Elasticsearch容器將繼續無限期地運行。
因此,工作永遠不會完成。解決辦法是什麼?
乾杯
這可能不是做最簡單的方法,但你可以使用Kubernetes API刪除作業:
https://kubernetes.io/docs/api-reference/v1.7/#delete-41。
我不確定您是如何開始工作的,或者您的方案中該解決方案有多現實。
不確定您的用例。我的理解是Elasticsearch應該一直在運行查詢數據。
看到你可以運行兩個不同的豆莢。一個用於Elasticsearch,另一個用於您的Java應用程序。從你的工作中調用Java應用程序。
ES不必一直運行,這將是一個資源的腰。我只想在同一個窗格上運行兩個容器,並將第二個容器用作實際執行此工作的第一個容器的工具。我覺得它缺少配置工作完成時需求的方法。 – Joan
你應該看看livenessProbe
的能力。這是部署中定義的功能,在容器運行時每x秒運行一次,以確保它正常運行。當活性探測失敗時,Kubernetes將終止容器。 Here是官方Kubernetes有關活性和準備就緒探針的文檔。
這裏的策略是使用Elasticsearch容器上的活性探測器來檢查Java應用程序是否與它有連接。只要java應用程序完成,連接將不再存在,導致活性探測失敗,並且kubernetes將終止Elasticsearch容器。
儘管如此,我認爲kubectl
嘗試重新啓動容器,如果它被活性探測失敗終止。您可能想要查看禁用該功能或其他功能。
我在最後做到了 – Joan