My Journey Learning Kubernetes
When I first started working with Kubernetes, I was overwhelmed by the complexity. Today, I’m managing production clusters and even integrating KubeVirt for VM workloads. Here’s what I learned along the way.
Starting Simple
I began with:
- Minikube for local development
- Understanding Pods, Deployments, and Services
- Basic kubectl commands
Key Concepts That Clicked
1. Declarative Configuration
The “desired state” model was a paradigm shift:
1apiVersion: apps/v1
2kind: Deployment
3metadata:
4 name: my-app
5spec:
6 replicas: 3
7 selector:
8 matchLabels:
9 app: my-app
10 template:
11 metadata:
12 labels:
13 app: my-app
14 spec:
15 containers:
16 - name: app
17 image: my-app:latest
2. Everything is an API Object
Understanding that everything in Kubernetes is just an API resource helped me grasp custom resources and operators.
Production Lessons
- Resource Limits: Always set memory and CPU limits
- Health Checks: Liveness and readiness probes are essential
- RBAC: Lock down permissions early
- Networking: Pod-to-pod communication requires understanding CNI plugins
Advanced Topics
Recently, I’ve been working with:
- KubeVirt for VM orchestration
- KEDA for event-driven autoscaling
- Helm for package management
- GitOps with ArgoCD
Tips for Beginners
- Master kubectl first
- Learn YAML deeply
- Understand the basics before jumping to operators
- Use namespaces to organize resources
- Practice on real projects, not just tutorials
Resources That Helped Me
- Kubernetes official documentation
- “Kubernetes Up & Running” book
- CNCF YouTube channel
- Hands-on labs on Killercoda
Kubernetes has a steep learning curve, but the investment is worth it. The ecosystem is rich, and the skills are highly transferable across cloud providers.
Currently exploring serverless on Kubernetes with Knative - more on that soon!