Points clés
- ✓60% du temps IT consacré au dépannage réseau selon Spectro Cloud 2025
- ✓'6 familles: DNS, Services, Pod-to-Pod, CNI, Ingress, NetworkPolicies'
- ✓Commencer par kubectl get events et vérifier le DNS en priorité
Les équipes IT consacrent en moyenne 60% de leur temps de gestion de clusters au dépannage, dont une part significative concerne les problèmes réseau. Ce guide fournit une méthodologie structurée pour identifier et résoudre les dysfonctionnements réseau les plus fréquents sur Kubernetes.
TL;DR : Les problèmes réseau Kubernetes se catégorisent en 6 familles : DNS, Services, Pod-to-Pod, CNI, Ingress et NetworkPolicies. Chaque catégorie possède des commandes de diagnostic spécifiques. Commencez toujours par kubectl get events et vérifiez le DNS avant d'investiguer plus loin.
Pour maîtriser le diagnostic réseau en profondeur, suivez la formation LFS458 Administration Kubernetes.
Index des symptômes réseau
| Symptôme | Commande de diagnostic rapide | Section |
|---|---|---|
could not resolve host | kubectl exec -it | DNS |
connection refused sur un Service | kubectl get endpoints | Services |
| Pods ne communiquent pas entre eux | kubectl exec -it | Pod-to-Pod |
NetworkPlugin cni failed | kubectl describe node | CNI |
| 502/504 depuis l'extérieur | kubectl get ingress -o wide | Ingress |
| Connexions bloquées sans erreur | kubectl get networkpolicies -A | NetworkPolicies |
Comment diagnostiquer les problèmes DNS sur Kubernetes ?
Le DNS est la première cause de problèmes réseau sur Kubernetes. Un pod qui ne peut pas résoudre les noms de services internes devient immédiatement inutilisable.
Symptômes typiques
Error: getaddrinfo ENOTFOUND my-service
Error: could not resolve host 'my-database.default.svc.cluster.local'
Étape 1 : Vérifier le pod CoreDNS
# État des pods CoreDNS
kubectl get pods -n kube-system -l k8s-app=kube-dns
# Logs CoreDNS pour identifier les erreurs
kubectl logs -n kube-system -l k8s-app=kube-dns --tail=50
Étape 2 : Tester la résolution depuis un pod
# Créer un pod de debug
kubectl run dns-test --image=busybox:1.36 --rm -it --restart=Never -- nslookup kubernetes.default
# Résultat attendu
Server: 10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
Name: kubernetes.default
Address 1: 10.96.0.1 kubernetes.default.svc.cluster.local
Causes et solutions
| Cause | Diagnostic | Solution |
|---|---|---|
| CoreDNS crashé | kubectl get pods -n kube-system montre CrashLoopBackOff | Vérifiez les ressources mémoire du pod CoreDNS |
| ConfigMap corrompu | kubectl get configmap coredns -n kube-system -o yaml | Restaurez la configuration par défaut |
| Service kube-dns absent | kubectl get svc -n kube-system kube-dns | Recréez le Service avec kubectl apply |
| Pod utilise mauvais DNS | /etc/resolv.conf du pod incorrect | Vérifiez le dnsPolicy dans le PodSpec |
À retenir : Testez toujours le DNS avec nslookup kubernetes.default avant d'investiguer d'autres couches réseau. Cette commande valide la chaîne complète : Pod → Service → CoreDNS.
Pour approfondir le debug réseau CNI DNS Kubernetes, consultez notre guide sur le dépannage des pods en CrashLoopBackOff.
Comment résoudre les problèmes de connectivité Service ?
Un Service Kubernetes agit comme load balancer interne. Quand il dysfonctionne, aucun pod ne peut atteindre les backends.
Symptômes typiques
curl: (7) Failed to connect to my-service port 80: Connection refused
Diagnostic complet
# 1. Vérifier que le Service existe et expose les bons ports
kubectl get svc my-service -o wide
# 2. Vérifier les Endpoints (pods associés)
kubectl get endpoints my-service
# 3. Si Endpoints vides, vérifier le selector
kubectl describe svc my-service | grep Selector
kubectl get pods --selector=app=my-app
Causes fréquentes
Endpoints vides : Le selector du Service ne matche aucun pod. Corrigez les labels des pods ou le selector du Service.
# Service
spec:
selector:
app: my-app # Doit matcher les labels des pods
# Pod
metadata:
labels:
app: my-app # Vérifiez la correspondance exacte
Port mismatch : Le targetPort du Service ne correspond pas au port exposé par le conteneur.
# Vérifier le port écouté dans le conteneur
kubectl exec -it my-pod -- netstat -tlnp
Selon Spectro Cloud, les erreurs de configuration représentent la majorité des incidents réseau. Un ingénieur infrastructure Kubernetes expérimenté vérifie systématiquement les Endpoints avant d'investiguer plus loin.
À retenir : Endpoints vides = problème de selector. Exécutez kubectl get endpoints comme premier réflexe.
Comment diagnostiquer les échecs de communication Pod-to-Pod ?
La communication inter-pods repose sur le plugin CNI et la configuration réseau du cluster. Des échecs à ce niveau indiquent souvent un problème d'infrastructure.
Tests de connectivité
# Obtenir l'IP d'un pod cible
kubectl get pod target-pod -o jsonpath='{.status.podIP}'
# Tester depuis un autre pod
kubectl exec -it source-pod -- ping -c 3 <target-pod-ip>
kubectl exec -it source-pod -- curl -v http://<target-pod-ip>:8080
Diagnostics réseau avancés
# Vérifier les routes dans un pod
kubectl exec -it my-pod -- ip route
# Vérifier les interfaces réseau
kubectl exec -it my-pod -- ip addr
# Tracer le chemin réseau
kubectl exec -it my-pod -- traceroute <target-ip>
Matrice de diagnostic
| Test échoue | Test réussit | Cause probable |
|---|---|---|
| Ping IP | Ping localhost | Problème CNI ou nœud |
| Curl port | Ping IP | Application pas démarrée ou mauvais port |
| Pods différents nœuds | Pods même nœud | Problème overlay réseau |
| Tous les pods | Aucun | NetworkPolicy restrictive |
L'ingénieur opérations Cloud Kubernetes doit maîtriser ces diagnostics pour réduire le temps de résolution. Les équipes IT perdent en moyenne 34 jours de travail par an sur les incidents Kubernetes.
Comment résoudre les erreurs de plugin CNI ?
Le CNI (Container Network Interface) gère l'attribution des adresses IP aux pods et le routage réseau. Des erreurs CNI bloquent le démarrage des pods.
Symptômes
Warning FailedCreatePodSandBox NetworkPlugin cni failed to set up pod network
Diagnostic
# État du CNI sur les nœuds
kubectl describe node <node-name> | grep -A5 "Conditions:"
# Logs des pods CNI (exemple Calico)
kubectl logs -n kube-system -l k8s-app=calico-node --tail=100
# Vérifier la configuration CNI
ls -la /etc/cni/net.d/
cat /etc/cni/net.d/10-calico.conflist
Solutions par CNI
| CNI | Problème courant | Solution |
|---|---|---|
| Calico | calico-node en CrashLoop | Vérifiez la connectivité etcd/datastore |
| Flannel | Pods sans IP | Redémarrez flanneld sur le nœud affecté |
| Cilium | cilium-agent dégradé | Validez la version kernel (≥4.9.17 requis) |
| Weave | Fragmentation réseau | Réinitialisez avec weave reset |
# Forcer le redémarrage des pods CNI
kubectl rollout restart daemonset -n kube-system calico-node
Les CNI modernes comme Cilium exploitent eBPF pour des performances et une observabilité accrues.
À retenir : Les problèmes CNI affectent tous les pods d'un nœud. Si plusieurs pods échouent simultanément sur le même nœud, suspectez le CNI.
Comment dépanner les problèmes Ingress et accès externe ?
L'Ingress contrôle l'accès HTTP/HTTPS depuis l'extérieur du cluster. Les erreurs 502/504 ou les timeouts indiquent des problèmes de configuration ou de backend.
Diagnostic Ingress
# État de l'Ingress
kubectl get ingress my-ingress -o wide
# Vérifier l'Ingress Controller
kubectl get pods -n ingress-nginx
kubectl logs -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx --tail=100
# Vérifier l'adresse externe
kubectl get svc -n ingress-nginx ingress-nginx-controller
Checklist de dépannage
- Vérifiez que le Service backend existe et a des Endpoints
- Validez le nom du Service dans l'Ingress correspond exactement
- Confirmez que le port spécifié est correct
- Testez l'accès direct au Service (bypass Ingress)
# Test direct du backend (bypass Ingress)
kubectl port-forward svc/my-service 8080:80
curl localhost:8080
Pour une approche structurée du dépannage, référez-vous à notre checklist d'observabilité Kubernetes en production.
Erreurs TLS
# Vérifier le secret TLS
kubectl get secret my-tls-secret -o yaml
# Valider le certificat
kubectl get secret my-tls-secret -o jsonpath='{.data.tls\.crt}' | base64 -d | openssl x509 -text -noout
Comment identifier les NetworkPolicies bloquantes ?
Les NetworkPolicies contrôlent le trafic entre pods. Une policy trop restrictive bloque silencieusement les connexions sans message d'erreur explicite.
Symptômes
Connexions qui timeout sans erreur claire. Les pods semblent fonctionner mais ne peuvent pas communiquer.
Diagnostic
# Lister toutes les NetworkPolicies
kubectl get networkpolicies -A
# Analyser une policy spécifique
kubectl describe networkpolicy my-policy -n my-namespace
# Vérifier quels pods sont affectés
kubectl get pods -n my-namespace --show-labels
Test de connectivité avec policy
# Identifier les policies appliquées à un pod
kubectl get networkpolicies -n my-namespace -o json | jq '.items[] | select(.spec.podSelector.matchLabels | to_entries[] | .key == "app" and .value == "my-app")'
Règle de dépannage
Désactivez temporairement les NetworkPolicies pour confirmer qu'elles sont la cause :
# Sauvegarder puis supprimer
kubectl get networkpolicy my-policy -o yaml > policy-backup.yaml
kubectl delete networkpolicy my-policy
# Tester la connectivité
# Puis restaurer
kubectl apply -f policy-backup.yaml
À retenir : Si une connexion échoue sans message d'erreur, vérifiez les NetworkPolicies. C'est la cause la plus fréquente de blocages silencieux.
La formation LFS460 Principes Fondamentaux de la Sécurité Kubernetes couvre en détail la configuration sécurisée des NetworkPolicies, compétence essentielle pour l'administrateur système préparant la certification CKS.
Comment prévenir les problèmes réseau récurrents ?
Monitoring proactif
Selon Grafana Labs, 75% des utilisateurs Kubernetes adoptent Prometheus et Grafana pour le monitoring. Configurez des alertes sur les métriques réseau critiques.
# Exemple d'alerte Prometheus pour CoreDNS
- alert: CoreDNSDown
expr: up{job="coredns"} == 0
for: 5m
labels:
severity: critical
annotations:
summary: "CoreDNS est down"
Checklist de prévention
| Action | Fréquence | Outil |
|---|---|---|
| Vérifier santé CoreDNS | Continu | Prometheus |
| Valider les Endpoints | Avant chaque déploiement | CI/CD |
| Tester connectivité inter-nœuds | Hebdomadaire | Script automatisé |
| Auditer NetworkPolicies | Mensuel | kubectl + documentation |
| Mettre à jour le CNI | Trimestriel | Suivre les releases |
Consultez notre guide complet sur le Monitoring et dépannage Kubernetes pour implémenter une stratégie d'observabilité complète.
Documentation réseau
Documentez systématiquement :
- Architecture réseau du cluster (CIDR pods, services, nœuds)
- NetworkPolicies appliquées et leur justification
- Configuration DNS personnalisée
- Règles firewall externes
Pour une vue d'ensemble des échecs de déploiement liés au réseau, consultez notre guide de dépannage des déploiements Kubernetes.
À retenir : La prévention coûte moins cher que le dépannage. Les équipes qui documentent leur architecture réseau résolvent les incidents 3x plus vite.
Développez vos compétences en diagnostic réseau Kubernetes
Le diagnostic réseau Kubernetes exige une compréhension approfondie de chaque couche : DNS, Services, CNI, Ingress et NetworkPolicies. Avec 82% des utilisateurs de conteneurs exécutant Kubernetes en production, ces compétences sont devenues indispensables.
Comme le souligne Chris Aniszczyk, CTO de la CNCF : "Kubernetes is no longer experimental but foundational."
SFEIR propose des formations officielles Linux Foundation pour maîtriser l'administration et le dépannage Kubernetes :
- LFS458 Administration Kubernetes : 4 jours pour maîtriser le diagnostic réseau, la gestion de clusters et préparer la certification CKA
- LFS460 Principes Fondamentaux de la Sécurité Kubernetes : 4 jours sur la sécurité réseau, NetworkPolicies et préparation CKS
- Kubernetes les fondamentaux : 1 jour pour découvrir les concepts essentiels avant d'approfondir. Pour approfondir, consultez notre OOMKilled limites ressources Kubernetes. Pour approfondir, consultez notre formation Kubernetes administrateur système. Pour approfondir, consultez notre formation Bonnes pratiques conteneurisation et Docker.
Contactez nos conseillers pour construire votre parcours de montée en compétences réseau Kubernetes.