在更新Dockerfile后,我该如何在Kubernetes中重新部署所有内容?

14

我对Kubernetes非常陌生,目前我只想重新启动我的集群,并运行一个更新后的Dockerfile。顺便说一下,我正在使用Google Cloud Platform运行Kubernetes。


需要更多信息。当您说您有一个更新的Dockerfile时,是否意味着您想要更新您的Pod?如果是这样,您不需要重新启动集群。此外,您的容器当前是如何部署的?您是否已经进行了部署或Pod? - Tejas
3个回答

21

5
最可能你想要的是:kubectl rollout restart deploy <name> - Melroy van den Berg

4

您可以使用滚动更新机制来更新服务,而无需中断,它将一次更新一个pod,直到期望状态匹配,因此您的服务仍在运行。当然,我们必须更新pod内部的容器以保护数据并获取最新功能。Kubernetes通过修改部署和管理它们,使得轻松推出应用程序更新成为可能。现在是主要更新时间,我们将使用简单的方法对其进行调整。

假设您有前端、认证和后端部署,并且认证或者有新版本,因此您需要更新认证部署配置文件,在其中更改相应认证容器镜像到新版本后构建新的docker镜像,然后只需在.yaml文件中更改图像版本并执行以下操作:

$ kubectl apply -f deployments/auth.yaml

请使用部署描述命令检查是否成功,您可以看到滚动更新策略,并确定一直有正确数量的Pod可用。 这使用新的副本集来确保我们运行的是最新版本的auth容器。

$ kubectl describe deployments auth

一旦滚动更新完成,我们就可以查看认证服务的正在运行的pod。

$ kubectl get pods

检查运行时间框架。新版本的auth pod已经取代了以前的版本。再次检查新的auth pod的ID并进行验证。使用这种方式更新部署可以使我们保持干净声明式方法来推出更改到我们的应用程序,无论您有单个或数千个pods在运行。


3
您可以使用 kubectl patch 命令来触发重新部署,例如添加一个新标签。
$ kubectl patch deployment your_deployment -p "{\"spec\": {\"template\": {\"metadata\": { \"labels\": {  \"redeploy\": \"$(date +%s)\"}}}}}"

现在你应该看到一个新的ReplicaSet正在尝试为您部署新的Pod!有关详细信息,请参阅https://www.kevinsimper.dk/posts/trigger-a-redeploy-in-kubernetes。我还将其制作成了一个快捷方式,可以将其应用于所有符合某种过滤器的部署。请注意保留HTML标签。

做得好,从现在开始会使用它! - OlGe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接