
Installer K3s un VPS en cloud public avec Wireguard
- Charles Fleury
- Kubernetes , Sécurité , Réseau , Vps
- 12 août 2025
Sommaire
Présentation de K3s
K3S est une distribution légère, rapide et simplifiée de Kubernetes, conçue pour fonctionner dans des environnements à ressources limitées tels que l’edge computing, l’IoT ou les homelabs. Son installation minimaliste, sa faible empreinte mémoire et ses fonctionnalités intégrées en font une solution idéale pour déployer et gérer des clusters Kubernetes là où la performance et la simplicité sont essentielles.
Pré-requis
- VPS protégé par Wireguard Voir l’article correspondant
Installation de K3S sur le master
Dans ce guide, nous allons suivre la documentation officielle, en y ajoutant quelques paramètres spécifiques à notre configuration réseau.
📄 Référence : Guide officiel K3S - Quick Start
curl -sfL https://get.k3s.io | \
INSTALL_K3S_EXEC="--node-ip 10.0.0.1 \
--advertise-address 10.0.0.1 \
--tls-san 10.0.0.1 \
--flannel-iface=wg0" \
sh -
Paramètre | Rôle |
---|---|
--node-ip 10.0.0.1 | Définit l’IP interne utilisée par Kubernetes pour ce nœud. |
--advertise-address 10.0.0.1 | Adresse IP annoncée aux autres nœuds du cluster. |
--tls-san 10.0.0.1 | Ajoute cette IP dans le certificat TLS de l’API Server. |
--flannel-iface=wg0 | Force Flannel à utiliser l’interface WireGuard wg0 pour le trafic inter-pods. |
💡 Astuce : 10.0.0.1 est un exemple d’adresse. Remplacez-la par l’IP WireGuard réelle de votre master.
Vérification de l’installation
Une fois l’installation terminée, il est important de vérifier que le service k3s est correctement démarré et que le nœud master est bien enregistré.
Vérifier l’état du service K3S
Cette commande permet de s’assurer que le service k3s est actif et sans erreur
sudo systemctl status k3s
Si tout est correct, vous devriez voir un état active (running) en vert.
Vérifier la présence du nœud dans le cluster
sudo kubectl get nodes
- STATUS doit être Ready
- ROLES doit indiquer
control-plane,master
pour un master - VERSION doit indiquer la version de K3S
Points importants
- Le fichier kubeconfig est disponible ici :
/etc/rancher/k3s/k3s.yaml
(vous pouvez l’exporter dans~/.kube/config
en modifiant l’adresse IP pour se connecter avec kubectl). - Sur un réseau WireGuard, la latence peut être légèrement plus élevée qu’en local, mais elle reste parfaitement adaptée pour un cluster K3S.
- Vous pourrez ensuite ajouter des workers
Configuration de ufw
Ouverture des ports HTTP(S)
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
Ouverture des ports K3S (API, Admin, etc) par Wireguard
ufw allow in on wg0 to any port 6443 proto tcp
ufw allow in on wg0 to any port 2379,2380 proto tcp
ufw allow in on wg0 to any port 8472 proto udp
ufw allow in on wg0 to any port 10250 proto tcp
ufw allow in on wg0 to any port 5001 proto tcp
ufw allow in on wg0 to any port 3309 proto tcp
ufw reload
Troubleshooting
En cas de dysfonctionnement, voici une liste de commandes utiles pour diagnostiquer les problèmes courants sur un cluster K3S.
Vérifier si des services écoutent sur les ports 80 et 443
ss -lntp | egrep ':(80|443)\b' || echo "rien n'écoute sur 80/443"
Affiche les processus en écoute sur les ports HTTP (80) et HTTPS (443). Si aucun service n’est détecté, un message l’indique.
Vérifier le service Traefik
kubectl -n kube-system get svc traefik
Liste le service Traefik dans l’espace de noms kube-system, pour confirmer qu’il est créé et exposé.
Vérifier les pods du load balancer Klipper
kubectl -n kube-system get pods -l app=klipper-lb -o wide
Affiche les pods Klipper Load Balancer et leurs adresses IP, permettant de valider leur état.
Vérifier les pods associés au service Traefik
kubectl -n kube-system get pods -l svc=traefik -o wide
Montre les pods correspondant au service Traefik.
Lister les règles d’Ingress
kubectl get ingress -A
Affiche l’ensemble des ressources Ingress dans tous les namespaces.
Vérifier la configuration d’environnement du service K3S
cat /etc/systemd/system/k3s.service.env
Permet de consulter les variables d’environnement appliquées à K3S au démarrage.
Vérifier les pods Traefik (via label standard Kubernetes)
kubectl -n kube-system get pods -l app.kubernetes.io/name=traefik -o wide
Affiche les pods identifiés comme Traefik avec le label Kubernetes standard.
Vérifier que le processus K3S est actif et ses paramètres
ps aux | grep 'k3s server'
Permet de confirmer que le processus k3s server est bien en cours d’exécution avec les bons paramètres.
Tester un accès HTTP local
curl -vk http://127.0.0.1:31018/
Effectue une requête HTTP locale sur un port interne exposé par Traefik.
curl -vk https://127.0.0.1:30344/
Effectue une requête HTTPS locale sur un port interne exposé par Traefik
Sniffer le trafic HTTP entrant
tcpdump -i {{NETWORK_INTERFACE}} tcp port 80
Capture en temps réel le trafic sur le port 80 pour diagnostiquer d’éventuels problèmes réseau.
Afficher les journaux du service K3S
journalctl -xeu k3s.service
Affiche les logs détaillés du service K3S pour identifier des erreurs au démarrage ou à l’exécution.
Vérifier les événements Kubernetes
kubectl events
Liste les événements Kubernetes récents, utiles pour détecter des erreurs sur les pods, services ou ingress.
Conclusion
L’installation de K3S avec une configuration adaptée à WireGuard permet de disposer rapidement d’un cluster Kubernetes léger, sécurisé et optimisé pour un réseau privé.
Étapes suivantes
Déployer des pods sur le cluster
Ajouter un nœud worker au réseau Wireguard
Ajouter ce même nœud au cluster k3s en répétant et adaptant les étapes ci-dessus
curl -sfL https://get.k3s.io | \ K3S_URL=https://10.0.0.1:6443 \ K3S_TOKEN={{ MASTER_TOKEN }} \ INSTALL_K3S_EXEC="--node-ip 10.0.0.2 \ --advertise-address 10.0.0.2 \ --tls-san 10.0.0.2 \ --flannel-iface=wg0" \ sh -
Le master token est disponible dans le fichier
/var/lib/rancher/k3s/server/node-token