---
title: "Checklist de diagnostic"
description: "Quelque chose ne fonctionne pas ? Trouvez la bonne piste en 4 commandes, symptôme par symptôme."
source_url:
  html: https://docs.blackswift.cloud/depanner/checklist-de-diagnostic/
  md: https://docs.blackswift.cloud/depanner/checklist-de-diagnostic.md
---

# Checklist de diagnostic

> Quelque chose ne fonctionne pas ? Trouvez la bonne piste en 4 commandes, symptôme par symptôme.

Quelque chose ne va pas et vous ne savez pas par où commencer ? Suivez cette page
dans l'ordre.

## Les 4 commandes réflexes

```bash
# 1. Vue d'ensemble : quels pods, dans quel état ?
kubectl get pods -n <namespace>

# 2. Le détail d'un pod : événements, causes de redémarrage
kubectl describe pod <pod> -n <namespace>

# 3. Les logs de l'application
kubectl logs <pod> -n <namespace> --previous

# 4. Les événements récents du namespace
kubectl get events -n <namespace> --sort-by=.lastTimestamp
```

L'option `--previous` de `kubectl logs` affiche les logs de l'exécution
**précédente** — indispensable quand le conteneur redémarre en boucle.

## Trouver son symptôme

| Symptôme | Cause la plus probable sur Kontainers | Page |
| --- | --- | --- |
| `CrashLoopBackOff` | L'application plante au démarrage | [Mon pod est en erreur](https://docs.blackswift.cloud/depanner/pod-en-erreur.md) |
| `OOMKilled` | Mémoire consommée > request (la limite lui est égale) | [Mon pod est en erreur](https://docs.blackswift.cloud/depanner/pod-en-erreur.md#oomkilled) |
| `ImagePullBackOff` | Registre inaccessible ou token expiré (aggravé par le pull `Always` forcé) | [Mon pod est en erreur](https://docs.blackswift.cloud/depanner/pod-en-erreur.md#imagepullbackoff) |
| Le Deployment existe mais **aucun pod** n'apparaît | Quota atteint ou politique de sécurité | ci-dessous |
| Pod `Pending` | Quota CPU/mémoire du namespace atteint | ci-dessous |
| Site injoignable / certificat absent | DNS, Ingress ou émission ACME | ci-dessous |
| Connexion refusée entre deux services | Isolation réseau (namespaces d'organisations différentes) | ci-dessous |

## Aucun pod ne se crée

Le Deployment est là, `kubectl get pods` ne montre rien (ou `Pending`). La cause
est presque toujours visible dans le ReplicaSet ou les événements :

```bash
kubectl describe deploy <deployment> -n <namespace> | tail -5
kubectl get events -n <namespace> --sort-by=.lastTimestamp | tail -10
```

Causes fréquentes, par ordre de probabilité :

1. **Quota atteint** — le message contient `exceeded quota: blackswift-standard`.
   Vérifiez votre consommation :
   ```bash
   kubectl describe resourcequota blackswift-standard -n <namespace>
   ```
   Réduisez les requests, supprimez des workloads inutiles, ou
   [demandez une augmentation](https://docs.blackswift.cloud/depanner/contacter-le-support.md).
2. **Rejet Pod Security** — le message mentionne `violates PodSecurity "baseline"` :
   votre pod demande `privileged`, `hostPath`, `hostNetwork`… Ce n'est pas permis
   ([pourquoi](https://docs.blackswift.cloud/reference/limitations-connues.md)).
3. **Toleration control-plane** — message
   `Pods may not use tolerations which schedule on control plane nodes` :
   retirez la toleration du manifest.

## Site injoignable ou certificat absent

Dans l'ordre :

```bash
# 1. Le DNS pointe-t-il au bon endroit ?
dig +short www.example.com
# Attendu : ingress.k-bdkbsh.blackswift.hosting. puis des IP

# 2. L'Ingress est-il correctement câblé ?
kubectl describe ingress <ingress> -n <namespace>
# Vérifiez host, service cible et port — un 503 = service/port incorrects

# 3. Le certificat est-il émis ?
kubectl get certificates -n <namespace>
# READY=False ? Creusez :
kubectl get certificaterequests,orders,challenges -n <namespace>
```

Un challenge ACME bloqué vient presque toujours d'un DNS qui ne pointe pas encore
vers la plateforme — voir [Configurer votre DNS](https://docs.blackswift.cloud/deployer/configurer-votre-dns.md).

## Connexion refusée vers un autre service

- Les namespaces d'une **même organisation** communiquent librement entre eux.
- Un service dans le namespace d'une **autre organisation** est injoignable
  **par design** ([isolation réseau](https://docs.blackswift.cloud/comprendre/isolation-reseau.md)).
- Un NodePort/LoadBalancer injoignable depuis Internet ? Le label
  `exposition: public` doit être **sur les pods**, pas sur le Service
  ([détails](https://docs.blackswift.cloud/deployer/exposer-en-https.md#3-exposer-un-protocole-non-http)).

## Toujours bloqué ?

[Contactez le support](https://docs.blackswift.cloud/depanner/contacter-le-support.md) avec le namespace, les
manifests concernés et la sortie des commandes ci-dessus : vous gagnerez un
aller-retour.
