Self-Hosted Alternatives to Managed Kubernetes

Why Replace Managed Kubernetes?

Cost. Managed Kubernetes is expensive. AWS EKS charges $0.10/hour ($73/month) just for the control plane — before any worker nodes. GKE Autopilot charges per pod resource. AKS is “free” for the control plane but you still pay for VMs. A typical 3-node cluster on any cloud provider runs $150-500+/month.

Complexity tax. Cloud Kubernetes adds complexity: IAM roles, VPC networking, load balancer provisioning, storage classes, node groups, auto-scaling policies. You need cloud-specific knowledge on top of Kubernetes knowledge.

Overkill. Most self-hosters run a handful of services — not thousands of microservices. A managed Kubernetes cluster with auto-scaling and multi-AZ redundancy is massive overengineering for running Nextcloud, Immich, and a few other apps.

Vendor lock-in. Cloud-specific features (EBS storage, ALB ingress, IAM OIDC) tie your configs to a specific provider. Self-hosted Kubernetes is portable.

Best Alternatives

k3s — Best Overall

k3s is the obvious choice for self-hosted Kubernetes. It installs in 30 seconds, runs in 512 MB RAM, and is CNCF-certified — every Helm chart and kubectl command works. It bundles Traefik, CoreDNS, Flannel, and a local storage provisioner. One command to install, zero dependencies.

Replaces: EKS, GKE, AKS for self-hosters and small teams

Why it’s better for self-hosting:

  • $5-10/month VPS vs $73+/month managed control plane
  • Full Kubernetes API compatibility
  • Installs in 30 seconds
  • Runs on ARM (Raspberry Pi)
  • HA mode with 3+ nodes

Read our full guide: How to Self-Host k3s

MicroK8s — Best Addon Ecosystem

MicroK8s is Canonical’s Kubernetes distribution. It installs via snap and adds functionality through addons — microk8s enable dashboard, microk8s enable gpu, etc. If you want a batteries-included Kubernetes with easy addon management, MicroK8s delivers.

Best for: Ubuntu users who want easy addon management and snap-based updates.

Trade-off: Requires snap. Not available on distros without snap support.

Read our full guide: How to Self-Host MicroK8s

Docker Swarm — Simplest Alternative

If you don’t actually need Kubernetes and just want multi-node container orchestration, Docker Swarm is built into Docker. No extra installation, uses Docker Compose files, and handles service discovery and load balancing.

Best for: Users who know Docker and want the simplest path to clustering.

Trade-off: No Helm charts, no operators, smaller ecosystem.

Read our full guide: How to Set Up Docker Swarm

Nomad — Best Non-Kubernetes Option

If Kubernetes feels like the wrong tool, HashiCorp Nomad offers workload orchestration with a simpler model. It handles containers, VMs, and binaries with HCL configuration files.

Best for: HashiCorp ecosystem users, mixed workloads.

Trade-off: Smaller ecosystem, BSL license.

Read our full guide: How to Self-Host Nomad

Migration Guide

From EKS/GKE/AKS to k3s

  1. Export your manifestskubectl get all -A -o yaml > cluster-export.yaml
  2. Identify cloud-specific resources — replace cloud load balancers with Traefik ingress, cloud storage classes with local-path or Longhorn, cloud IAM with standard RBAC
  3. Set up k3scurl -sfL https://get.k3s.io | sh -
  4. Apply manifests — remove cloud annotations, apply to k3s
  5. Migrate persistent data — export PV data, recreate PVCs on k3s, restore data
  6. Update DNS — point your domains to the new server

What Needs to Change

Cloud FeatureSelf-Hosted Equivalent
Cloud load balancerTraefik (bundled with k3s) or MetalLB
EBS/Persistent DiskLocal-path provisioner (default) or Longhorn
IAM OIDC for podsServiceAccount tokens + RBAC
Cloud DNS integrationExternal-DNS or manual DNS
Cluster auto-scalingManual node addition
Node groupsk3s agent nodes with labels
Container registryHarbor, Docker Registry, or public registries
Cloud monitoringPrometheus + Grafana (self-hosted)

Cost Comparison

AWS EKS (3 nodes)GKE Autopilotk3s (Self-Hosted)k3s (Hetzner VPS)
Control plane$73/monthIncluded in pod costFreeFree
Compute (3 nodes)~$150-300/month~$50-200/monthYour hardware ($0)$15-45/month
Load balancer$16+/month$18+/monthTraefik (free)Traefik (free)
Storage~$10-50/month~$10-50/monthLocal disk (free)Local disk (free)
Total$250-440/month$80-270/month$0 (own hardware)$15-45/month
Annual$3,000-5,300$960-3,240$0 + electricity$180-540

The self-hosted option is 10-30x cheaper for small clusters.

What You Give Up

  • Auto-scaling. Cloud Kubernetes scales nodes automatically. Self-hosted requires manual node management.
  • Managed upgrades. Cloud providers handle control plane upgrades. With k3s, you run the upgrade yourself (usually one command, but still your responsibility).
  • Multi-AZ redundancy. Cloud providers distribute across availability zones. Self-hosted typically runs in one location.
  • SLA. Cloud providers offer 99.95% SLA. Self-hosted uptime depends on your infrastructure.
  • Integrations. Cloud-native services (managed databases, message queues, etc.) integrate deeply with managed Kubernetes. Self-hosted means running those services yourself too.

For most self-hosters running personal services, these trade-offs are irrelevant. You don’t need multi-AZ redundancy for Nextcloud.

Comments