【问题标题】:How to update all resources that were created with kubernetes manifest?如何更新使用 Kubernetes 清单创建的所有资源?
【发布时间】:2020-12-14 18:43:25
【问题描述】:

我使用 kubernetes 清单文件来部署我的代码。我的清单通常包含许多内容,例如部署、服务、入口等。如何对清单中应用的所有内容执行某种类型的“推出”或“重新启动”?

我知道我可以通过运行来更新我的部署

kubectl rollout restart deployment <deployment name> 

但是如果我需要更新所有资源,例如入口/服务,该怎么办?可以一起做吗?

【问题讨论】:

  • 您可以使用kubectl apply 将清单文件中的更改反映到资源中。

标签: kubernetes


【解决方案1】:

我建议您存储清单,例如DeploymentServiceIngress 在目录中,例如&lt;your-directory&gt;

然后使用kubectl apply 将这些文件“应用”到 Kubernetes,例如:

kubectl apply -f <directory>/

Declarative Management of Kubernetes Objects Using Configuration Files上查看更多信息。

当您的Deployment 以这种方式更新时,您的 pod 将在滚动部署期间被新版本替换(您可以配置为使用其他部署策略)。

【讨论】:

  • 好的 - 这很有意义。应用kubectl apply -f my-deployment.yaml 时如何配置“滚动”部署?
  • 这是默认行为
【解决方案2】:

这是一个社区 Wiki 答案,因此请随时对其进行编辑并添加您认为重要的任何其他详细信息。

正如Burak Serdar 已经在他的评论中建议的那样,您可以简单地使用:

kubectl apply -f your-manifest.yaml

它会将您在清单文件中所做的所有更改应用于已部署的资源。

但请注意,运行:

kubectl rollout restart -f your-manifest.yaml

没有多大意义,因为该文件包含资源的定义,例如 Services 无法应用 kubectl rollout restart。结果你会看到以下错误:

$ kubectl rollout restart -f deployment-and-service.yaml
deployment.apps/my-nginx restarted
error: services "my-nginx" restarting is not supported

如您所见,完全可以对包含支持此操作和不支持此操作的资源定义的文件运行kubectl rollout restart

运行 kubectl apply 会导致更新清单中定义已更改的所有资源:

$ kubectl apply -f deployment-and-service.yaml
deployment.apps/my-nginx configured
service/my-nginx configured

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-24
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    相关资源
    最近更新 更多