Installer Kubefire

1-Qu'est-ce que KubeFire ?

Kubefire est un projet GitHub qui permet de déployer des clusters Kubernetes en utilisant des microVMs (micro virtual machine) FireCracker à travers Weave Ignite.

Installer Weave Ignite
Guide d’installation de Weave Ignite qui va vous permettre de déployer de microVMs sous Firecracker

Son atout principal est de disposer de plusieurs boostrapper pour provisionner les microVMs avec kubeadm, k3s, k0s et rke2.

Note : à ne pas confondre avec Firekube de Weaveworks

GitHub - innobead/kubefire: KubeFire 🔥, creates and manages Kubernetes Clusters using Firecracker microVMs
KubeFire 🔥, creates and manages Kubernetes Clusters using Firecracker microVMs - GitHub - innobead/kubefire: KubeFire 🔥, creates and manages Kubernetes Clusters using Firecracker microVMs

2-Prérequis

Il vous faut soit une machine physique, soit une machine virtuelle.

Ce tutoriel est basé sur la deuxième solution. Si vous êtes sur Proxmox VE, suivez ce tutoriel concocté par mes soins.

Initialiser vos machines virtuelles avec Cloud-init sur Proxmox VE
Guide d’installation de Cloud-Init qui va vous permettre d’automatiser vos déploiements

3-Configuration

Tout d'abord, il vous faut activer la virtualisation imbriquée pour créer des microVMs dans une machine virtuelle sinon vous aurez le message suivant avec Ignite.

Sur votre serveur PVE, ouvrez le terminal et créez le fichier "kvm-intel-conf".

touch /etc/modprobe.d/kvm-intel.conf

Puis ajoutez la ligne suivante au fichier.

echo "options kvm-intel nested=Y" > /etc/modprobe.d/kvm-intel.conf

Chargez le module noyau "kvm_intel".

modprobe kvm_intel

Enfin, vérifiez si le mode est activé.

cat /sys/module/kvm_intel/parameters/nested

Si ça affiche "Y", c'est que c'est activé.

Ensuite, dans les paramètres de votre machine virtuelle, allez sur "Processors" et cliquez sur "Edit".

Puis changez le type de processeur par "host".

Votre machine est prête pour l'inception.

3-Téléchargement du binaire

Méthode curl

curl -sfSL https://raw.githubusercontent.com/innobead/kubefire/master/hack/install-release-kubefire.sh | bash

Méthode Huber

Installez Huber à partir de ce tutoriel.

Installer Huber
Guie d’installation de Huber, un gestionnaire de paquets qui va simplifier l’installation de projets se trouvant sur GItHub.

Puis téléchargez kubefire avec la commande suivante.

huber install kubefire

4-Installation

Installez kubefire avec la commande suivante.

sudo kubefire install

Le script va installer les éléments suivants :

  • runc : le runtime de bas niveau permettant de créer et d'exécuter des conteneurs. Issus du runtime libcontainer offert par Docker à l'OCI, il est le plus populaire de l'industrie en étant utilisé par containerd (utilisé par Docker) et CRI-O (le runtime le plus utilisé sur Kubernetes).
  • containerd : le runtime de Docker et de CRI-O. Pour schématiser le fonctionnement de containerd, lorsque vous utilisez le CLI de Docker, vous communiquez avec le daemon et ce dernier va transmettre les informations à containerd (haut niveau) qui va ensuite le transmettre à runc (bas niveau) et enfin exécuter votre demande.
  • Ls plugins CNI (Container Network Interface): des spécification et des bibliothèques permettant d'écrire des plugins pour configurer les interfaces réseau dans les conteneurs
  • Weave Ignite : déjà abordé dans un précédent tutoriel. Permet de créer des microVMs firecracker à partir d'images OCI

Pour le désinstaller.

kubefire uninstall

3-Déploiement d'un cluster

Voici quelques exemples de déploiement de cluster. SI vous avez besoin de plus d'informations sur les commandes, allez directement sur la page github.

GitHub - innobead/kubefire: KubeFire 🔥, creates and manages Kubernetes Clusters using Firecracker microVMs
KubeFire 🔥, creates and manages Kubernetes Clusters using Firecracker microVMs - GitHub - innobead/kubefire: KubeFire 🔥, creates and manages Kubernetes Clusters using Firecracker microVMs

Pour chacune des commandes (hors variable), nous allons :

  • faire un appel de commande avec kubefire
  • Créer un cluster de notre choix (kubeadm, k3s, k0s, rke2)
  • Indiquer le nombre de worker (2 pour l'exemple)

kubeadm

sudo kubefire cluster create kubeadm --bootstrapper=kubeadm --worker-count 2

k3s

sudo kubefire cluster create k3s --bootstrapper=k3s --worker-count 2

k0s

sudo kubefire cluster create k0s --bootstrapper=k0s --worker-count 2

rke2

sudo kubefire cluster create rke2 --bootstrapper=rke2 --worker-count 2