![如何在没有原始配置的情况下安全地更新现有的 Kubernetes 服务器](https://linux22.com/image/789090/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%B2%A1%E6%9C%89%E5%8E%9F%E5%A7%8B%E9%85%8D%E7%BD%AE%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E5%AE%89%E5%85%A8%E5%9C%B0%E6%9B%B4%E6%96%B0%E7%8E%B0%E6%9C%89%E7%9A%84%20Kubernetes%20%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我拿到了一个没有配置文件的 Kubernetes 集群,也没有使用 helm 进行设置。作者说他们只是从命令行创建了所有内容。这是一个带有 nginx 入口控制器的单个 API 服务器的小型/新集群。我对 Kubernetes 了解得足够多,可以熟悉它,并能够添加新的 Web 服务器,但现在我需要更深入地了解并更新现有配置。具体来说,我想在 nginx 控制器上启用 prometheus 指标,但我不想破坏任何东西。
是否有标准方法可以从集群中检索现有配置(部署、服务等)、进行修改并应用它们?或者是否有一种方法可以修补现有配置的各个部分,而无需创建新的 yaml 文件?
我知道我可以通过如下方式获取当前配置:
kubectl get services -n nginx -o yaml
该输出具有其他字段,例如 creationTimestamp、uid 等,我想我需要删除它们。或者我是否可以将输出原封不动地保存到 yaml 文件中,进行修改以启用 prometheus,然后将配置应用回控制器?它会忽略 kube 创建的字段吗?我是否应该考虑其他方法?
其次,我应该将这些配置存储在存储库中吗,或者这只是完成事情的方式?
答案1
似乎您已经拥有了所需的一切;仅需考虑一些小问题:
kubectl -n <ns> get <CRD> -o yaml
将为您提供带有一些只读标识符的输出,即使它们保留其值,您也无法重新定义它们,因此这些不适合将它们保存为纯文本文件。- 使用
kubectl edit instead
- 至于您是否应该将它们保存在任何您想要的 VCS 中,或者您是否应该只是即时进行修改 - 这完全由您决定;任何讨论这个问题的尝试都可能会引起争端。