Kubernetes部署:在新Pod处于运行状态2分钟之前,不要终止Pod

时间:2019-03-19 22:14:58

标签: kubernetes

当我执行kubectl delete podkubectl patch时,如何确保旧的Pod在替换Pod运行2分钟后才真正删除自己? (而且,如果替换吊舱在2分钟标记之前死亡,那么甚至不要删除旧吊舱)

原因是我的初始化大约需要2分钟才能提取一些最新数据并进行计算; 2分钟后,它将到达一个错误点,或者继续使用更新的计算。

我希望能够偶尔删除pod,以便它重新启动并获取新版本的内容(因为获取新版本仅在代码开头完成)。

有没有没有初始化容器的方法吗?因为我担心很难将计算结果从init容器传递到主容器

2 个答案:

答案 0 :(得分:2)

我们需要调整两个参数。

  • 我们将minReadySeconds设置为2分钟。或者我们可以使用readiness probe代替2分钟的硬编码。
  • 我们必须对maxSurge > 0 (default: 1) and maxUnavailable: 0进行滚动更新。这将带来新的Pod,并且只有准备就绪,旧的Pod才会被杀死。对于其余的豆荚,此过程将继续进行。
  

注意:0 <= maxSurge <= copyCount

答案 1 :(得分:1)

如果使用的是部署,则可以将规范中的minReadySeconds设置为120(秒)。 Kubernetes不会认为它实际上已经准备就绪并且已经投入使用(因此降低了旧的Pod的性能),直到Pod报告它已经准备好这么长时间为止。