Skip to main content
Back to Blog
EngineeringOct 15, 2025·10 min read

Kubernetes Demystified: A Guide for Beginners

Understanding pods, deployments, and services in the world's most popular container orchestration platform.

KubernetesDevOps
Kubernetes cluster architecture

Kubernetes has a reputation for complexity that is, in some ways, deserved — and in others, overstated. The complexity is real when you're operating a Kubernetes cluster (managing etcd, upgrading control planes, configuring network policies). The complexity is manageable when you're deploying applications onto a managed Kubernetes cluster (EKS, GKE, AKS), which is how most teams interact with it. Understanding the core abstractions demystifies 90% of the day-to-day experience.

The Core Abstractions

  • Pod: The smallest deployable unit. One or more containers that share a network namespace and storage. Never manage Pods directly — manage them through higher-level abstractions.
  • Deployment: Declares the desired state: "I want 3 replicas of this container image running." Kubernetes continuously reconciles actual state with desired state, restarting crashed pods and rolling out image updates.
  • Service: A stable DNS name and IP address that routes traffic to healthy pods. Pods are ephemeral and change IP addresses; Services provide the stable endpoint that other services call.
  • Ingress: Routes external HTTP/HTTPS traffic to internal Services based on host and path rules. Your domain name resolves to the Ingress controller, which routes to the appropriate backend.
  • ConfigMap / Secret: Inject configuration and credentials into containers as environment variables or mounted files — keeping them out of the container image.
kubectl terminal output

Horizontal Pod Autoscaling

HPA automatically adjusts replica count based on observed CPU utilisation, memory, or custom metrics. Set a target (e.g., 70% CPU utilisation), set minimum and maximum replica counts, and Kubernetes scales your deployment in response to traffic — adding pods during peak load, removing them at night. Combined with cluster autoscaling (adding nodes when pods can't be scheduled), this creates a system that scales economically without manual intervention.

HPA scaling pods

The Learning Path

Start with kubectl fundamentals: apply, get, describe, logs, exec. Deploy a simple application, expose it with a Service, write a basic Ingress rule. Use k9s as a terminal UI — it makes navigating cluster state dramatically easier than raw kubectl commands. The Kubernetes documentation is genuinely excellent. Once you're comfortable with basic deployments, tackle namespaces (environment isolation), resource requests and limits (preventing noisy neighbours), and then RBAC (role-based access control). That sequence covers 95% of what developers need day-to-day.