Kubernetes postStart钩子似乎阻止了所有容器的启动。那可能吗?

时间:2016-11-18 11:46:39

标签: hook kubernetes

我的情况是我的pod由3个容器组成:

  • 应用
  • collectd
  • fluentd

我想要的是:只有当collectd和fluentd都启动并运行时,应用程序才会启动..

因此,我在应用程序容器中创建了一个简单的 postStart 脚本,该脚本将永远等待collectd和fluentd的liveness / readyiness探测。我开发了这个部分,假设kubernetes并行启动所有容器,如果出现问题(liveness probe down),则会自动重启失败的容器。

但是我发现了两种奇怪的行为,严格地将这两种行为联系在一起:

  1. postStart脚本中的永无止境的循环(等待其他容器的活跃度)完全阻止其他两个的旋转。所以流利和收集从未开始。
  2. kubernetes按字母顺序运行在容器内定义的容器。因此,如果我调用我的第一个容器 zapplication (而不是 application ),一切都按预期工作。
  3. 现在我问的是,这种行为是功能还是错误

    (此处的问题结束,关于可能的答案的免费想法)

    我阅读了很多文章和讨论,声明在容器启动的顺序中应该没有假设,但事实并非如此。此外,在所有可能的排序中,字母顺序在我看来并不是最具确定性的排序。

    对我来说,容器上的postStart脚本有能力完全阻止其他两个,这似乎也很奇怪。但也可能是这个功能解决了依赖容器的问题!

    =============================================== ========================= 更新2016年2月12日:我将链接在这里作为参考github上的问题 https://github.com/kubernetes/kubernetes/issues/37805

0 个答案:

没有答案