Kubernetes, c’est l’outil qui a changé ma façon de déployer des applications. Mais Kubernetes standard, c’est lourd. k3s, c’est la version allégée, parfaite pour un homelab. Voici comment j’ai installé mon premier cluster en 30 minutes, et ce que j’en fais aujourd’hui.

Pourquoi k3s ?

Kubernetes est devenu le standard pour déployer des applications conteneurisées. Mais l’installation standard (kubeadm) nécessite au minimum deux machines, 2 Go de RAM chacune, et une configuration complexe.

k3s, c’est Kubernetes en version mini :

  • Un seul binaire : pas de dizaine de composants à installer
  • 512 Mo de RAM suffisent pour le master
  • SQLite au lieu de etcd (plus simple, plus léger)
  • Docker ou containerd comme runtime

Pour un homelab, k3s est le bon choix. Vous avez un cluster Kubernetes fonctionnel en 30 minutes, sans devenir expert en infrastructure.

Prérequis

  • 3 machines (VMs Proxmox ou physiques) avec Ubuntu 22.04
  • 2 Go de RAM minimum par nœud (4 Go recommandé)
  • Une IP statique pour chaque nœud
  • SSH root configuré entre les nœuds

Si vous avez seulement une machine, k3s peut tourner en mode single-node. Mais pour un vrai cluster, il en faut au moins deux (un master, un worker).

Installation du master

Sur la première machine (le master), lancez :

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

C’est tout. L’installation prend moins de deux minutes. k3s installe containerd, le serveur API, et les composants nécessaires.

Après l’installation, récupérez le token pour rejoindre le cluster :

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

Ce token, vous en aurez besoin pour ajouter les workers.

Ajouter les workers

Sur chaque machine worker, lancez :

curl -sfL https://get.k3s.io | K3S_URL=https://MASTER_IP:6443 K3S_TOKEN=TOKEN sh -

Remplacez MASTER_IP par l’adresse du master et TOKEN par le token récupéré précédemment.

Vérifiez que les nœuds sont bien connectés :

sudo kubectl get nodes

Vous devriez voir tous vos nœuds avec le statut “Ready”.

Déployer votre première application

Avec k3s, kubectl est déjà installé. Créons un déploiement simple :

# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

Appliquez-le :

kubectl apply -f nginx-deployment.yaml

Exposez-le :

kubectl expose deployment nginx --port=80 --type=NodePort

Accédez à nginx via http://WORKER_IP:30080.

Les avantages de k3s pour le homelab

1. Haute disponibilité

Avec un cluster de 3 nœuds, si un tombe, les pods migrent automatiquement vers les autres. C’est la magie de Kubernetes.

2. Scaling horizontal

Besoin de plus de puissance ? Ajoutez un worker. Le cluster répartit automatiquement la charge.

3. Mises à jour sans downtime

Avec les rolling updates, vous pouvez mettre à jour vos applications sans coupure de service.

4. GitOps

Avec des outils comme ArgoCD ou Flux, vous pouvez versionner votre configuration Kubernetes dans Git. Chaque modification est tracée, auditée, et reversible.

Ce que je tourne sur mon cluster

Voici les applications que j’ai déployées sur mon cluster k3s :

  • Remark42 : système de commentaires auto-hébergé pour le blog
  • Prometheus + Grafana : monitoring des métriques
  • Loki : collecte de logs
  • Uptime Kuma : surveillance de la disponibilité (attention, ça tourne sur Docker, pas k3s)

Pourquoi pas tout sur Kubernetes ? : certains services (comme le NAS ou le DNS) sont plus simples à maintenir en VM ou container LXC. Kubernetes, c’est pour les applications qui ont besoin de scaling ou de haute disponibilité.

Les pièges à éviter

  1. Ne pas tout mettre sur Kubernetes : un simple Docker Compose suffit pour beaucoup de services
  2. Configurer les backups etcd : k3s utilise SQLite par défaut, mais pour un cluster, passez sur etcd avec des backups automatiques
  3. Surveiller les ressources : Kubernetes ne limite pas par défaut la consommation de CPU/RAM des pods. Définissez des limits.
  4. Ne pas négliger le réseau : un cluster avec un réseau lent ou instable, c’est pire qu’un seul serveur

Maintenance et mises à jour

k3s se met à jour facilement :

# Sur le master
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.28.4+k3s2 sh -

# Sur les workers (avec le token)
curl -sfL https://get.k3s.io | K3S_URL=https://MASTER_IP:6443 K3S_TOKEN=TOKEN INSTALL_K3S_VERSION=v1.28.4+k3s2 sh -

Astuce : mettez à jour les workers d’abord, puis le master. Ça évite les interruptions de service.

Conclusion

k3s est la porte d’entrée idéale vers Kubernetes pour les homelabers. Installation rapide, ressources légères, et toute la puissance de K8s.

Commencez avec un master et un worker, déployez une première application, et ajoutez des nœuds au fur et à mesure. La courbe d’apprentissage est raide, mais une fois que vous avez compris les concepts (Deployments, Services, Ingress), vous ne reviendrez pas en arrière.

Et n’oubliez pas : un cluster sans backup, c’est un château de sable. Configurez les snapshots etcd dès le premier jour.