What is Kubernetes?

Kubernetes (K8s) is an open-source container orchestration platform that automates the deployment, scaling, and management of containerized applications across clusters of machines.

By Maciej Marzęta Updated 2025-02-01

Definition

Kubernetes (often abbreviated K8s) is a container orchestration system originally developed by Google and now maintained by the Cloud Native Computing Foundation (CNCF). It manages the lifecycle of containerized applications across a cluster of machines.

While Docker packages and runs individual containers, Kubernetes manages fleets of containers in production - handling deployment, scaling, networking, and self-healing.

Key Concepts

  • Pod: The smallest deployable unit - one or more containers that share networking and storage.
  • Service: A stable network endpoint that routes traffic to pods, providing load balancing and service discovery.
  • Deployment: Declares the desired state for pods (replicas, image version) and manages rolling updates.
  • Namespace: Virtual clusters within a physical cluster for resource isolation.
  • ConfigMap/Secret: External configuration and sensitive data management.
  • Ingress: HTTP routing rules for external traffic entering the cluster.
  • Helm: Package manager for Kubernetes applications (charts).

When to Use Kubernetes

Kubernetes adds significant operational complexity. Use it when:

  • You run multiple services that need independent scaling
  • You need high availability with automatic failover
  • Your team has dedicated DevOps/Platform engineers
  • You need multi-cloud or hybrid cloud deployments

Don't use Kubernetes for simple applications, small teams without DevOps expertise, or single-service deployments. Managed services (Railway, Fly.io, Cloud Run) are simpler alternatives.

Code Example

# deployment.yaml - Deploy a FastAPI application
apiVersion: apps/v1
kind: Deployment
metadata:
  name: fastapi-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: fastapi-app
  template:
    metadata:
      labels:
        app: fastapi-app
    spec:
      containers:
      - name: api
        image: myregistry/fastapi-app:latest
        ports:
        - containerPort: 8000
        resources:
          requests:
            memory: "128Mi"
            cpu: "250m"
          limits:
            memory: "256Mi"
            cpu: "500m"

Frequently Asked Questions

Is Kubernetes overkill for small projects?

Often yes. Kubernetes is designed for large-scale, complex deployments. For small projects, Docker Compose, managed PaaS (Heroku, Railway, Fly.io), or serverless platforms (AWS Lambda, Cloud Run) are simpler and more cost-effective alternatives.

Need expert backend development?

I build scalable Python APIs and backend systems. Let's discuss your project.

Get in Touch