如何在没有任何变化的情况下在kubernetes中"部署",只是为了让pods循环

ege*_*and 2 kubernetes

我想做什么:

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

认为是一个解决方案:

我将运行一个预定的作业来进行滚动更新的部署,这将使旧的Pod一次一个地取出并替换它们,而不会停机.

我被困在哪里:

如果我没有改变什么,我如何触发部署?

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

这样做的其他任何方式?

小智 8

根据文件:

注意:当且仅当部署的pod模板(即.spec.template)更改时,才会触发Deployment的部署,例如更新模板的标签或容器图像.

你可以kubectl patch用来更新里面的标签.spec.template.


vdb*_*oor 5

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

kubectl rollout restart deployment <deploymentname>
Run Code Online (Sandbox Code Playgroud)

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

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

 kubectl set env deployment --env="LAST_MANUAL_RESTART=$(date +%s)"  "deploymentname"
Run Code Online (Sandbox Code Playgroud)

甚至替换单个命名空间中的所有内容:

 kubectl set env --all deployment --env="LAST_MANUAL_RESTART=$(date +%s)" --namespace=...
Run Code Online (Sandbox Code Playgroud)