How to build a Kubernetes cluster on HETZNER with k3s

Published 28.03.2021

Author Fabian Peter

Categories Engineering

HETZNER is a german cloud provider having very competitive prices for linux-based VMs. It’s a great place to run Kubernetes, as HETZNER provides many integrations with their systems we can leverage when running Kubernetes:

  • CSI Integration
  • Terraform integration
  • Loadbalancers

At p3r we’re building many tools for Kubernetes – one of them is apollo, which we will use to build a k3s cluster with hcloud Volumes as our default StorageClass using the hcloud csi-driver.

Provision the VMs

First, create 3 Ubuntu 20.04 VMs at HETZNER with a size that fits your needs (CX31 is our default), name them master-0, node-0 and node-1 and add your SSH key to them.

Download apollo

You need git, python3 and pip3 for the following steps.

git clone https://gitlab.com/p3r.one/apollo
cd apollo
pip3 install -r requirements.txt
mkdir -p inventory/hcloud

Configure your Kubernetes cluster

Add the following configuration to inventory/hcloud/hosts.yml:

all:
  hosts:
    master-0:
      ansible_host: IP_OF_MASTER0
    node-0:
      ansible_host: IP_OF_NODE0
    node-1:
      ansible_host: IP_OF_NODE1
  children:
    master:
      hosts:
        master-0:
    node:
      hosts:
        node-0:        
        node-1:
    k3s_cluster:
      children:
        master:
        node:

Add the following configuration to inventory/hcloud/vars.yml:

ansible_ssh_user: root
csi:
  provider: hcloud

Set your Hetzner API key (needed for the CSI integration):

export HCLOUD_TOKEN=MYHCLOUDTOKEN

Install your cluster

Run the following command to setup your k3s cluster:

ansible-playbook apollo.yml -e @inventory/hcloud/vars.yml -i inventory/hcloud/hosts.yml --flush-cache

The kubeconfig for your new cluster can be found in inventory/kubeconfig.yml. You can use Lens to work with your new Kubernetes cluster.

More stories from our blog

Serverless, FaaS and why do you need them?

Serverless, FaaS and why do you need them?

In recent years, serverless adoption has started, with more and more individuals depending on serverless technology to meet organizations’ specific needs. A survey conducted by Serverless Inc showed in 2018 that half of the respondents used serverless in their job,...

The DevOps Roadmap: Unikernels

The DevOps Roadmap: Unikernels

Containerization is one of the core building principles of clouds and DevOps, but traditional VMs and containers lack the security and agility that modern infrastructure craves. We are moving towards workloads that are smaller, faster, and more secure than the...

The DevOps Roadmap: 7 Containerization Best Practices

The DevOps Roadmap: 7 Containerization Best Practices

Containers have the opportunity for developers to build predictable environments isolated from other applications. The application's software dependencies can also be bundled in containers, such as particular versions of programming language runtimes and other...

The DevOps Roadmap: Virtualization

The DevOps Roadmap: Virtualization

The Full-Stack Developer's Roadmap Part 1: FrontendThe Full-Stack Developer's Roadmap Part 2: BackendThe Full-Stack Developer's Roadmap Part 3: DatabasesThe Full-Stack Developer's Roadmap Part 4: APIsThe DevOps Roadmap: Fundamentals with CI/CDThe DevOps Roadmap: 7...

How to Increase Your Luck Surface Area

How to Increase Your Luck Surface Area

In September 2020, I was actively looking to grow as a freelancer. I applied to hundreds of position and sometimes underbid, but results didn’t even make me smile. Opportunities don’t come to you when you start; you need to create them for yourself. I assumed I am not...

Cloud Computing models: SaaS vs IaaS vs PaaS

Cloud Computing models: SaaS vs IaaS vs PaaS

Companies embrace cloud computing worldwide, and the forecasted size of 1025.9 billion USD by 2026 says the same story. Owning and managing infrastructure comes with a considerable cost and improper utilization of human resources. Companies are meant to foster...

What is Cloud Computing?

What is Cloud Computing?

"Cloud Computing" describes a set of terms that you hear everywhere nowadays. It might be in your morning newspaper, or the cool kid you know talks about it with few jargon terms like scalability, elasticity, etc. and now you want to know about these terms. I might...

How To Stop Taking Things Personally

How To Stop Taking Things Personally

Some things hide until we realize that they’re a part of us. I was also a victim of my mind and never discovered this dark side until recently. Whenever I wasn’t taken into consideration or mistreated, I couldn't stop taking things personally. I used to give control...

The Ins and Outs of Content Delivery Networks (CDN)

The Ins and Outs of Content Delivery Networks (CDN)

It is not a hidden fact that everybody’s day-to-day operations would become slow without caching. For example, the amount of time required for each component to load in a web application will add up quickly and might drive our users towards using alternatives. Ask any...

Interested in what we do? Looking for help? Wanna talk about software strategy?