K8s:编辑、修补、更新

Doo*_*mro 12 kubernetes kubectl

在 kubectl Cheat Sheet ( https://kubernetes.io/docs/reference/kubectl/cheatsheet/ ) 中,有 3 种修改资源的方法。您可以更新、修补或编辑。

它们之间的实际区别是什么?我什么时候应该使用它们?

mar*_*rio 5

我想在夜金的回答中添加一些内容。我想说,修改资源没有更好或更坏的方法。一切都取决于具体情况和您的需求。

值得强调的是编辑和修补之间的主要区别,即第一个是交互式方法,第二个我们可以调用批处理方法,与第一个方法不同,它可以很容易地在脚本中使用。试想一下,您需要对数十个甚至数百个不同的kubernetes 资源/对象进行更改,并且编写一个简单的脚本来以自动方式修补所有这些资源要容易得多。打开它们中的每一个进行编辑并不是很方便和有效。只是一个简短的例子:

kubectl patch resource-type resource-name --type json -p '[{"op": "remove", "path": "/spec/someSection/someKey"}]'
Run Code Online (Sandbox Code Playgroud)

虽然乍一看,与交互式编辑和从特定部分手动删除特定行相比,它可能看起来不必要的复杂和使用起来不太方便,但实际上这是一种非常快速有效的方法,可以轻松地在脚本中实现,并且可以为您节省大量时间。当您处理许多对象时会花费大量的工作和时间。

至于apply命令,你可以阅读文档

apply 通过定义 Kubernetes 资源的文件来管理应用程序。它通过运行 kubectl apply 创建和更新集群中的资源。这是在生产环境中管理 Kubernetes 应用程序的推荐方法。

它还使您可以通过从更新的清单(例如从 git 存储库拉取)重新应用它来修改运行配置yaml

如果update你的意思是rollout(以前称为滚动更新),正如你在文档中看到的那样,它具有完全不同的功能。它主要用于更新部署。您不能使用它来更改任意类型的资源。


nig*_*old 0

我不认为我有这个问题的答案,但我希望这会有所帮助。

这三种方法都做同样的事情,它们修改一些资源配置,但命令和方式不一样。

如文档中所述:

  • 编辑是指打开 kubernetes 集群中的 yaml 配置文件并对其进行编辑(使用 vim 或其他)以在集群上进行直接修改。在测试目的之外,我不会推荐这样做,从原始 yaml 文件重新应用 conf 将删除修改。
  • 修补对我来说似乎是一样的,但没有打开文件并针对资源的特定部分。
  • 在文档中更新似乎是在不使用补丁或编辑的情况下更新资源的所有其他方法。其中一些可用于调试/测试,例如强制资源替换或更新映像版本。其他的则用于用新的配置来更新它们。

根据经验,我只使用编辑和一些更新命令进行测试,大多数时候我重新应用配置。