如何"部署"在kubernetes没有任何变化,只是让pods循环

时间:2016-11-09 04:56:29

标签: kubernetes

我想做什么:

在Pod中运行的应用程序会在启动时刷新其数据文件。 每次我想刷新数据时,我都需要重新启动容器。 (刷新可能需要几分钟,所以我有一个Probe检查是否准备就绪。)

认为是一个解决方案:

我将运行scheduled job来执行滚动更新部署,这将使旧的Pod一次一个地取出并替换它们,而无需停机。

我被困的地方:

如果我没有改变任何内容,我如何触发部署?

此外,我需要能够从预定的工作中做到这一点,显然,所以没有人工编辑..

其他任何方式吗?

2 个答案:

答案 0 :(得分:7)

根据documentation

  

注意:当且仅当部署的广告连播模板(即 .spec.template )发生更改时才会触发部署的推出,例如更新模板的标签或容器图像。

您可以使用kubectl patch更新.spec.template内的标签。

答案 1 :(得分:0)

从kubectl 1.15开始,您可以运行:

kubectl rollout restart deployment <deploymentname>

这是内部操作,它使用kubectl.kubernetes.io/restartedAt批注修补部署,以便调度程序根据部署更新策略执行部署。

对于Kubernetes的早期版本,您可以模拟类似的事情:

 kubectl set env deployment --env="LAST_MANUAL_RESTART=$(date +%s)"  "deploymentname"

甚至将所有内容替换为一个名称空间:

 kubectl set env --all deployment --env="LAST_MANUAL_RESTART=$(date +%s)" --namespace=...