Kubernetes检查“静默”的pod是否完成执行

时间:2019-03-14 15:17:10

标签: kubernetes

比方说,我定义了一个仅运行一些代码并随后退出的pod。我需要确保此Pod退出后才能运行其他Pod。实现此目的的最佳方法是什么?

我过去经常通过执行网络请求来检查Pod是否就绪。一旦准备好,一些webapps pod就会阻塞并监听预定义的端口,因此我可以让等待的pod对它们执行netcat请求。但是在这种特殊情况下,吊舱不需要打开任何端口,因此该方法不起作用。谁能建议一个替代方案?

谢谢

1 个答案:

答案 0 :(得分:1)

如果需要在每个pod启动/重新启动中运行“代码段”,则您可能正在寻找Init Container实现:

  

初始化容器是在应用程序之前运行的专用容器   容器,可以包含不存在的实用程序或安装脚本   应用图片。

如果您的代码是多个Pod的依赖项,并且需要运行一次(例如,在每次新部署中),则可以考虑使用Job Controller,并在部署新的代码之前实现检查其是否已完成的逻辑吊舱/容器。 (您可以在部署脚本上使用诸如kubectl wait --for=condition=complete job/myjob之类的命令)。

如果要使用头盔进行部署,最好的选择是将k8s作业与pre-installpre-upgrade helm hooks结合使用。