Pourquoi choisir K3s plutôt que Kubernetes complet sur un VPS
Kubernetes standard embarque plusieurs composants lourds : etcd, kube-apiserver, kube-controller-manager et kube-scheduler tournent en parallèle et consomment facilement 2 à 4 Go de RAM au démarrage, sans compter vos applications. Sur un VPS de 2 Go, il ne reste pratiquement rien pour les charges de travail réelles. K3s résout ce problème en regroupant tous les composants du control plane dans un seul binaire, en remplaçant etcd par SQLite pour les petits clusters, et en supprimant les fonctionnalités rarement utilisées. Le résultat : un cluster Kubernetes pleinement certifié CNCF, compatible kubectl et helm, qui s'installe en moins de deux minutes et consomme environ 512 Mo pour un nœud agent, et autour de 1 Go pour un nœud serveur.
Les avantages concrets de K3s
- **Binaire unique de 60 Mo** incluant le runtime
containerd, CoreDNS et le gestionnaire de stockage local, sans dépendances système supplémentaires. - **Traefik intégré** comme ingress controller par défaut, prêt à terminer le TLS sans configuration supplémentaire.
- **Compatibilité native** avec
kubectlethelmdès la fin de l'installation, sans adaptation. - **Mise à jour simplifiée** : remplacer le binaire et redémarrer le service suffit dans la majorité des cas.
- **Certification CNCF v1.32** garantissant la conformité avec l'API Kubernetes standard.
Prérequis avant de commencer
Pour suivre ce guide, il vous faut un VPS avec au minimum 2 Go de RAM et 1 vCPU sous Ubuntu 22.04 ou Debian 12. Le port 6443 doit être ouvert dans votre pare-feu pour que kubectl puisse communiquer avec l'API du cluster depuis votre machine locale. Si vous souhaitez exposer des services en HTTPS, préparez un nom de domaine pointant vers l'IP de votre VPS, par exemple votre-domaine.com. Une connexion SSH avec les droits root ou sudo complète la liste.
De l'installation à votre première app HTTPS
Provisionner le VPS et ouvrir les ports nécessaires
Connectez-vous en SSH à votre VPS, puis autorisez les ports 80, 443 et 6443 dans votre pare-feu. Sur Ubuntu avec ufw : ufw allow 80/tcp, ufw allow 443/tcp, ufw allow 6443/tcp. Assurez-vous que le système est à jour avec apt update && apt upgrade -y avant d'aller plus loin.
Installer K3s en une commande
Exécutez le script officiel : curl -sfL https://get.k3s.io | sh -. Le script télécharge le binaire, installe un service systemd nommé k3s et démarre le control plane. À la fin de l'installation, vérifiez l'état du service avec systemctl status k3s. Le nœud est prêt lorsque son statut passe à Ready.
Configurer kubectl en local
Sur votre machine locale, copiez le fichier kubeconfig depuis votre VPS : scp [email protected]:/etc/rancher/k3s/k3s.yaml ~/.kube/config. Remplacez ensuite 127.0.0.1 par l'IP publique de votre VPS dans ce fichier. Testez la connexion avec kubectl get nodes : vous devez voir votre nœud unique en statut Ready.
Déployer une application exemple
Créez un fichier app.yaml contenant un Deployment et un Service de type ClusterIP exposant votre application sur le port 80. Appliquez-le avec kubectl apply -f app.yaml, puis vérifiez que le pod démarre avec kubectl get pods.
Configurer Traefik pour l'ingress HTTPS
K3s inclut Traefik comme IngressController. Créez un objet Ingress pointant vers le Service de l'étape précédente avec l'annotation kubernetes.io/ingress.class: traefik et votre hôte votre-domaine.com. Appliquez avec kubectl apply -f ingress.yaml et vérifiez l'accès HTTPS dans votre navigateur.
En production, désactivez l'utilisation du token par défaut stocké dans /var/lib/rancher/k3s/server/node-token pour les connexions non supervisées. Utilisez k3s token pour générer des tokens à durée de vie limitée lors de l'ajout de nœuds workers. Activez également les audit logs Kubernetes en passant --kube-apiserver-arg=audit-log-path=/var/log/k3s-audit.log au démarrage du service.
K3s comme passerelle vers Kubernetes complet
K3s occupe une place logique entre Docker Compose, qui convient aux applications simples sur un seul hôte, et un cluster Kubernetes complet qui demande une infrastructure dédiée. Il vous permet d'acquérir les réflexes Kubernetes — Deployments, Services, Ingress, ConfigMaps, secrets — sur un environnement de taille réelle, sans les contraintes d'un cluster multi-nœuds. Lorsque votre trafic ou votre équipe grandira, la migration vers un cluster upstream sera directe : les manifestes YAML et les charts helm que vous aurez écrits fonctionneront sans modification. Pour aller plus loin dans la configuration de Traefik avec K3s, consultez notre guide sur le déploiement avec Traefik.