问题描述
我在文档中理解的是kubectl apply = kubectl create + kubectl replace。参考
我的理解是,如果我想在集群中创建新的k8s资源,我应该使用kubectl create操作。现在,如果我想更新现场k8s资源中的内容,我应该使用kubectl replace操作。
如果我想做两个操作(创建一个新的k8s资源以及更新实时k8s资源)然后我应该使用kubectl replace操作。
我的问题是为什么在集群中执行相同任务有三个操作?这些操作的使用场景是什么?他们的区别是什么?
目前我正在使用kubectl create操作在集群中创建新资源。谢谢
高票回答
这是两种不同的方法。kubectl create就是我们所说的Imperative Management(命令式管理)。在这种方法中,您可以告诉Kubernetes API您要创建,替换或删除的内容,而不是您希望K8s群集是什么样的。
kubectl apply是Declarative Management (声明式管理)的一部分,即使您对对象应用其他更改,也可以保留应用于活动对象(即通过比例)的更改。
您可以在Kubernetes Object Management中阅读有关命令式和声明式管理的更多信息。