Skip to main content
Version: Next

On-prem Installer

KFD OnPremises Installer

Kubernetes Fury on-premises is an installer and add-on module for the Kubernetes Fury Distribution (KFD) that provides packages to install Kubernetes to on-premises bare-metal nodes and/or VMs.

Overview

Kubernetes Fury on-premises uses Ansible to provision nodes with a collection of open source tools to install Kubernetes in an on-premises environment.

Packages

The following packages are included in the Fury Kubernetes on-premises installer:

PackageDescription
etcdAnsible role to install etcd as systemd service
haproxyAnsible role to install HAProxy as Kubernetes load balancer for the APIServer
containerdAnsible role to install containerd as container runtime
kube-node-commonAnsible role to install prerequisites for Kubernetes setup
kube-control-planeAnsible role to install control-plane nodes with kubeadm
kube-workerAnsible role to install worker nodes and join them to the cluster with kubeadm

Click on each package to see its full documentation.

Compatibility

This version is compatible with Kubernetes 1.31.4 plus the complete list in the compatibility matrix.

Check the compatibility matrix for additional information about previous releases of the module.

warning

Support for the ARM platform is still in beta status, the Load Balancers managed by furyctl are not currently supported for the RHEL and RHEL derivatives running on ARM.

Please use a different OS for the Load Balancers VMs (or disable them and create your own load balancer) to be able to follow the tutorial.

Usage

To create/upgrade a Kubernetes cluster with this installer we strongly suggest to use furyctl, our companion CLI tool to manage the full lifecycle of KFD clusters.

This installer is fully automated with the OnPremises provider. furyctl automates the installation of the required components inside each node with your own parameters, which you can specify using a configuration file.

tip

Check the Fury on VMs guide to get started.

Find more info about the OnPremises provider here.

If you want to create Ansible playbooks by yourself, you can take a look at the examples inside our GitHub repository to have an idea of what you can do.

Requirements

The prerequisites to create a Kubernetes cluster using this installer are:

  • A list of nodes that will act as the control-plane for the cluster.

  • A list of nodes that will act as the worker nodes for the cluster, which need to be different from the control-plane nodes.

  • (Optionally) A list of nodes that will act as load balancers to sends traffic to all control-plane nodes.

    note

    Alternatively, if you already have a load balancer inside your infrastructure that is configurable to balance traffic towards the control-plane nodes, you can use it.

  • An SSH server installed inside each node, with a user that can authenticate using an SSH key and can execute sudo without entering the password.

  • Firewall rules to enable network traffic between all nodes.

  • A PKI for both Kubernetes and etcd.

The supported Operating Systems are Debian (and derivatives) and RHEL (and derivatives).

Kubernetes cluster

A vanilla Kubernetes cluster refers to the installation of packages and requirements as provided by Kubernetes itself. Unlike vendor-specific Kubernetes distributions (e.g., EKS from Amazon or GKE from Google), vanilla Kubernetes clusters are free from proprietary add-ons, providing a clean slate for customization.

To have an overview of the required steps to create a vanilla Kubernetes cluster, you can see the Creating a cluster with kubeadm page from the Kubernetes documentation.

This installer will automate the creation of a vanilla Kubernetes cluster with the following components:

  • An etcd cluster.
  • containerd as the Container runtime, installed inside all nodes to enable the orchestration of container images.
  • The kubelet systemd unit installed inside all nodes.
  • kubeadm installed inside all nodes

It will also disable the swap file/partition and put SELinux in permissive mode.

The installer will:

  • Provision each node with containerd, the kubelet service and kubeadm.
  • If specified, it will install HAProxy and provision a keepalived virtual IP on designated nodes.
  • Create the etcd cluster inside the control-plane nodes
  • Use kubeadm init to create the first control-plane instance
  • Use kubeadm join to add all other control-plane and worker nodes to the cluster.
  • Create a kubernetes-admin user with kubeadm kubeconfig use.
  • Optionally create other specified users with the same command.
  • Retrieve the kubeconfig files to enable the usage of kubectl to interact with the cluster.

It can also be used to upgrade the Kubernetes version on all nodes. This operation will renew all internal certificates.