Points clés
- ✓34 jours ouvrés par an consacrés aux problèmes Kubernetes selon Cloud Native Now
- ✓'Méthodologie en 4 étapes: pod-to-pod, DNS, Services, Network Policies'
- ✓'Outils essentiels: kubectl, nslookup, tcpdump'
Chaque ingénieur infrastructure Kubernetes certification CKA consacre une part significative de son temps au dépannage réseau. Selon Cloud Native Now, les équipes IT passent 34 jours ouvrés par an à résoudre des problèmes Kubernetes. Le debugging réseau Kubernetes représente une compétence différenciante pour tout professionnel.
TL;DR : Le dépannage DNS Services Kubernetes suit une méthodologie structurée : vérifier la connectivité pod-to-pod, valider la résolution DNS, tester les Services, puis inspecter les Network Policies. Les outils kubectl, nslookup et tcpdump sont vos alliés.
Les professionnels qui veulent aller plus loin suivent la formation LFS458 Administration Kubernetes.
Pourquoi l'ingénieur infrastructure Kubernetes certification CKA doit maîtriser le diagnostic réseau ?
Le réseau Kubernetes repose sur plusieurs couches d'abstraction. Un dysfonctionnement peut survenir au niveau du CNI, des Services, du DNS ou des Network Policies.
Selon le CNCF Annual Survey 2025, 82% des utilisateurs de conteneurs exécutent Kubernetes en production. Cette adoption massive multiplie les incidents réseau potentiels.
| Couche | Composants | Problèmes fréquents |
|---|---|---|
| L2/L3 | CNI (Calico, Cilium) | Pods sans IP, routes manquantes |
| L4 | Services, kube-proxy | ClusterIP inaccessible, iptables corrompues |
| L7 | Ingress, DNS | Certificats TLS, résolution DNS |
| Policies | NetworkPolicy | Trafic bloqué involontairement |
À retenir : 80% des problèmes réseau Kubernetes proviennent de mauvaises configurations, pas de bugs logiciels. Vérifiez d'abord les manifestes avant de suspecter l'infrastructure.
Comment résoudre les problèmes réseau pods Kubernetes au niveau connectivité ?
Test de connectivité de base
# Créer un pod de diagnostic
kubectl run netshoot --rm -it --image=nicolaka/netshoot -- /bin/bash
# Depuis le pod, tester la connectivité vers un autre pod
ping <pod-ip>
curl <pod-ip>:<port>
# Tester la connectivité vers un Service
curl <service-name>.<namespace>.svc.cluster.local:<port>
Vérifier l'état du CNI
Le CNI attribue les IPs aux pods. Un CNI défaillant provoque des pods en état ContainerCreating.
# Vérifier les pods CNI
kubectl get pods -n kube-system -l k8s-app=calico-node
kubectl get pods -n kube-system -l k8s-app=cilium
# Inspecter les logs CNI
kubectl logs -n kube-system -l k8s-app=calico-node --tail=100
# Vérifier les routes sur un nœud
ip route show
Pour une configuration complète du réseau, consultez Configurer le réseau d'un cluster Kubernetes : CNI, Services, Ingress.
Diagnostic avec tcpdump
# Capturer le trafic sur l'interface du pod
kubectl debug -it <pod-name> --image=nicolaka/netshoot -- tcpdump -i eth0 -nn port 80
# Analyser le trafic ICMP
kubectl debug -it <pod-name> --image=nicolaka/netshoot -- tcpdump -i eth0 icmp
À retenir : Un pod sans IP après 30 secondes indique un problème CNI. Vérifiez les logs du DaemonSet CNI en priorité.
Comment maîtriser le dépannage DNS Services Kubernetes ?
Le DNS est critique. Chaque résolution de Service passe par CoreDNS. Un DNS défaillant paralyse le cluster.
Vérifier CoreDNS
# État des pods CoreDNS
kubectl get pods -n kube-system -l k8s-app=kube-dns
kubectl get deployment coredns -n kube-system
# Logs CoreDNS
kubectl logs -n kube-system -l k8s-app=kube-dns --tail=50
# Métriques CoreDNS
kubectl get --raw /api/v1/namespaces/kube-system/pods/coredns-xxx/proxy/metrics
Tests de résolution DNS
# Depuis un pod de test
kubectl run dnstest --rm -it --image=busybox:1.36 -- nslookup kubernetes.default
# Résolution complète
kubectl run dnstest --rm -it --image=nicolaka/netshoot -- dig kubernetes.default.svc.cluster.local
# Vérifier le fichier resolv.conf du pod
kubectl exec <pod-name> -- cat /etc/resolv.conf
La configuration DNS attendue :
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
Problèmes DNS courants
| Symptôme | Cause probable | Solution |
|---|---|---|
NXDOMAIN | Service inexistant | Vérifier kubectl get svc |
SERVFAIL | CoreDNS surchargé | Scaler le Deployment |
| Timeout | Network Policy bloque UDP 53 | Autoriser le trafic DNS |
| Résolution lente | ndots:5 trop élevé | Réduire ou utiliser FQDN |
# Optimiser les requêtes DNS dans le pod
apiVersion: v1
kind: Pod
metadata:
name: optimized-dns
spec:
dnsConfig:
options:
- name: ndots
value: "2"
- name: single-request-reopen
containers:
- name: app
image: myapp:v1
Pour les fondamentaux, consultez Kubernetes les fondamentaux et pour débutants.
Comment déboguer les Services Kubernetes qui ne fonctionnent pas ?
Un Service expose des pods via une IP stable. Les dysfonctionnements proviennent généralement des sélecteurs ou des endpoints.
Vérifier les Endpoints
# Lister les endpoints du Service
kubectl get endpoints <service-name>
kubectl describe endpoints <service-name>
# Un Service sans endpoints indique :
# - Aucun pod avec les labels correspondants
# - Pods non-Ready
# - Pods sur des ports différents
Valider les sélecteurs
# Comparer les labels du Service et des pods
kubectl get svc <service-name> -o jsonpath='{.spec.selector}'
kubectl get pods -l <selector> --show-labels
# Exemple de mismatch
# Service selector: app=frontend
# Pod labels: app=front-end # MISMATCH !
Diagnostiquer kube-proxy
kube-proxy gère les règles iptables/IPVS pour router le trafic vers les pods.
# Vérifier le mode kube-proxy
kubectl get configmap kube-proxy -n kube-system -o yaml | grep mode
# Inspecter les règles iptables (mode iptables)
iptables -t nat -L KUBE-SERVICES -n | grep <service-name>
# Inspecter IPVS (mode ipvs)
ipvsadm -Ln | grep <cluster-ip>
# Logs kube-proxy
kubectl logs -n kube-system -l k8s-app=kube-proxy --tail=50
À retenir : Un Service de typeClusterIPn'est accessible que depuis l'intérieur du cluster. Utilisezkubectl port-forwardpour tester depuis votre poste.
Pour les commandes essentielles, consultez Aide-mémoire kubectl : commandes essentielles pour l'administration.
Comment identifier les blocages causés par les Network Policies ?
Les Network Policies implémentent un modèle de sécurité "deny by default" une fois activées. Un trafic légitime peut être bloqué par une policy trop restrictive.
Audit des Network Policies
# Lister toutes les Network Policies
kubectl get networkpolicies -A
# Inspecter une policy spécifique
kubectl describe networkpolicy <policy-name> -n <namespace>
# Identifier les pods impactés
kubectl get pods -n <namespace> -l <policy-selector>
Exemple de policy bloquante
# Cette policy bloque TOUT le trafic entrant vers les pods app=backend
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all-ingress
namespace: production
spec:
podSelector:
matchLabels:
app: backend
policyTypes:
- Ingress
# Pas de règle ingress = tout bloqué
Débloquer le trafic nécessaire
# Autoriser le trafic depuis les pods frontend
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-frontend
namespace: production
spec:
podSelector:
matchLabels:
app: backend
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
ports:
- protocol: TCP
port: 8080
Les CNI modernes comme Cilium offrent une observabilité avancée sur le trafic bloqué grâce à eBPF.
Pour approfondir la sécurité, consultez Sécuriser un cluster Kubernetes : les bonnes pratiques.
Quels outils utiliser pour le debugging réseau Kubernetes diagnostic avancé ?
Outils intégrés
# kubectl debug pour injecter un conteneur de debug
kubectl debug -it <pod-name> --image=nicolaka/netshoot --target=<container-name>
# kubectl exec pour les pods existants
kubectl exec -it <pod-name> -- /bin/sh
# kubectl port-forward pour tester les Services
kubectl port-forward svc/<service-name> 8080:80
Outils spécialisés
| Outil | Usage | Commande |
|---|---|---|
| netshoot | Image tout-en-un (curl, dig, tcpdump, nmap) | kubectl run netshoot --rm -it --image=nicolaka/netshoot |
| ksniff | Capture Wireshark depuis un pod | kubectl sniff |
| kubeshark | Analyse trafic API temps réel | kubeshark tap |
| cilium connectivity test | Validation connectivité Cilium | cilium connectivity test |
# Exemple avec kubeshark
kubeshark tap -n default
# Ouvre une interface web pour analyser le trafic HTTP/gRPC
# Test de connectivité Cilium
kubectl exec -n kube-system cilium-xxx -- cilium connectivity test
À retenir : L'image nicolaka/netshoot contient plus de 30 outils réseau. Gardez-la dans votre arsenal de troubleshooting.
Comment l'ingénieur infrastructure Kubernetes certification CKA aborde le troubleshooting en examen ?
L'examen CKA consacre 30% du score au troubleshooting, dont une part significative concerne le réseau. Selon la Linux Foundation, l'examen dure 2 heures avec un score de passage de 66%.
Méthodologie de diagnostic rapide
- Identifier le symptôme exact (timeout, connexion refusée, DNS failure)
- Isoler la couche problématique (pod, Service, DNS, policy)
- Vérifier les logs et événements pertinents
- Tester la connectivité à chaque niveau
- Corriger et valider
# Workflow de diagnostic type
# 1. État des pods
kubectl get pods -o wide
# 2. Événements récents
kubectl get events --sort-by=.metadata.creationTimestamp
# 3. Logs applicatifs
kubectl logs <pod-name> --tail=50
# 4. Test connectivité
kubectl run test --rm -it --image=busybox -- wget -qO- <service>:<port>
Pour des problèmes courants, consultez Résoudre les 10 problèmes les plus courants sur un cluster Kubernetes.
Comme le rappelle TealHQ : « Don't let your knowledge remain theoretical - set up a real Kubernetes environment to solidify your skills. »
Comment documenter et prévenir les incidents réseau récurrents ?
Runbook de diagnostic
Créez un document structuré pour chaque type d'incident :
## Incident : Pods cannot resolve DNS
### Symptômes
- Applications timeout sur appels HTTP
- Logs: "could not resolve host"
### Diagnostic
1. kubectl get pods -n kube-system -l k8s-app=kube-dns
2. kubectl logs -n kube-system coredns-xxx
3. kubectl run test --rm -it --image=busybox -- nslookup kubernetes
### Solutions
- Scaler CoreDNS: kubectl scale deployment coredns -n kube-system --replicas=3
- Vérifier Network Policy sur UDP/53
- Redémarrer pods CoreDNS si nécessaire
Monitoring proactif
# PrometheusRule pour alerter sur les erreurs DNS
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: coredns-alerts
spec:
groups:
- name: coredns
rules:
- alert: CoreDNSErrorsHigh
expr: rate(coredns_dns_responses_total{rcode="SERVFAIL"}[5m]) > 0.1
for: 5m
labels:
severity: warning
Pour les comparatifs d'environnements, consultez Kubernetes managé (EKS, AKS, GKE) vs auto-hébergé : comparatif.
À retenir : Chaque incident résolu doit enrichir votre base de connaissances. Le temps investi dans la documentation se rentabilise à chaque occurrence future.
Développez vos compétences troubleshooting avec SFEIR Institute
Le diagnostic réseau Kubernetes distingue les administrateurs juniors des experts. Avec 71 % des entreprises Fortune 100 exécutant Kubernetes en production, ces compétences sont hautement valorisées.
Les formations SFEIR Institute couvrent le troubleshooting avancé :
- LFS458 Administration Kubernetes : 4 jours incluant le diagnostic réseau, la configuration CNI et la résolution de problèmes de production. Préparation complète au CKA.
- Kubernetes, les fondamentaux : 1 journée pour comprendre l'architecture réseau avant d'approfondir le troubleshooting.
- LFS460 Principes Fondamentaux de la Sécurité Kubernetes : 4 jours pour maîtriser les Network Policies et la sécurité réseau.
Selon la Linux Foundation, les certifications CKA et CKS sont valides 2 ans. Validez vos compétences avec une formation encadrée par des praticiens. Pour approfondir, consultez notre installer cluster Kubernetes kubeadm. Pour approfondir, consultez notre formation Kubernetes administrateur système.
Contactez nos équipes pour construire votre parcours vers la certification.