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:
Package | Description |
---|---|
etcd | Ansible role to install etcd as systemd service |
haproxy | Ansible role to install HAProxy as Kubernetes load balancer for the APIServer |
containerd | Ansible role to install containerd as container runtime |
kube-node-common | Ansible role to install prerequisites for Kubernetes setup |
kube-control-plane | Ansible role to install master nodes with kubeadm |
kube-worker | Ansible 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.
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.
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.
noteAlternatively, 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
, thekubelet
service andkubeadm
. - If specified, it will install
HAProxy
and provision akeepalived
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 withkubeadm kubeconfig use
. - Optionally create other specified users with the same command.
- Retrieve the
kubeconfig
files to enable the usage ofkubectl
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.