Aller au contenu principal

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

FichierRôle
/etc/rancher/k3s/config.yamlConfiguration du serveur/agent
/etc/rancher/k3s/k3s.yamlKubeconfig 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-mode doit rester restrictif en production (le défaut 0600 limite 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