1个吊舱中的多个容器有延迟

时间:2018-02-10 08:34:36

标签: kubernetes

我仍然处于理解k8的初始阶段,所以如果你感到羞耻,请原谅。但是我想知道是否存在某种延迟或者在一个单独的pod中执行容器的方法。 我们假设我们有1个Pod A并且有2个容器。例如,暴露端口9092和端口8081的kafka容器以及另一个容器表示Kafka连接映像,该映像命中这两个端口。我想知道是否有办法首先执行Kafka容器,然后执行Kafka连接容器,以免它被杀死。

1)我们可以在2个容器创建之间有一些延迟或睡眠吗?

2)我们可以在pod中执行某种容器优先级,以便我们能够完成上述情况吗?

PS:我考虑过创建2个pod并且正在研究它。但也想尝试这样做并同时学习新东西。谢谢。

3 个答案:

答案 0 :(得分:1)

不,你可以,但你可以改变第二个图像的启动命令,通过localhost轮询第一个容器的端口的可用性。当两个端口都接受连接时,您就知道可以继续在第二个映像中启动应用程序。

如果您无法自行修改第二张图像,您可以使用图像中可能包含的任何脚本语言创建一个包含您自己的启动脚本的配置图。将配置映射挂载到某个路径的容器中,然后覆盖pod定义中容器的命令run(取决于您如何部署它),从配置映射中调用安装的脚本。

然后你的脚本可以进行轮询,当第一个容器运行正常时,它将执行用于启动应用程序的容器的原始命令。

如果你要使用两个pod,那么你仍然可以使用相同的想法,而不是localhost使用主机名作为第一个pod的服务。在两个pod案例中,您可以在init容器中运行脚本,而不是劫持实际映像的原始启动命令。

答案 1 :(得分:0)

到2018年初,你想要的东西本身并不存在于Kubernetes中,但你可以使用init containers来解决用例的某些部分。

答案 2 :(得分:0)