Skip to content

Kubernetes

Audit : Trouver les déploiements forçant le pull d’image

Section titled “Audit : Trouver les déploiements forçant le pull d’image”

Le contexte : La politique imagePullPolicy: Always force K8s à re-télécharger l’image à chaque démarrage de pod, même si elle est déjà présente sur le noeud. C’est pratique en dev, mais en production, cela ralentit les démarrages, surcharge votre registry, et crée un point of failure (si la registry est injoignable, l’app ne redémarre pas).

Voici une commande avancée qui utilise kubectl et jq (qui doit être installé) pour lister tous les déploiements actifs qui utilisent cette politique, afin de pouvoir les corriger.

Terminal window
kubectl get deploy -A -o json | jq -r '
.items[]
| select((.spec.replicas // 1) > 0)
| select(.spec.template.spec.containers[].imagePullPolicy=="Always")
| [.metadata.namespace, .metadata.name]
| @tsv
'

Note : Cette commande filtre pour ne remonter que les déploiements qui ont au moins 1 réplica configuré.


Quand on investigue un problème réseau, on doit souvent faire le lien entre une adresse IP et l’endroit physique/virtuel où tourne la charge.

Simple et efficace. Le flag -o wide ajoute des colonnes essentielles comme l’IP interne, l’IP externe, l’OS et le runtime.

Terminal window
kubectl get nodes -o wide

Voir tous les pods qui tournent sur un noeud spécifique

Section titled “Voir tous les pods qui tournent sur un noeud spécifique”

Si vous savez qu’un noeud pose problème (CPU à 100%, perte réseau), vous pouvez lister tout ce qui tourne dessus grâce au field-selector.

Terminal window
kubectl get pods -A -o wide --field-selector spec.nodeName=<NODE_NAME>

Filtrer les logs de l’Ingress Controller pour une app spécifique

Section titled “Filtrer les logs de l’Ingress Controller pour une app spécifique”

L’Ingress Controller est le point d’entrée de votre cluster. Il gère le trafic pour des dizaines d’applications. Pour isoler les erreurs (comme un 502 Bad Gateway) concernant votre application spécifique, il faut filtrer les logs de ce contrôleur.

Terminal window
kubectl logs -n <NAMESPACE_INGRESS> deployment/<NOM_DEPLOIEMENT_INGRESS> | grep <NOM_DE_VOTRE_APP>

Performances : Isoler les consommateurs de mémoire

Section titled “Performances : Isoler les consommateurs de mémoire”

Un grand classique. Si votre cluster est en tension mémoire (OOMKilled en vue), cette commande liste les 30 pods les plus gourmands sur tout le cluster.

Prérequis : Le Metrics Server doit être installé sur votre cluster pour que la commande top fonctionne.

Terminal window
kubectl top pods -A --sort-by=memory | head -30