当我执行kubectl delete pod
或kubectl patch
时,如何确保旧的Pod在替换Pod运行2分钟后才真正删除自己? (而且,如果替换吊舱在2分钟标记之前死亡,那么甚至不要删除旧吊舱)
原因是我的初始化大约需要2分钟才能提取一些最新数据并进行计算; 2分钟后,它将到达一个错误点,或者继续使用更新的计算。
我希望能够偶尔删除pod,以便它重新启动并获取新版本的内容(因为获取新版本仅在代码开头完成)。
有没有没有初始化容器的方法吗?因为我担心很难将计算结果从init容器传递到主容器
答案 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报告它已经准备好这么长时间为止。