1

如果我们有相同版本的 docker 镜像,我试图了解 Kubernetes 是否会在滚动更新的情况下重新部署。

假设在部署中我们有 5 个图像(应用程序)

  • 如果我只想更新 1 个应用程序并只更新该图像

是否会更新已经使用最新版本的其他应用程序(我们可以使用拉取策略为“IfNotPresent”)/运行其他应用程序的最新版本的 pod 是否会推出到新的 pod?还是因为他们已经在运行最新的图像而保持原样?

基本上我想问的是,如果我们有 50 个应用程序并且我们正在使用带有 helm 图表的 kubernetes,如果我们只想更新 1 个应用程序并确保其他应用程序 pod 完全不受影响,那么部署策略是什么?

4

1 回答 1

2

如果您将“最新”标签与“拉取策略”“ IfNotPresent ”结合使用,K8s 将只使用它在工作节点的本地 Docker Registry 中找到的任何 Docker 镜像。这有效地使新版本的部署变得不可能。

回答您的问题:您无法永久更新Deployment的一个Pod。您可以通过直接编辑其中一个 Pod 来临时执行此操作,但是一旦重新部署,这将被覆盖。

如果需要永久配置,您可以使用新映像为应用程序创建单独的部署。确保使用标签以使应用程序的Service将流量转发给它以及其他Deployment

此外,为了确定性行为和为不同部署运行同一应用程序的不同版本的能力,您将不得不停止使用“最新”标签

于 2020-12-08T17:16:18.497 回答