Kubernetes K8s:编辑vs修补vs更新

Kubernetes K8s:编辑vs修补vs更新,kubernetes,kubectl,Kubernetes,Kubectl,在kubectl备忘单()中,有3种修改资源的方法。您可以更新、修补或编辑 它们之间的实际区别是什么?我什么时候应该使用它们?我想我没有答案,但我希望这会有所帮助 这三种方法都做同样的事情,它们修改了一些资源配置,但是命令和方式不同 如文件中所述: 编辑是指打开kubernetes集群中的yaml配置文件并对其进行编辑(使用vim或其他工具)以直接修改集群。在测试目的之外,我不建议这样做,从原始yaml文件重新应用conf将删除修改 修补对我来说似乎是一样的,但没有打开文件和针对资源的特定部分

在kubectl备忘单()中,有3种修改资源的方法。您可以更新、修补或编辑


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

我想我没有答案,但我希望这会有所帮助

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

如文件中所述:

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

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

我想在night gold的答案中添加一些东西。我想说,没有更好和更坏的方法来修改您的资源一切都取决于具体情况和您的需要。

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

kubectl patch resource-type resource-name --type json -p '[{"op": "remove", "path": "/spec/someSection/someKey"}]'
虽然与交互式编辑和从特定部分手动删除特定行相比,它一开始可能看起来不必要复杂,使用起来也不是很方便,事实上,它是一种非常快速有效的方法,可以很容易地在脚本中实现,并且在处理许多对象时可以节省大量的工作和时间

关于
apply
命令,您可以在中阅读:

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

通过从更新的
yaml
manifest(例如从git存储库中提取)重新应用配置,您还可以修改正在运行的配置

如果所说的
更新
是指
卷展栏
(以前称为滚动更新),您可以从中看到,它具有完全不同的功能。它主要用于更新部署。您不能使用它来更改任意类型的资源