Kubernetes (K8s) has become the de facto standard for running containerized workloads in production. It handles scheduling, scaling, self-healing, and deployment of containerized applications across clusters of machines — abstracting the underlying infrastructure so your team can focus on software, not servers. But Kubernetes is also operationally complex. This guide helps you understand what it actually does, where it makes sense, and where simpler alternatives might serve you better.
What Kubernetes Actually Does
At its core, Kubernetes is a container orchestration platform. You define the desired state of your application — what containers to run, how many replicas, what resources they need, how to reach them — and Kubernetes continuously works to make reality match that definition.
Core Responsibilities
- Scheduling: Decides which node (server) in the cluster runs each container, based on resource availability and constraints
- Scaling: Automatically scales workloads up or down based on CPU, memory, or custom metrics
- Self-healing: Restarts failed containers, replaces terminated pods, and reschedules workloads when nodes fail
- Rolling deployments: Updates applications with zero downtime by gradually replacing old instances with new ones
- Service discovery and load balancing: Routes traffic to containers automatically as they scale and move between nodes
- Secret and configuration management: Manages environment-specific config and sensitive values separately from container images
Core Kubernetes Concepts
Pods
The smallest deployable unit in Kubernetes. A Pod contains one or more containers that share networking and storage. In practice, most Pods contain a single application container plus optional sidecar containers (logging agents, service mesh proxies).
Deployments
Manage the lifecycle of a set of identical Pods. You define a desired state (e.g., "run 3 replicas of my API container using image v2.4.1") and the Deployment controller maintains that state — replacing failed pods, rolling out updates, and enabling rollbacks.
Services
Provide a stable network endpoint for a set of Pods. Since Pod IP addresses change as containers start and stop, Services give you a consistent DNS name and IP that routes to healthy pods. Types include ClusterIP (internal), NodePort (external via node IP), and LoadBalancer (cloud-managed load balancer).
Namespaces
Virtual clusters within a Kubernetes cluster. Used to isolate environments (dev, staging, production) or teams within the same physical cluster, with separate RBAC permissions and resource quotas.
ConfigMaps and Secrets
Decouple configuration from container images. ConfigMaps store non-sensitive config; Secrets store sensitive values (API keys, database passwords) with base64 encoding and access controls. Both are injected into Pods as environment variables or mounted as files.
A Minimal Kubernetes Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-server
namespace: production
spec:
replicas: 3
selector:
matchLabels:
app: api-server
template:
metadata:
labels:
app: api-server
spec:
containers:
- name: api
image: myregistry/api:v2.4.1
ports:
- containerPort: 3000
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "256Mi"
cpu: "500m"
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: db-secret
key: url
---
apiVersion: v1
kind: Service
metadata:
name: api-server-svc
spec:
selector:
app: api-server
ports:
- port: 80
targetPort: 3000
type: LoadBalancer
Managed Kubernetes vs. Self-Managed
Running the Kubernetes control plane yourself is operationally intensive — you're managing etcd, API servers, controller managers, and scheduler upgrades. Managed Kubernetes services (EKS on AWS, GKE on Google Cloud, AKS on Azure) handle the control plane for you, significantly reducing operational burden.
Managed Options Comparison
- GKE (Google Kubernetes Engine): Most mature, best autopilot mode, tight Google Cloud integration
- EKS (Amazon Elastic Kubernetes Service): Dominant in AWS-heavy organizations, excellent ecosystem
- AKS (Azure Kubernetes Service): Strong for Microsoft-stack shops, good Active Directory integration
- DigitalOcean Kubernetes: Simpler and more affordable, excellent for small-to-medium teams
When Kubernetes Is and Isn't the Right Choice
Use Kubernetes When:
- You're running multiple services that need independent scaling
- You need zero-downtime deployments with rollback capability
- Your team has DevOps capacity to manage cluster operations
- You're hitting the limits of simpler platforms (Heroku, Railway, Render)
- You have compliance or data residency requirements that rule out serverless platforms
Don't Use Kubernetes When:
- You're running a monolith or a handful of services — Docker Compose on a VPS is simpler and sufficient
- Your team doesn't have Kubernetes expertise — the learning curve is steep and mistakes are expensive
- Serverless (Lambda, Cloud Run, Vercel) meets your scaling needs — K8s adds operational overhead that serverless eliminates
- You're in early-stage product development — premature infrastructure complexity slows down feature velocity
Helm: Package Management for Kubernetes
Helm is the package manager for Kubernetes — it allows you to define, install, and upgrade complex Kubernetes applications using templated YAML charts. Instead of maintaining dozens of raw YAML files for a database, you install a Helm chart with a single command and configure it via values. The Helm Hub has pre-built charts for Postgres, Redis, Nginx, Prometheus, and thousands of other applications.
Frequently Asked Questions
How long does it take to learn Kubernetes?
Expect 2–4 weeks to become productive with core concepts and another 2–3 months to feel confident operating production workloads. The Certified Kubernetes Administrator (CKA) exam is the industry standard certification for operations teams.
What's the minimum viable cluster for a small production application?
A 3-node cluster (1 control plane, 2 worker nodes) on a managed service like DigitalOcean Kubernetes starts around $80–$120/month. For very small workloads, a single-node setup or a simpler platform like Railway may be more cost-effective.
Can Kubernetes run on a single server?
Yes — k3s, k0s, and microk8s are lightweight Kubernetes distributions that run on a single node. These are useful for development, edge computing, or resource-constrained environments, but don't provide the high availability of a multi-node cluster.
How does Kubernetes handle database persistence?
Kubernetes handles stateful applications through PersistentVolumes (PV) and PersistentVolumeClaims (PVC). However, running production databases in Kubernetes adds significant complexity. Many teams use managed database services (RDS, Cloud SQL, Supabase) instead, avoiding stateful workloads in the cluster altogether.
Related Reading
- Web Development: The Complete Guide
- API Gateway Design Patterns
- WebSockets in Modern Web Applications
- AI & Automation for Business: The Complete Guide
Need help with your cloud infrastructure?
We design and implement cloud-native architectures — from containerization strategy to Kubernetes deployments to serverless migrations. Let's build infrastructure that scales with your business.
Talk Infrastructure