blog » self-hosted » orchestration » minimalistic-ufw-config-for-k3s
Configuration UFW minimaliste pour K3s
Si vous installez Kubernetes (K3s dans mon cas) et tombez sur une erreur comme :
2025-11-04T11:43:39Z ERR Error watching kubernetes events error=
"could not retrieve server version: Get \"https://10.43.0.1:443/version\":
dial tcp 10.43.0.1:443: connect: connection refused" providerName=kubernetes
…il se peut que votre pare-feu soit en cause. C’était le problème sur mon nœud.
J’avais une configuration UFW très restrictive, n’autorisant que 80/tcp, 443/tcp et 22/tcp. Mais Kubernetes a besoin de ports supplémentaires et de plages internes pour fonctionner correctement.
La documentation K3s pour Ubuntu/Debian recommande d’ouvrir :
ufw allow 6443/tcp #apiserver
ufw allow from 10.42.0.0/16 to any #pods
ufw allow from 10.43.0.0/16 to any #services
Si vous voulez une configuration minimaliste mais fonctionnelle, vous pouvez affiner les règles à l’aide du tableau officiel des règles entrantes. Voici la configuration que j’utilise personnellement :
# --- RÉINITIALISATION & RÈGLES DE BASE ---
sudo ufw --force reset
sudo ufw default deny incoming
sudo ufw default allow outgoing
# --- SERVICES PUBLICS : HTTP, HTTPS, SSH ---
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp
# --- RÉSEAU INTERNE DU CLUSTER (10.42.0.0/16) ---
# K3s / Kubernetes API
sudo ufw allow from 10.42.0.0/16 to any port 6443 proto tcp
# Métriques du kubelet
sudo ufw allow from 10.42.0.0/16 to any port 10250 proto tcp
# Flannel VXLAN
sudo ufw allow from 10.42.0.0/16 to any port 8472 proto udp
# --- ACCÈS LOCALHOST ---
sudo ufw allow in on lo
# --- ACTIVER LE PARE-FEU ---
sudo ufw enable
sudo ufw status numbered
Brève explication des règles
Qu’est-ce que 10.42.0.0/16 ?
10.42.0.0/16 est une plage CIDR. Elle décrit toutes les adresses IP de : 10.42.0.0 à 10.42.255.255.
C’est le réseau par défaut des pods géré par K3s (via Flannel). Tout le trafic pod-à-pod ou pod-à-nœud circule dans cette plage. Le bloquer casserait le cluster.
Que fait une règle comme sudo ufw allow from 10.42.0.0/16 to any port 6443 proto tcp ?
Cette règle :
allow: accepte les paquets entrantsfrom 10.42.0.0/16: dont l’IP source appartient au réseau des podsto any: destinés à n’importe quelle interface localeport 6443 proto tcp: sur le port TCP 6443 (le serveur API Kubernetes)
En d’autres mots : « Autorise le trafic en provenance des pods vers le serveur API. »
Sans cela, les nœuds et les composants du plan de contrôle (control plane) ne peuvent pas communiquer.
Que signifie sudo ufw allow in on lo ?
La règle dit simplement : « Autoriser le trafic local » :
in→ direction : autoriser les paquets entrantson→ pour cibler une interface réseaulo→ l’interface loopback (localhost)
De nombreuses applications s’attendent à pouvoir communiquer librement avec 127.0.0.1. Bloquer ce trafic les casserait.