【问题标题】:How to update a Deployment via editing yml file如何通过编辑 yml 文件更新部署
【发布时间】:2021-07-16 20:50:43
【问题描述】:

官方kubernetes guidelines,通过执行命令行set来指示更新部署:

kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1

或通过内联编辑(我猜这将启动默认编辑器)

kubectl edit deployment/nginx-deployment

但是,鉴于需要离线更新 my-deployment.yml 文件,这两个过程都使一致性变得更加困难,而启动和运行的部署来自该文件。 (这剥夺了保持清单版本受控的优势)。

有没有办法

  • 通过文件启动部署
  • (在需要时)对相同文件进行更新
  • 通过指向相同的更新文件来更新部署?

【问题讨论】:

  • kubectl apply 怎么样,另见docs
  • 当我发出kubectl apply -f <filename> 时,我收到一条警告,它不应该用于以前通过kubectl create -f <filename> 创建的资源。老实说,关于命令式/声明式命令之间差异的文档让我有些困惑。
  • 嗯,你读过我链接的文档吗?尤其是上面写着Note: To use apply, always create resource initially with either kubectl apply or kubectl create --save-config的部分?
  • 谢谢我错过了那部分......我会在(重新)创建我的资源时尝试这种方法,以防它帮助我避免类似的警告

标签: kubernetes


【解决方案1】:

您只需按照以下步骤即可完成 -

  1. 编辑deployment.yaml文件
  2. 运行下面的命令 -

    kubectl apply -f deployment.yaml
    

这是我通常遵循的。您也可以使用 kubectl 补丁或编辑。

【讨论】:

  • 这实际上是行不通的,除非你删除旧的部署。
  • 它应该可以正常工作。如果存在旧部署,这将覆盖现有部署。
  • kubectl apply --filename deployment.yaml --namespace DEP_NAMESPACE 是可行的方法,但请确保将spec.containers.image 更新为新图像。
  • 这可行,但旧的 pod、replicasets 等一切都在那里,您需要手动清除所有内容
  • 这个命令很简单。无需手动删除旧部署。
猜你喜欢
  • 2023-03-20
  • 2021-09-08
  • 2011-03-25
  • 2015-01-24
  • 1970-01-01
  • 2015-10-31
  • 2020-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多