What I understood by the documentation is that:
- kubectl create = Creates a new k8s resource in the cluster
- kubectl replace = Updates a resource in the live cluster
- kubectl apply = If I want to do create + replace (Reference)
My questions are
- Why are there three operations for doing the same task in a cluster?
- What are the use cases for these operations?
- How do they differ from each other under the hood?
Best Answer
Those are two different approaches:
Imperative Management
kubectl create
is what we call Imperative Management. On this approach you tell the Kubernetes API what you want to create, replace or delete, not how you want your K8s cluster world to look like.Declarative Management
kubectl apply
is part of the Declarative Management approach, where changes that you may have applied to a live object (i.e. throughscale
) are "maintained" even if youapply
other changes to the object.In laymans They do different things. If the resource exists,
kubectl create
will error out andkubectl apply
will not error out.