The Problem Nobody Talks About
When I first approached Kubernetes, every tutorial assumed I was a developer coming from Docker. Nobody wrote for someone who knew vSphere inside-out — who understood DRS, vMotion, VSAN, NSX, and had opinions about datastore sizing.
The Mental Model Map
| VMware vSphere | Kubernetes Equivalent | Key Difference |
|---|---|---|
| ESXi Host | Node | Nodes run containers, not VMs |
| vCenter Server | Control Plane (API Server) | API-driven, not GUI-first |
| VM | Pod | Pods are ephemeral — embrace this |
| VM Template | Container Image | Stored in a registry, not a datastore |
| vSwitch / DVS | CNI Plugin (Calico, Cilium) | Defined in YAML, not GUI clicks |
| NSX Microsegmentation | NetworkPolicy | Written as code, version-controlled |
| Snapshot | — (no direct equivalent) | etcd backup + Velero for cluster backup |
| vMotion | Pod Rescheduling | Automatic, not manual |
| DRS | Scheduler + HPA | Fully automated and policy-driven |
| Resource Pool | Namespace + LimitRange | Enforced via YAML, not right-click |
| Datastore | PersistentVolume (PV) | Claimed by workloads, not assigned to VMs |
| NFS/VMFS | StorageClass | Dynamically provisioned on-demand |
| vSAN | Rook-Ceph / Longhorn | Software-defined storage for K8s |
| HA Cluster | ReplicaSet | App-level HA, not host-level |
| OVF/OVA Template | Helm Chart | Package format for deploying applications |
| vSphere Tags | Kubernetes Labels | Used for selection and automation |
| VM Notes | Annotations | Metadata on any K8s object |
✅ What VMware Experience Transfers Perfectly
Networking fundamentals You already understand VLANs, trunking, MTU, and routing. Kubernetes networking (overlay networks, pod CIDRs, service CIDRs) will make more sense to you faster than it does to developers.
Storage thinking You understand IOPS, throughput, latency, and thin vs thick provisioning. PersistentVolumes, StorageClasses, and access modes (ReadWriteOnce vs ReadWriteMany) click immediately.
High availability design You've designed HA clusters before. Understanding why Kubernetes wants an odd number of control plane nodes (quorum) is natural if you've configured vSphere HA admission control.
Resource planning You've right-sized VMs for years. Setting CPU requests/limits and memory requests/limits in Kubernetes pod specs is the same discipline — just in YAML instead of a properties dialog.
Security thinking If you've worked with NSX, you already think in terms of microsegmentation. Kubernetes NetworkPolicy is just that — written as code.
❌ What You Need to Unlearn
"The VM is the unit of work" In vSphere, the VM is everything. In Kubernetes, pods are ephemeral. They die and restart constantly. Your application must be designed to handle this. This is the biggest mindset shift.
"I'll fix it by SSHing in" In vSphere, you SSH into a VM to debug. In Kubernetes, kubectl exec is a code smell in production. Logs, metrics, and traces are how you debug — not SSH sessions.
"Storage is attached to a machine" VMDKs are attached to VMs. In Kubernetes, storage (PVCs) follows the pod wherever it schedules. This is powerful but requires rethinking how you design stateful apps.
"I'll take a snapshot before this change" There's no VM snapshot in Kubernetes. Your safety net is GitOps (if it's in Git, you can revert), Helm rollbacks (helm rollback), and kubectl rollout undo.
"The GUI is the source of truth" vCenter's GUI is authoritative. In Kubernetes, Git is the source of truth. If you clicked something in the dashboard, it doesn't count — it needs to be in a YAML file, committed to a repo.
Your First Week Action Plan
If you're a VMware admin starting with Kubernetes today:
`# Day 1 — Spin a local cluster (no VMs needed)
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
./kind create cluster --name homelab
Day 2 — Deploy something familiar (a web server like an nginx VM)
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
Day 3 — Add monitoring (like vCenter alarms, but better)
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install prometheus prometheus-community/kube-prometheus-stack
Day 4 — Add a NetworkPolicy (like NSX microsegmentation)
kubectl apply -f https://raw.githubusercontent.com/jsakilesh/k8s-security-hardening/main/network-policies/deny-all.yml
Day 5 — Break something on purpose and fix it
kubectl delete pod -l app=nginx
Watch it come back automatically — this is the magic
kubectl get pods -w`
Resources That Actually Helped Me
Kubernetes the Hard Way — if you built ESXi clusters from scratch, you'll appreciate this
CKS Exam Curriculum — if you passed VCAP, the CKS exam structure will feel familiar
My DevOps Homelab — full Terraform + Ansible + K8s + GitOps setup you can clone and run
Final Thought
Your VMware experience is not baggage — it's a superpower. You understand infrastructure at a level most Kubernetes engineers don't. The concepts translate. The tools change. The thinking stays the same.
The hardest part isn't learning Kubernetes. It's letting go of the GUI.
If this helped, follow me here on Dev.to and check out my githubwhere I document everything I build in my homelab.
Top comments (0)