Aller au contenu

Checklist de diagnostic

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

Les 4 commandes réflexes

Fenêtre de terminal
# 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ômeCause la plus probable sur KontainersPage
CrashLoopBackOffL’application plante au démarrageMon pod est en erreur
OOMKilledMémoire consommée > request (la limite lui est égale)Mon pod est en erreur
ImagePullBackOffRegistre inaccessible ou token expiré (aggravé par le pull Always forcé)Mon pod est en erreur
Le Deployment existe mais aucun pod n’apparaîtQuota atteint ou politique de sécuritéci-dessous
Pod PendingQuota CPU/mémoire du namespace atteintci-dessous
Site injoignable / certificat absentDNS, Ingress ou émission ACMEci-dessous
Connexion refusée entre deux servicesIsolation 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 :

Fenêtre de terminal
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 :
    Fenêtre de terminal
    kubectl describe resourcequota blackswift-standard -n <namespace>
    Réduisez les requests, supprimez des workloads inutiles, ou demandez une augmentation.
  2. Rejet Pod Security — le message mentionne violates PodSecurity "baseline" : votre pod demande privileged, hostPath, hostNetwork… Ce n’est pas permis (pourquoi).
  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 :

Fenêtre de terminal
# 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.

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).
  • Un NodePort/LoadBalancer injoignable depuis Internet ? Le label exposition: public doit être sur les pods, pas sur le Service (détails).

Toujours bloqué ?

Contactez le support avec le namespace, les manifests concernés et la sortie des commandes ci-dessus : vous gagnerez un aller-retour.