hetzner-k3s — Production Kubernetes on Hetzner Cloud in Minutes

5 min read Original article ↗

The easiest and fastest way to create production-ready Kubernetes clusters. No Terraform to learn, no management cluster required. The tool is free — you only pay for Hetzner infrastructure.

2-3 min HA Cluster Setup

500 nodes In Under 11 Minutes

80% Savings vs AWS/GCP

Get Started View on GitHub

An independent open source project, not affiliated with Hetzner Online GmbH.

$ hetzner-k3s create --config cluster.yaml

Creating network...

Creating firewall...

Creating masters (3 nodes)...

Creating workers (3 nodes)...

Installing k3s...

Installing Hetzner CCM & CSI...

Cluster ready in 2m 34s

$ kubectl get nodes

NAME STATUS ROLES AGE master-1 Ready control-plane,master 2m master-2 Ready control-plane,master 2m master-3 Ready control-plane,master 2m worker-1 Ready <none> 1m worker-2 Ready <none> 1m worker-3 Ready <none> 1m

Why Choose hetzner-k3s?

Purpose-built for Hetzner Cloud. No compromises.

Speed That Sets Records

Create a 3-node HA cluster in just 2-3 minutes. We've tested 500-node clusters in under 11 minutes — possibly a world record for Kubernetes provisioning.

  • Parallel node provisioning
  • Optimised for Hetzner's API
  • No waiting for Terraform plans

Simplicity Without Compromise

One CLI tool, one YAML config file. No Terraform, Packer, Ansible, or existing Kubernetes cluster required. Batteries included.

  • Human-readable configuration
  • Version-controllable setup
  • All essentials pre-installed

Complete Control, Zero Lock-in

Your credentials stay on your machine. No third-party accounts, no platform fees, no one else can see your clusters or workloads.

  • API token never leaves your machine
  • No recurring platform fees
  • Full access to your infrastructure

Save Up to 80% vs Other Cloud Providers

hetzner-k3s is free — you only pay for Hetzner Cloud infrastructure, which offers unbeatable value

$ 158 /month

Infrastructure only — 3 masters + 10 workers

  • hetzner-k3s is 100% free
  • Pay only for Hetzner servers
  • No management platform fees
  • Traffic & DDoS protection included
  • Full infrastructure control

$ 1595+ /month

Same cluster size, different cloud

  • $73/month control plane fee
  • ~$1440/month for 10 EC2 instances
  • ~$81/month for Network Load Balancer
  • + data transfer, EBS
  • Complex pricing model

$ 368+ /month

Same infrastructure + platform fees

  • Per-vCPU management fees
  • Control plane fee (Pro tier)
  • Third-party account required
  • API token shared with platform

Real Infrastructure Costs (December 2025)

Cluster Type Configuration Monthly Cost
Development 1 master (CX23), 2 workers (CX23) ~$19/month
Small Production 3 masters (CPX22), 3 workers (CPX32) ~$68/month
Medium Production 3 masters (CPX22), 10 workers (CPX32) ~$158/month
Large Production 3 masters (CPX42), 50 workers (CPX32) ~$615/month

* Costs shown are for Hetzner Cloud infrastructure only. hetzner-k3s is completely free. Includes load balancer (~€5.50/month).

Everything You Need for Production

Batteries included. No assembly required.

High Availability

Deploy masters and worker pools across multiple Hetzner locations for regional resilience.

Autoscaling

Define min/max instances per node pool. The Cluster Autoscaler handles scaling based on demand.

Multiple Node Pools

Mix x86 and ARM instances at various performance levels. Cost-effective ARM (CAX) instances available.

Private Networking

All cluster communication happens over Hetzner's private network by default. Secure and fast.

CNI Options

Choose Flannel for simplicity or Cilium for advanced networking features like network policies.

Large Cluster Support

Tested with 500 nodes and designed to scale beyond. Production-proven architecture.

Zero-Downtime Upgrades

System Upgrade Controller enables seamless k3s upgrades without service interruption.

Production Components

Hetzner CCM, CSI driver, and Cluster Autoscaler installed automatically. Ready to deploy.

What Gets Installed

A complete, production-ready stack out of the box

k3s

Lightweight, certified Kubernetes distribution by Rancher. Lower resource footprint, single binary, production-ready.

Hetzner Cloud Controller Manager

Automatic load balancer provisioning and node lifecycle management integrated with Hetzner Cloud.

Hetzner CSI Driver

Persistent volumes via Hetzner block storage. Dynamic provisioning for your stateful workloads.

System Upgrade Controller

Automated, zero-downtime k3s upgrades. Keep your cluster up-to-date with minimal effort.

Cluster Autoscaler

Automatic node scaling based on demand. Scale up when pods are pending, scale down when resources are idle.

Private Network & Firewall

All integrated with Hetzner's private networking and firewall. Secure by default.

Who Uses hetzner-k3s?

Trusted by teams who value simplicity and efficiency

Startups

Running cost-efficient production workloads without breaking the bank on cloud infrastructure.

Development Teams

Spinning up ephemeral test clusters in minutes, tearing them down when done. Fast iteration cycles.

Agencies & Consultants

Deploying client infrastructure quickly with a reproducible, version-controlled setup.

Regulated Industries

Companies requiring data sovereignty with EU-based data centres and full infrastructure control.

Platform Engineers

Who want simplicity without sacrificing control. No magic, just straightforward infrastructure.

Cost-Conscious Teams

Saving up to 80% compared to major cloud providers while maintaining production quality.

Get Started in Minutes

From zero to production cluster with just a few commands

1. Install hetzner-k3s

brew install vitobotta/tap/hetzner_k3s
wget https://github.com/vitobotta/hetzner-k3s/releases/latest/download/hetzner-k3s-linux-amd64
chmod +x hetzner-k3s-linux-amd64
sudo mv hetzner-k3s-linux-amd64 /usr/local/bin/hetzner-k3s

2. Create your configuration

hetzner_token: <your-token>
cluster_name: my-cluster
kubeconfig_path: "./kubeconfig"
k3s_version: v1.32.0+k3s1

networking:
  ssh:
    port: 22
    use_agent: false
    public_key_path: "~/.ssh/id_ed25519.pub"
    private_key_path: "~/.ssh/id_ed25519"
  allowed_networks:
    ssh:
      - 0.0.0.0/0
    api:
      - 0.0.0.0/0

masters_pool:
  instance_type: cpx22
  instance_count: 1
  locations:
  - fsn1 # See documentation for the list of available locations

worker_node_pools:
- name: static
  instance_type: cpx32
  instance_count: 2
  location: fsn1 # See documentation for the list of available locations

- name: autoscaled
  instance_type: cpx32
  location: fsn1
  autoscaling:
    enabled: true
    min_instances: 0
    max_instances: 2

3. Create your cluster

hetzner-k3s create --config cluster.yaml

Your cluster will be ready in 2-3 minutes. The kubeconfig is saved automatically.

4. Start using your cluster

export KUBECONFIG=./kubeconfig
kubectl get nodes

No Terraform. No Packer. No Ansible. No management cluster. No third-party account.

Read Full Documentation

100% Free & Open Source

hetzner-k3s is released under the MIT License. Use it freely for personal projects, startups, or enterprise deployments. No hidden fees, no premium tiers, no limitations.

Inspect the code, modify it, contribute back — it's truly open.

View on GitHub

Professional Support Available

Need help with your Kubernetes setup? Want custom features or enterprise support? Professional consultancy services are available for teams who need expert guidance.

  • Cluster architecture review
  • Production deployment assistance
  • Custom feature development
  • Training and workshops
Get in Touch