k3s — Kubernetes léger
k3s (Rancher/SUSE) est une distribution Kubernetes allégée packagée en un unique binaire (< 100 Mo), pensée pour l'edge, l'IoT, le CI et les environnements où un cluster Kubernetes complet (kubeadm) est disproportionné. Il embarque control plane, kubelet et un runtime containerd dans un seul processus par nœud.
Installation
# Nœud serveur (control plane)
curl -sfL https://get.k3s.io | sh -
# Nœud agent (worker), avec le token du serveur
curl -sfL https://get.k3s.io | K3S_URL=https://<ip-serveur>:6443 K3S_TOKEN=<token> sh -
systemctl status k3s # (ou k3s-agent sur un nœud worker)
Le token du serveur se récupère avec cat /var/lib/rancher/k3s/server/node-token.
Fichiers de configuration
| Fichier | Rôle |
|---|---|
/etc/rancher/k3s/config.yaml | Configuration du serveur/agent |
/etc/rancher/k3s/k3s.yaml | Kubeconfig généré (accès kubectl) |
/var/lib/rancher/k3s/ | Données (etcd embarqué ou SQLite, images) |
Commandes utiles
systemctl status k3s
k3s kubectl get nodes # alias kubectl intégré
k3s crictl ps # conteneurs via CRI
k3s ctr images ls # containerd embarqué
Exemple de configuration
# /etc/rancher/k3s/config.yaml
write-kubeconfig-mode: "0644"
disable:
- traefik # désactiver l'ingress controller intégré si un autre est utilisé
tls-san:
- k3s.example.lab
Sécurisation
- Par défaut, k3s utilise SQLite en mono-nœud ; pour un cluster HA, migrer vers etcd embarqué (
--cluster-init) ou une base externe. - Restreindre le port API (6443) et le port des nœuds agents (10250) au réseau du cluster.
write-kubeconfig-modedoit rester restrictif en production (le défaut0600limite l'accès au kubeconfig root-généré).- Les composants intégrés inutiles (Traefik, servicelb) peuvent être désactivés via
disable:pour réduire la surface d'attaque.
Logs & dépannage
journalctl -u k3s -f
k3s kubectl get events -A
k3s check-config # vérifie les prérequis kernel/cgroups
Voir aussi
- kubelet — l'agent que k3s embarque en interne
- Kubernetes — concepts