当容器完成时是否可以有一个可竞争的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