4 minutes
Kubernetes k3s : installer un cluster en 30 minutes
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
- Ne pas tout mettre sur Kubernetes : un simple Docker Compose suffit pour beaucoup de services
- Configurer les backups etcd : k3s utilise SQLite par défaut, mais pour un cluster, passez sur etcd avec des backups automatiques
- Surveiller les ressources : Kubernetes ne limite pas par défaut la consommation de CPU/RAM des pods. Définissez des limits.
- 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.