Skip to content
tezvyn:

Imperative kubectl: Directly Command Your Cluster

Source: kubernetes.ioEasyHow cards are made

Imperative kubectl: Directly Command Your Cluster

Imperative kubectl is like giving direct orders to your cluster: 'run this,' 'scale that.' It's great for quick, one-off tasks like debugging a pod or handling an incident.

Why it exists

Sometimes you need to interact with a Kubernetes cluster directly and immediately, without the overhead of writing and applying a full configuration file. Imperative commands provide a quick, command-line interface for these ad-hoc tasks, exploration, and emergencies.

The mental model

Think of imperative commands as giving direct, one-off orders to your cluster. You use verbs like run, scale, expose, and delete to tell Kubernetes what to do right now. This contrasts with the declarative approach, where you provide a YAML file describing the desired state and let Kubernetes figure out how to get there.

How it works

Commands like kubectl run my-pod --image=nginx or kubectl scale deployment/my-app --replicas=5 directly interact with the Kubernetes API server. The API server then instructs the cluster controllers to perform the requested action, such as creating a new Pod object or updating the replica count on a Deployment object. These changes happen immediately but are not persisted in a source-controlled configuration file.

When to use it

Imperative commands are ideal for exploration, debugging, and emergencies. Use them for tasks like: first, creating a temporary pod to test a network connection; second, quickly exposing a service for testing; third, manually scaling up a deployment to handle a sudden traffic spike. It's the go-to for "I need to do this right now" scenarios.

When not to use it

Do not use imperative commands for managing production infrastructure as your primary method. Because the commands are not stored in a version-controlled file, it leads to "configuration drift," where the live state of your cluster no longer matches what's in your Git repository. This makes environments difficult to reproduce, audit, or recover after a failure. For production, always prefer declarative kubectl apply -f <file.yaml>.

One canonical example

A developer needs to quickly test if a new container image works. Instead of writing a full Deployment YAML, they run kubectl run test-pod --image=my-registry/my-app:v2. This creates a single pod. After verifying it works by checking logs (kubectl logs test-pod), they can delete it with kubectl delete pod test-pod. The entire workflow is interactive and temporary.

Interview question

What is the primary advantage of using imperative kubectl commands over declarative configuration files?

  • a.They ensure that all cluster changes are automatically version-controlled and auditable.
  • b.They are ideal for quickly performing one-off tasks like debugging or testing.Correct
  • c.They provide a comprehensive way to define the desired state of complex applications.
  • d.They prevent configuration drift by maintaining a persistent record of all applied changes.
Why?

Imperative commands are best for immediate, ad-hoc tasks like debugging or testing, as they allow direct interaction without configuration files. Option A describes a benefit of declarative configuration, which is explicitly contrasted with imperative commands as the method for managing production infrastructure to avoid configuration drift and ensure reproducibility.

Just read this? Test yourself on what you have been reading.

Read the original → kubernetes.io

Put your scrolling time to good use

Learn one idea, try a quiz and save useful cards for revision. Tezvyn makes it easy to learn and stay current in your tech field, a few minutes at a time.

The iPhone app is on the way

We are building it. Until it lands, nothing here is held back from you: every interview card, your saved cards, streaks and the job board all work in Safari, plus hundreds of free practice quizzes of thirty questions each. Sign in and it all carries over to the app the day it arrives.

Want it as an icon? Tap Share at the bottom of Safari, then Add to Home Screen. It opens full screen and the cards you have read stay available offline.

Get it on Google PlayiPhone app coming soon

We are hiring for this. Open roles that interview on kubernetes — each one lists the topics its interview covers.

See open roles