K3s Kubernetes léger : déploiement rapide de cluster pour homelab et edge

Si vous souhaitez Kubernetes sans surcharge importante de control plane, K3s est l’une des options les plus pragmatiques. Il est compact, rapide à installer et pleinement compatible avec les outils Kubernetes habituels.

Ce guide fournit une base efficace avec un nœud serveur et des workers optionnels, adaptée aux homelabs, petits environnements et usages edge.

Prérequis

  • Hôte Linux (Ubuntu, Debian ou RHEL)
  • 2 vCPU et 2 à 4 Go de RAM minimum par nœud
  • Ports de communication du cluster ouverts
  • Hostnames stables et synchronisation de l’heure

1) Installer le premier nœud (server)

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

Contrôlez l’état du service :

sudo systemctl status k3s
sudo k3s kubectl get nodes -o wide

K3s expose kubectl via la commande k3s, ce qui simplifie les premiers tests.

2) Exporter kubeconfig pour un usage standard

mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown "$(id -u):$(id -g)" ~/.kube/config

Pour un accès distant, remplacez 127.0.0.1 dans kubeconfig par l’IP ou le DNS du serveur.

3) Joindre un worker (optionnel)

Sur le serveur, récupérez le token :

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

Sur le worker :

curl -sfL https://get.k3s.io | \
  K3S_URL=https://<SERVER_IP>:6443 \
  K3S_TOKEN=<NODE_TOKEN> sh -

Validez les nœuds présents :

sudo k3s kubectl get nodes

4) Déployer une charge de test

sudo k3s kubectl create deployment hello-nginx --image=nginx:stable
sudo k3s kubectl expose deployment hello-nginx --type=ClusterIP --port=80
sudo k3s kubectl get pods,svc -o wide

Pour une validation externe rapide en lab, NodePort ou Ingress font l’affaire.

5) Base d’exploitation

Observabilité minimale

Prévoyez au moins :

  • Collecte de métriques
  • Accès aux logs conteneurs
  • Alertes disque et mémoire

Stratégie d’upgrade

Même si K3s simplifie les mises à jour, appliquez une méthode:

  1. Sauvegarde/snapshot
  2. Upgrade d’un nœud non critique
  3. Validation applicative
  4. Déploiement progressif sur le reste

Sauvegardes

  • Sauvegarder /etc/rancher/k3s/
  • Sauvegarder les snapshots du datastore
  • Tester régulièrement la restauration

Problèmes fréquents

Nœuds qui ne rejoignent pas

Vérifiez :

  • K3S_URL en https://
  • Port 6443 accessible
  • Token correctement copié
  • Horloges synchronisées

Pods bloqués en Pending

Souvent manque de ressources ou taints :

sudo k3s kubectl describe pod <pod-name>
sudo k3s kubectl describe node <node-name>

DNS interne défaillant

Contrôlez CoreDNS :

sudo k3s kubectl -n kube-system get pods | grep coredns

Conclusion

K3s est idéal pour obtenir les fonctionnalités Kubernetes avec moins de friction opérationnelle. Pour homelab, edge et environnements compacts, il offre un excellent compromis vitesse/fiabilité.

Commencez simple, stabilisez l’exploitation, puis ajoutez ingress, stockage, sécurité et monitoring selon la croissance des charges.