Skip to content

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.

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
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

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
# ksail.yaml — Talos on Docker locally…
spec:
cluster:
distribution: Talos
provider: Docker
# …and the same distribution on Hetzner for production
spec:
cluster:
distribution: Talos
provider: Hetzner

Keeping 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.