We use analytics cookies.We use cookies to analyze site traffic and improve your experience.
Loading...
System Design Masterclass · Kubernetes Containers
Free preview: the first 2 parts of this 6-part lesson.
Already bought the course? Sign in to read the whole lesson.
this lesson is part of
System Design Masterclass
Unlock this lesson and the 751 other paid lessons
$25 once, by PayPal
See the System Design courseread the rest of this lesson in
System Design Masterclass
Unlock this lesson and the 751 other paid lessons
$25 once, by PayPal
See the System Design coursein Kubernetes Containers
This lesson is part of the full System Design Masterclass. Unlock it along with 769 other lessons for a one-time payment.
One-time payment by card or PayPal
Get Lifetime AccessOne-time payment: UPI, card or netbanking
Get Lifetime Access18 Foundation lessons are free, no payment needed. Try them now
Server A was set up in January. In March, someone SSHed in and installed a debugging tool. In May, a hotfix was applied directly in production. In August, a config file was edited by hand. By December, server A is a unique snowflake, its state is the cumulative result of months of ad-hoc changes, and nobody can reproduce it.
Now server A crashes. You try to rebuild it. The new server doesn't work the same way. Some package version is different. The config file edit is missing. The debugging tool that someone forgot they installed had a side effect that the app depends on. You spend days reconstructing the snowflake.
Immutable infrastructure eliminates this. Instead of modifying running servers, you never touch them. Every change, every security patch, configuration update, and code deployment, produces a new server image. The old servers are destroyed and replaced with new ones built from the updated image. Every server in production is identical, reproducible, and disposable.
Containers are immutable infrastructure by default. You don't SSH into a container and edit files. You build a new image with the change and deploy it. The old container is killed and replaced. This is why containers and immutable infrastructure go hand in hand.
| Aspect | Mutable (Traditional) | Immutable (Modern) |
|---|---|---|
| Updates | Patch in place (apt upgrade, config edit) | Build new image, replace entirely |
| State | Accumulates drift over time | Fresh, identical every deployment |
| Rollback | Reverse the patch (risky) | Deploy previous image (instant) |
| Debugging | SSH in, inspect live system | Reproduce from image locally |
| Scaling | Clone server (with all its drift) | Launch identical image instances |
| Audit | "What changed?" is a mystery | Image diff shows exact changes |
The immutable workflow:
Tools enabling immutable infrastructure:
| Layer | Tool | What It Does |
|---|---|---|
| Container images | , Buildah | Immutable application packaging |
| VM images | Packer | Immutable machine images (AMIs) |
| Orchestration | Replace pods with new images | |
| IaC | Replace infrastructure, don't patch | |
| GitOps | ArgoCD, Flux | Desired state in Git, auto-deploy |
It is easy and good
“It is really nice and good Please join the course”