Kubernetes 如何通过编辑yml文件更新部署

Kubernetes 如何通过编辑yml文件更新部署,kubernetes,Kubernetes,官员通过执行命令行set,指示更新部署: kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1 或者通过内联编辑(我想这将启动默认编辑器) 但是,这两个过程都使一致性变得更加困难,因为需要脱机使用启动和运行部署的my deployment.yml文件。(这就剥夺了控制清单版本的优势) 有办法去吗 通过文件启动部署 在需要时对相同的文件执行更新 是否通过指向相同的已更新文件来更新部署 您只需执行以下步骤即可完成此操作-

官员通过执行命令行
set
,指示更新部署:

kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1
或者通过内联编辑(我想这将启动默认编辑器)

但是,这两个过程都使一致性变得更加困难,因为需要脱机使用启动和运行部署的
my deployment.yml
文件。(这就剥夺了控制清单版本的优势)

有办法去吗

  • 通过文件启动部署
  • 在需要时对相同的文件执行更新
  • 是否通过指向相同的已更新文件来更新部署

您只需执行以下步骤即可完成此操作-

  • 编辑deployment.yaml文件
  • 在下面运行命令-

    kubectl apply -f deployment.yaml
    

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

    关于
    kubectl apply
    ,另请参见?当我发出
    kubectl apply-f
    时,我收到一条警告,不应将其用于以前通过
    kubectl create-f
    创建的资源。老实说,关于命令式命令和声明式命令之间区别的文档让我有点困惑。嗯,你看过我链接的文档了吗?特别是上面写着
    的部分注意:要使用apply,请始终首先使用kubectl apply或kubectl create--save config创建资源
    ?谢谢,我错过了这一部分。。。我会在(重新)创建我的资源时尝试这种方法,以防它帮助我避免类似的警告。除非删除旧的部署,否则这种方法实际上不起作用。它应该可以正常工作。如果存在旧的部署,这将覆盖现有的部署。
    kubectl apply--filename deployment.yaml--namespace DEP_namespace
    是一个不错的选择,但请确保将
    spec.containers.image
    更新为新的映像。这可以工作,但旧的pod、replicaset等都存在,您需要手动清除所有内容
    kubectl apply -f deployment.yaml