E-NO
Kubernetes 7 min de lecture

Surveillance et alertes des espaces de noms Kubernetes : guide pratique de mise en œuvre

calendar_today Publié : 2026-09-07
update Dernière mise à jour : 2026-09-07
analytics Efficacité SEO : 100%
Illustration du guide technique pour « Surveillance et alertes des espaces de noms Kubernetes : guide pratique de mise en œuvre ».

Introduction

La surveillance et les alertes des espaces de noms Kubernetes sont essentielles pour maintenir la santé et les performances des clusters multi-locataires. Ce guide propose une approche pratique et concrète pour les développeurs, les consultants DevOps et les équipes techniques de startups. À la fin de votre lecture, vous serez en mesure d'observer le comportement des espaces de noms, de collecter des métriques pertinentes, de déclencher des alertes actionnables, de créer des tableaux de bord et de répondre aux incidents avec confiance. Nous mettons l'accent sur la sécurité opérationnelle : observer avant de modifier, limiter le rayon d'impact, éviter d'exposer des secrets, vérifier chaque changement et documenter les étapes de récupération.

Nous aborderons l'inventaire des versions et de l'environnement, les chemins de configuration sécurisés, la vérification et les diagnostics, les modes de défaillance et la récupération, une liste de contrôle opérationnelle et les pièges courants. Chaque section inclut des commandes concrètes, les sorties attendues et les décisions de récupération. Tout au long du guide, nous utiliserons un espace de noms d'exemple nommé payments exécutant un déploiement web et un statefulset Redis.

Inventaire des versions et de l'environnement

Avant d'apporter des modifications, établissez une base de référence de votre cluster et des composants impliqués. Cet inventaire vous aide à comprendre ce avec quoi vous travaillez et garantit la compatibilité.

Commencez par vérifier les versions de votre client et de votre serveur Kubernetes :

kubectl version --short

Sortie attendue (tronquée) :

Client Version: v1.25.3
Server Version: v1.24.6

Notez que l'écart de version mineure est acceptable mais doit être documenté. Ensuite, identifiez tous les espaces de noms :

kubectl get namespaces

Sortie attendue :

NAME              STATUS   AGE
default           Active   46d
kube-system       Active   46d
kube-public       Active   46d
kube-node-lease   Active   46d
payments          Active   12d

Concentrez-vous sur l'espace de noms payments. Listez ses ressources :

kubectl get all -n payments

La sortie attendue montre les déploiements, les pods, les services et les statefulsets. Vérifiez l'état du déploiement :

kubectl rollout status deployment/web -n payments

Sortie attendue : deployment "web" successfully rolled out.

Pour les détails de planification et les événements, décrivez un pod :

kubectl describe pod <nom-du-pod> -n payments

Cette commande révèle les demandes de ressources, les limites, l'affectation du nœud et les événements récents. Utilisez kubectl logs <nom-du-pod> --previous -n payments pour inspecter les boucles de crash. Ces commandes en lecture seule établissent une base de référence sans rien modifier. Enregistrez l'état actuel et les horodatages avant toute intervention.

Lorsque vous devez modifier quelque chose, gardez le changement petit. Par exemple, si vous devez ajuster les limites de ressources, appliquez un manifeste à la fois et vérifiez avec kubectl get pods -n payments et kubectl describe ensuite.

Question rapide 1 sur 2

Quels sont les quatre namespaces initiaux avec lesquels Kubernetes démarre ?

Kubernetes démarre avec quatre namespaces initiaux : default, kube-node-lease, kube-public et kube-system.

Chemin de configuration sécurisé

La configuration de la surveillance nécessite une attention particulière pour éviter d'impacter les charges de travail. Nous allons créer un compte de service dédié pour la surveillance, appliquer des règles RBAC pour limiter les autorisations à l'espace de noms payments et déployer un agent de surveillance avec des privilèges minimaux.

Tout d'abord, créez le compte de service :

apiVersion: v1
kind: ServiceAccount
metadata:
  name: monitoring-sa
  namespace: payments

Appliquez-le :

kubectl apply -f monitoring-sa.yaml

Ensuite, créez un rôle qui autorise la lecture des pods, des services et des endpoints :

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: monitoring-role
  namespace: payments
rules:
- apiGroups: [""]
  resources: ["pods", "services", "endpoints"]
  verbs: ["get", "list", "watch"]

Appliquez et liez le rôle au compte de service :

kubectl apply -f monitoring-role.yaml
kubectl create rolebinding monitoring-rb --role=monitoring-role --serviceaccount=payments:monitoring-sa -n payments

Vérifiez la liaison :

kubectl get rolebinding monitoring-rb -n payments -o yaml

Cela limite l'agent de surveillance à la lecture uniquement des ressources nécessaires dans l'espace de noms. Évitez les rôles à l'échelle du cluster lorsque des autorisations limitées à l'espace de noms suffisent.

Pour les tests, utilisez kubectl port-forward pour accéder aux services localement avant de les exposer via un équilibreur de charge ou une ingress. Par exemple :

kubectl port-forward svc/web 8080:80 -n payments

Accédez ensuite à http://localhost:8080 pour vérifier que le service fonctionne.

Vérification et diagnostics

Après avoir configuré la surveillance, vérifiez que les métriques sont collectées. Si vous utilisez Prometheus, interrogez le point de terminaison des métriques de votre agent de surveillance. Tout d'abord, trouvez le pod :

kubectl get pods -n payments -l app=monitoring-agent

Ensuite, faites un port-forward vers le pod Prometheus (le cas échéant) ou consultez les journaux de l'agent :

kubectl logs <pod-de-surveillance> -n payments

Les lignes de journal attendues indiquent un scraping réussi.

Pour les diagnostics, utilisez kubectl top pour voir l'utilisation des ressources :

kubectl top pods -n payments

Sortie attendue :

NAME                     CPU(cores)   MEMORY(bytes)
web-6d4b8c7f9-abcde      120m         256Mi
redis-0                  80m          512Mi

Si les métriques sont manquantes, vérifiez la configuration de l'agent et les autorisations RBAC. Assurez-vous que le compte de service peut lister les pods. Utilisez kubectl auth can-i list pods --as=system:serviceaccount:payments:monitoring-sa -n payments pour tester les autorisations.

Pour une analyse plus approfondie, utilisez kubectl describe pour inspecter les événements et les conditions :

kubectl describe pod web-6d4b8c7f9-abcde -n payments

Recherchez les événements FailedScheduling ou OOMKilled.

Modes de défaillance et récupération

Les systèmes de surveillance peuvent échouer. Les modes de défaillance courants incluent le crash de l'agent de surveillance, l'absence de scraping des métriques, le non-déclenchement des alertes ou l'absence de données dans les tableaux de bord. Voici les étapes de récupération :

CrashLoopBackOff de l'agent de surveillance

Si le pod de l'agent est en CrashLoopBackOff :

kubectl get pods -n payments

La sortie attendue montre l'état CrashLoopBackOff. Consultez les journaux :

kubectl logs <pod-agent> -n payments --previous

Causes courantes : configuration incorrecte, configmap manquante ou autorisations insuffisantes. Corrigez la configuration et redémarrez le pod. Si l'agent a besoin de plus de mémoire, ajustez ses limites de ressources dans le manifeste de déploiement et appliquez.

Absence de métriques dans Prometheus

Si Prometheus ne montre aucune cible pour l'espace de noms, vérifiez la configuration de découverte de services. Assurez-vous que les endpoints du service sont corrects :

kubectl get endpoints -n payments

Si les endpoints sont vides, le sélecteur du service peut ne pas correspondre aux pods. Corrigez le sélecteur et réappliquez.

Alertes non déclenchées

Si des règles d'alerte existent mais qu'aucune alerte ne se déclenche, vérifiez les règles d'alerte et la configuration d'Alertmanager. Utilisez kubectl describe configmap pour la configmap Prometheus afin de vérifier que les règles sont chargées. Assurez-vous qu'Alertmanager est joignable et reçoit les notifications.

Tableau de bord sans données

Si les tableaux de bord Grafana n'affichent aucune donnée, vérifiez la configuration de la source de données et l'URL de Prometheus. Vérifiez la connectivité de Grafana à Prometheus. Utilisez kubectl logs sur les pods Grafana pour identifier les erreurs.

Question rapide 2 sur 2

Quel est le rôle du namespace kube-node-lease ?

Le namespace kube-node-lease contient les objets Lease associés à chaque nœud. Les baux de nœud permettent au kubelet d'envoyer des battements de cœur afin que le plan de contrôle puisse détecter les défaillances de nœuds.

Liste de contrôle opérationnelle

Utilisez cette liste de contrôle pour assurer l'efficacité continue de la surveillance des espaces de noms. Attribuez chaque élément à un seul propriétaire responsable pour éviter toute ambiguïté.

  • Hebdomadaire : Examinez l'utilisation des ressources de l'espace de noms avec kubectl top pods -n payments et comparez avec les quotas. Propriétaire : Ingénieur DevOps (par exemple, Priya Shah).
  • Quotidien : Vérifiez s'il y a des pods en état CrashLoopBackOff ou Pending : kubectl get pods -n payments --field-selector=status.phase!=Running. Propriétaire : SRE de garde (rotation).
  • Mensuel : Auditez les rôles et les liaisons RBAC du compte de service de surveillance pour garantir le moindre privilège. Propriétaire : Équipe de sécurité (par exemple, Marcus Chen).
  • Trimestriel : Testez les règles d'alerte en déclenchant une défaillance contrôlée (par exemple, drainer un nœud dans un cluster de staging) et vérifiez que les alertes se déclenchent et que les notifications sont reçues. Propriétaire : Responsable de plateforme (par exemple, Elena Rodriguez).
  • Après tout changement de configuration : Exécutez kubectl apply --dry-run=client -f <manifest> pour valider la syntaxe avant d'appliquer. Propriétaire : Personne effectuant le changement.

Cette liste de contrôle garantit une supervision régulière et une détection rapide des problèmes.

Pièges courants et comment les éviter

  1. Utiliser cluster-admin pour la surveillance. Cela viole le principe du moindre privilège et augmente les risques. Créez plutôt des comptes de service dédiés avec des rôles limités à l'espace de noms comme indiqué précédemment. Si vous devez surveiller plusieurs espaces de noms, créez un ClusterRole limité aux points de terminaison de métriques en lecture seule, mais évitez les autorisations larges.
  1. Négliger la fatigue des alertes. Trop d'alertes bruyantes poussent les équipes à les ignorer. Définissez des seuils significatifs et agréguez les alertes. Par exemple, alertez sur une utilisation élevée du CPU uniquement si elle persiste plus de 5 minutes, pas instantanément. Utilisez for: 5m dans les règles d'alerte Prometheus. Révisez les alertes trimestriellement et supprimez ou ajustez celles qui ne se sont pas déclenchées depuis des mois.
  1. Ne pas définir de demandes et de limites de ressources. Sans elles, un pod peut consommer toutes les ressources du nœud et affecter la surveillance. Définissez toujours des demandes et des limites, en particulier pour les composants de surveillance eux-mêmes. Exemple :
resources:
  requests:
    cpu: "100m"
    memory: "128Mi"
  limits:
    cpu: "500m"
    memory: "512Mi"
  1. Stocker des secrets en clair dans les configurations de surveillance. Utilisez les secrets Kubernetes et référencez-les dans les manifestes de déploiement. Ne committez pas de secrets dans Git. Utilisez des outils comme Sealed Secrets ou External Secrets Operator pour les gérer en toute sécurité.
  1. Absence de plan de réponse aux incidents. Lorsqu'une alerte se déclenche, les équipes peuvent paniquer sans runbook documenté. Créez des runbooks pour les alertes courantes, incluant les étapes de diagnostic et de récupération. Stockez-les dans un wiki ou un dépôt Git accessible au personnel de garde. Testez les runbooks périodiquement.

Conclusion

La surveillance et les alertes des espaces de noms Kubernetes sont une pratique continue. Commencez par un inventaire solide de l'environnement, configurez la surveillance avec le moindre privilège, vérifiez les métriques et les alertes, préparez-vous aux défaillances et suivez une liste de contrôle opérationnelle. Évitez les pièges courants en appliquant les mesures de protection décrites ici. Ce faisant, vous maintiendrez un environnement d'espace de noms fiable, observable et sécurisé. Choisissez une vérification à faible risque de ce guide, enregistrez l'état actuel, exécutez la vérification et comparez le résultat avec le signal attendu. Ensuite, développez progressivement, en gardant toujours la récupération à l'esprit.

Comme prochaine étape immédiate, vérifiez l'utilisation actuelle des ressources de votre espace de noms avec kubectl top pods -n <votre-espace-de-noms> et assurez-vous que votre agent de surveillance fonctionne avec le bon compte de service. Si vous rencontrez des problèmes, reportez-vous à la section sur les modes de défaillance pour les étapes de récupération. Avec ces pratiques, vous pouvez surveiller et alerter en toute confiance sur vos espaces de noms Kubernetes.

Recherches connexes

Score de qualité de l’article

Utilité pour le lecteur 100%
  • check_circle Guide prêt à lire
  • check_circle Exemples pratiques inclus
  • check_circle URL d’article optimisée pour le SEO