// THE REBEL BLOG

Thoughts on free software, privacy, and taking back control

2026-03-14 β€’ 12 min read β€’ DevOps

Kubernetes: Container Orchestration at Scale

You finally got Docker running. Your containers are building, your images are pushing to the registry, and your application is live. Then comes the hard part: how do you run this in production? How do you handle multiple replicas, rolling updates, scaling, service discovery, and failures?

Enter Kubernetesβ€”often abbreviated as K8s (because K + 8 letters + s). Originally developed by Google and now maintained by the Cloud Native Computing Foundation, Kubernetes has become the industry standard for container orchestration.

What Problem Does Kubernetes Solve?

Docker gives you containers. Kubernetes gives you a platform to run those containers at scale. Consider what happens when:

  • Your traffic spikes and you need more instances
  • A container crashes and needs to restart
  • You want to deploy a new version without downtime
  • You need to route traffic to different versions for testing
  • You want to store data that persists across container restarts

You could script all of this yourself, or you could let Kubernetes handle it. Kubernetes provides:

  • Self-healing β€” Restart failed containers, replace failed nodes
  • Auto-scaling β€” Scale based on CPU, memory, or custom metrics
  • Rolling updates β€” Deploy new versions without downtime
  • Service discovery β€” Find services automatically without manual config
  • Load balancing β€” Distribute traffic across healthy pods
  • Secret management β€” Store sensitive data securely

Kubernetes Architecture

Understanding Kubernetes starts with understanding its components. A Kubernetes cluster has two main parts: the control plane and the worker nodes.

The Control Plane

The control plane manages the cluster. It makes scheduling decisions, responds to cluster events, and handles API requests. Key components:

  • kube-apiserver β€” The API front-end that handles all requests
  • etcd β€” Distributed key-value store holding cluster state
  • kube-scheduler β€” Assigns pods to nodes based on resources
  • kube-controller-manager β€” Runs controller loops to maintain desired state

Worker Nodes

Nodes are the machines running your workloads. Each node runs:

  • kubelet β€” Agent that communicates with the control plane
  • kube-proxy β€” Network proxy handling pod networking
  • container runtime β€” Usually Docker or containerd

Core Concepts

Pods

A pod is the smallest deployable unit in Kubernetes. It represents a single instance of your application. A pod can contain one or more containers (usually just one) that share networking and storage.

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp
    image: myapp:latest
    ports:
    - containerPort: 8080

Deployments

A deployment manages replicas of your pods. It handles rolling updates, rollbacks, and scaling.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:v1
        ports:
        - containerPort: 8080

Services

A service provides a stable network endpoint for your pods. Even when pods are recreated with new IPs, the service stays the same.

apiVersion: v1
kind: Service
metadata:
  name: myapp-service
spec:
  selector:
    app: myapp
  ports:
  - port: 80
    targetPort: 8080
  type: LoadBalancer

ConfigMaps and Secrets

ConfigMaps store non-sensitive configuration data. Secrets store sensitive data like passwords and API keys.

Ingress

An ingress manages external HTTP/HTTPS access to services, providing routing and TLS termination.

Getting Started

Ready to try Kubernetes? Here are your options:

  1. Minikube β€” Single-node Kubernetes for local development
  2. kind β€” Kubernetes in Docker (great for testing)
  3. k3s β€” Lightweight Kubernetes for edge and IoT
  4. Managed Kubernetes β€” EKS, GKE, AKS, or DigitalOcean Kubernetes

Install Minikube

# Linux
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

# Start cluster
minikube start

# Check status
kubectl get nodes
kubectl get pods --all-namespaces

Your First Deployment

# Create a deployment
kubectl create deployment nginx --image=nginx

# Scale it
kubectl scale deployment nginx --replicas=3

# Expose it
kubectl expose deployment nginx --port=80 --type=NodePort

# Check it
kubectl get pods
kubectl get services

Kubernetes vs Docker Swarm

If you're wondering why not just use Docker Swarm, that's a fair question. Docker Swarm is simpler and built into Docker, but Kubernetes offers:

  • More sophisticated scheduling
  • Better ecosystem and tooling
  • More flexible networking
  • Better secret management
  • Broader cloud provider support

Swarm is fine for simple use cases, but Kubernetes has become the industry standard for a reason.

The Learning Curve

Kubernetes is complex. There's no sugarcoating it. You'll need to understand pods, deployments, services, ingress, configmaps, secrets, persistent volumes, and more. But the investment pays off.

Start small. Use a managed service if you can. Learn one concept at a time. And remember: you don't need to be a Kubernetes expert to get value from it.

Start with what you need, expand as you learn.

What's Next?

Once you're comfortable with the basics, explore:

  • Helm β€” Package manager for Kubernetes
  • Operators β€” Automate complex application management
  • Service meshes β€” Istio, Linkerd for microservice networking
  • GitOps β€” ArgoCD, Flux for declarative deployments

Kubernetes isn't going anywhere. It's become as fundamental to modern infrastructure as virtualization was a decade ago. The time to learn it is now.

// Comments

Leave a Comment