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

  1. Resource Limits: Always set memory and CPU limits
  2. Health Checks: Liveness and readiness probes are essential
  3. RBAC: Lock down permissions early
  4. 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

  1. Master kubectl first
  2. Learn YAML deeply
  3. Understand the basics before jumping to operators
  4. Use namespaces to organize resources
  5. 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!