Choose your setup
KSail separates what Kubernetes you run (the distribution) from where its nodes run (the
provider). You pick both in ksail.yaml; the workflow (init → create → update → delete) is
identical regardless of choice. This page helps you choose. For the exhaustive compatibility grid, see
the Support Matrix.
Pick by goal
Section titled “Pick by goal”| Your goal | Start with | Why |
|---|---|---|
| Learn Kubernetes / general local dev | Vanilla (Kind) | Unmodified upstream Kubernetes, fastest to start, needs only Docker locally; also runs as kubeadm on Hetzner |
| Fast inner loop & CI/CD | K3s (K3d) | Lightweight, batteries-included, quick to create and tear down; also runs as native K3s on Hetzner |
| Production-grade / secure / immutable | Talos | API-driven immutable OS; runs on Docker, Hetzner, or Omni |
| Isolate teams or feature branches cheaply | VCluster | Virtual clusters inside one host — low overhead, strong isolation |
| Scale-test controllers or the API server | KWOK | Simulates thousands of nodes with near-zero resource cost |
| Managed Kubernetes on AWS | EKS | Managed control plane on AWS, created and managed with eksctl from a declarative eks.yaml spec |
| Managed Kubernetes on Google Cloud | GKE | Managed control plane on Google Cloud, declarative gke.yaml spec |
| Managed Kubernetes on Azure | AKS | Managed control plane on Azure, declarative aks.yaml spec |
Distributions at a glance
Section titled “Distributions at a glance”| Distribution | Tool | Best for | Providers |
|---|---|---|---|
| Vanilla | Kind (local), kubeadm (Hetzner) | Upstream Kubernetes, learning, local dev | Docker, Kubernetes, Hetzner |
| K3s | K3d (local), native K3s (Hetzner) | Lightweight dev & CI/CD | Docker, Kubernetes, Hetzner |
| Talos | Talos | Immutable, secure, production | Docker, Kubernetes, Hetzner, Omni |
| VCluster | Vind | Multi-tenancy, feature branches, CI isolation | Docker, Kubernetes |
| KWOK | kwokctl | Simulation, scale & controller testing | Docker, Kubernetes |
| EKS | eksctl | Managed Kubernetes on AWS | AWS |
| GKE | Google Cloud SDK | Managed Kubernetes on Google Cloud | GCP |
| AKS | Azure SDK | Managed Kubernetes on Azure | Azure |
Providers at a glance
Section titled “Providers at a glance”The provider decides where nodes actually run. Most distributions default to Docker (local containers). Vanilla, K3s and Talos also run on Hetzner Cloud servers, and Talos on nodes managed through Omni.
| Provider | Runs nodes as | Use it for |
|---|---|---|
| Docker | Local Docker containers | The default for all local distributions |
| Kubernetes (Nested) | Pods in an existing cluster | Running clusters inside a cluster — no Docker on the host |
| Hetzner | Hetzner Cloud servers | Affordable real cloud clusters (Talos, K3s, Vanilla) |
| Omni (Sidero) | Talos nodes via Sidero Omni | Managing Talos through the Omni SaaS |
| AWS | Managed EKS | Managed Kubernetes on Amazon Web Services |
| GCP | Managed GKE | Managed Kubernetes on Google Cloud |
| Azure | Managed AKS | Managed Kubernetes on Microsoft Azure |
How distribution and provider combine
Section titled “How distribution and provider combine”# ksail.yaml — Talos on Docker locally…spec: cluster: distribution: Talos provider: Docker# …and the same distribution on Hetzner for productionspec: cluster: distribution: Talos provider: HetznerKeeping the distribution constant across environments (e.g. Talos locally and in production) maximizes fidelity. See the Reference Architecture for a worked local-plus-production setup, and the Support Matrix for every supported combination.