kuberneteskubectl

kubectl apply vs kubectl create?


What I understood by the documentation is that:

My questions are

  1. Why are there three operations for doing the same task in a cluster?
  2. What are the use cases for these operations?
  3. How do they differ from each other under the hood?

Solution

  • 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. through scale) are "maintained" even if you apply other changes to the object.

    You can read more about imperative and declarative management in the Kubernetes Object Management documentation.

    tl:dr

    They do different things. If the resource exists, kubectl create will error out and kubectl apply will not error out.