Installer K3s

Au sommaire :

  • 1-Qu'est-ce que K3s ?
  • 2-Prérequis
  • 3-Installation
  • 4-Désinstallation
  • 5-Mise à jour

1-Qu'est-ce que K3s ?

K3s est une distribution Kubernetes conçue par Rancher Lab.

K3s

Contrairement à un K8s "from scratch", K3s est extrêmement léger. Le binaire pèse environs 50 Mo et une fois installé, il nécessite un minimum de 512 Mo de mémoire vive.

K3s embarque avec lui les éléments suivants :

2-Prérequis

Il vous faudra une machine virtuelle sous Ubuntu Server 22.04 LTS.

Voici le guide pour ceux qui veulent repartir de zéro.

Virtualiser Ubuntu Server 22.04 LTS sur Proxmox VE
Guide d’installation de Ubuntu Server 22.04 LTS sur Proxmox VE avec mes meilleurs réglages.

Si vous voulez gagner du temps, utilisez un template cloud-init.

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

Optionnel mais si vous avez une instance Pi-Hole à domicile et que Unbound est activé, pensez à ajouter les entrées DNS pour vos nœuds K3s, cela vous évitera d'indiquer les adresses IP.

Installer Pi-hole avec LXC
Gui d’installation de pi-hole dans un conteneur LXC

3-Installation

Installer le nœud Master

Pour ce guide, nous allons installer K3s avec le script fournis par le site web à une exception prés, nous ne déploierons pas KlipperLB (ServiceLB) que nous remplacerons par la suite par Metal LB.

En ce qui concerne Traefik, c'est la version 2.9.10 qui est embarquée donc nous garderons ce dernier comme contrôleur Ingress au lieu de NGINX.

Nous allons indiquer dans la configuration par défaut les options suivantes :

  • K3S_KUBECONFIG : chmod 644 (lecture écriture pour l'utilisateur, lecture seule pour le groupe et les utilisateurs extérieurs). Cela vous évitera d'utiliser la commande "sudo" pour "k3s" et "kubectl".
  • KUBECONFIG : chemin de la configuration de K3s, cela nous évitera d'indiquer le chemin avec la commande "--kubeconfig".
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--write-kubeconfig-mode 644 --write-kubeconfig /etc/rancher/k3s/k3s --disable servicelb" sh -s -

Après installation, vérifiez bien que le service K3s est actif.

sudo systemctl status k3s

Pour visualiser tout les pods, services, namespace et crd (custom ressources), tapez la commande suivante.

kubectl get pods,svc,ns,crd --all-namespaces

Ajouter un nœud

Pour ajouter un nœud au cluster, revenez à la partie 2 (prérequis) pour créer une machine virtuelle ou un conteneur LXC.

Sur le nœud "master", affichez la clé et copiez là.

sudo cat /var/lib/rancher/k3s/server/node-token

Puis exportez les variables suivantes :

  • K3S_KUBECONFIG : chmod 644 (lecture écriture pour l'utilisateur, lecture seule pour le groupe et les utilisateurs extérieurs). Cela vous évitera d'utiliser la commande "sudo" pour "k3s" et "kubectl"
  • K3S_URL : l'adresse du nœud "master" suivi du numéro de port (6443)
  • K3S_TOKEN : la clé qui se trouve dans /var/lib/rancher/k3s/server/node-token
export K3S_KUBECONFIG_MODE="644"
export K3S_URL="https://IP_ADRESS:6443"
export K3S_TOKEN="TOKEN_KEY"

Pour ajouter un nœud "worker", affichez le token sur le nœud Master.

sudo cat /var/lib/rancher/k3s/server/node-token

Puis sur le nœud Worker, ajoutez le ce dernier au cluster avec la commande suivante.

curl -sfL https://get.k3s.io | sh -s - agent --server https://IP_MASTER:6443 --token ${TOKEN}

Note : si vous avez le même nom d'hôte sur l'ensemble des nœuds, ajoutez "--with-node-id" à votre commande pour que K3s génère un ID aléatoire.

Retournez sur le nœud master et testez la commande suivante pour vérifier le bon fonctionnement.

kubectl get node

4-Désinstallation

Pour désinstaller K3s sur le nœud "master", tapez la commande suivante.

/usr/local/bin/k3s-uninstall.sh

Et enfin, pour le désinstaller sur le nœud "worker".

/usr/local/bin/k3s-agent-uninstall.sh

Pour un nettoyage en profondeur, tapez ces deux commandes sur l'ensemble des nœuds.

sudo rm -R /etc/rancher
sudo rm -R /var/lib/rancher

5-Mise à jour

Il y a 3 manière de mettre à jour K3s.

Version stable

curl -sfL https://get.k3s.io | sh -

Dernière version

curl -sfL https://get.k3s.io | INSTALL_K3S_CHANNEL=latest sh -

Version spécifique

curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=vX.Y.Z-rc1 sh -