Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
chaoskube — Termine périodiquement des pods Kubernetes aléatoires pour tester le comportement des systèmes face à des pannes de pods arbitraires, avec prise en charge des filtres par namespace, label, annotation et planification pour des expériences de chaos contrôlées. | Kitploit
Outils/GitHubGitHub/linki/chaoskube
Ingénierie du ChaosTop en Ingénierie du Chaos n°9
GitHublinki/chaoskube

chaoskube

Termine périodiquement des pods Kubernetes aléatoires pour tester le comportement des systèmes face à des pannes de pods arbitraires, avec prise en charge des filtres par namespace, label, annotation et planification pour des expériences de chaos contrôlées.

Voir le dépôt
1.9k12784il y a 15 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

chaoskube

GitHub release go-doc

chaoskube tue périodiquement des pods aléatoires dans votre cluster Kubernetes.

chaoskube

Pourquoi

Tester comment votre système se comporte lors de défaillances de pods arbitraires.

Exemple

Par défaut, son exécution tue un pod dans chaque namespace toutes les 10 minutes.

$ chaoskube
INFO[0000] starting up              dryRun=true interval=10m0s version=v0.21.0
INFO[0000] connecting to cluster    master="https://kube.you.me" serverVersion=v1.10.5+coreos.0
INFO[0000] setting pod filter       annotations= labels= minimumAge=0s namespaces=
INFO[0000] setting quiet times      daysOfYear="[]" timesOfDay="[]" weekdays="[]"
INFO[0000] setting timezone         location=UTC name=UTC offset=0
INFO[0001] terminating pod          name=kube-dns-v20-6ikos namespace=kube-system
INFO[0601] terminating pod          name=nginx-701339712-u4fr3 namespace=chaoskube
INFO[1201] terminating pod          name=kube-proxy-gke-earthcoin-pool-3-5ee87f80-n72s namespace=kube-system
INFO[1802] terminating pod          name=nginx-701339712-bfh2y namespace=chaoskube
INFO[2402] terminating pod          name=heapster-v1.2.0-1107848163-bhtcw namespace=kube-system
INFO[3003] terminating pod          name=l7-default-backend-v1.0-o2hc9 namespace=kube-system
INFO[3603] terminating pod          name=heapster-v1.2.0-1107848163-jlfcd namespace=kube-system
INFO[4203] terminating pod          name=nginx-701339712-bfh2y namespace=chaoskube
INFO[4804] terminating pod          name=nginx-701339712-51nt8 namespace=chaoskube
...

chaoskube permet de filtrer les pods cibles par namespaces, labels, annotations et âge ainsi que d'exclure certains jours de la semaine, certaines heures de la journée et certains jours de l'année du chaos.

Comment

Helm

Vous pouvez installer chaoskube avec Helm. Suivez le Guide de démarrage rapide de Helm puis installez le chart chaoskube.

$ helm repo add chaoskube https://linki.github.io/chaoskube/
$ helm install chaoskube chaoskube/chaoskube --atomic --namespace=chaoskube --create-namespace

Référez-vous à chaoskube sur kubeapps.com pour apprendre comment le configurer et pour trouver d'autres charts Helm utiles.

Manifest brut

Référez-vous au manifest d'exemple. Assurez-vous de donner à chaoskube les permissions appropriées en utilisant le ClusterRole fourni.

Configuration

Par défaut, chaoskube est inoffensif et ne tue rien. Lorsque vous avez validé votre cluster cible, vous pouvez désactiver le mode dry-run en passant l'option --no-dry-run. Vous pouvez également spécifier un intervalle plus agressif et d'autres options prises en charge pour votre déploiement.

Si vous exécutez dans un cluster Kubernetes et que vous voulez cibler ce même cluster, c'est tout ce que vous avez à faire.

Si vous voulez cibler un autre cluster ou l'exécuter localement, spécifiez votre cluster via l'option --master ou fournissez un kubeconfig valide via l'option --kubeconfig. Par défaut, il utilise le chemin standard de votre kubeconfig dans votre répertoire personnel. Cela signifie que le contexte actuel qui s'y trouve sera ciblé.

Si vous voulez augmenter ou diminuer la quantité de chaos, modifiez l'intervalle entre les mises à mort avec l'option --interval. Vous pouvez également augmenter le nombre de réplicas de votre déploiement chaoskube.

Rappelez-vous que chaoskube, par défaut, tue tous les pods dans tous vos namespaces, y compris les pods système et lui-même.

chaoskube fournit un simple point de terminaison HTTP qui peut être utilisé pour vérifier qu'il est en cours d'exécution. Cela peut être utilisé pour les sondes de liveness et de readiness Kubernetes. Par défaut, il écoute sur le port 8080. Pour le désactiver, passez --metrics-address="" à chaoskube.

Filtrer les cibles

Cependant, vous pouvez limiter l'espace de recherche de chaoskube en fournissant des sélecteurs de labels, d'annotations et de namespaces, des motifs d'inclusion/exclusion de noms de pods, ainsi qu'un réglage d'âge minimum.

$ chaoskube --labels 'app=mate,chaos,stage!=production'
...
INFO[0000] setting pod filter       labels="app=mate,chaos,stage!=production"

Cela sélectionne tous les pods qui ont le label app défini sur mate, le label chaos défini sur n'importe quelle valeur et le label stage non défini sur production ou non défini.

Vous pouvez également filtrer les pods cibles par sélecteur de namespaces.

$ chaoskube --namespaces 'default,testing,staging'
...
INFO[0000] setting pod filter       namespaces="default,staging,testing"

Cela filtrera les pods dans les trois namespaces default, staging et testing.

Les namespaces peuvent en outre être filtrés par un sélecteur de labels sur les namespaces.

$ chaoskube --namespace-labels='!integration'
...
INFO[0000] setting pod filter       namespaceLabels="!integration"

Cela exclura tous les pods des namespaces ayant le label integration.

Vous pouvez filtrer les pods cibles par un sélecteur de type d'OwnerReference.

$ chaoskube --kinds '!DaemonSet,!StatefulSet'
...
INFO[0000] setting pod filter       kinds="!DaemonSet,!StatefulSet"

Cela exclura tous les pods de DaemonSet et StatefulSet.

$ chaoskube --kinds 'DaemonSet'
...
INFO[0000] setting pod filter       kinds="DaemonSet"

Cela n'inclura que les pods de DaemonSet.

Veuillez noter : tout filtre include exclura automatiquement tous les pods sans OwnerReference défini.

Vous pouvez filtrer les pods par nom :

$ chaoskube --included-pod-names 'foo|bar' --excluded-pod-names 'prod'
...
INFO[0000] setting pod filter       excludedPodNames=prod includedPodNames="foo|bar"

Cela fera en sorte que seuls les pods dont le nom contient 'foo' ou 'bar' et ne contient pas 'prod' soient ciblés.

Vous pouvez également exclure des namespaces et combiner cela avec les sélecteurs de labels et d'annotations.

$ chaoskube \
    --labels 'app=mate,chaos,stage!=production' \
    --annotations '!scheduler.alpha.kubernetes.io/critical-pod' \
    --namespaces '!kube-system,!production'
...
INFO[0000] setting pod filter       annotations="!scheduler.alpha.kubernetes.io/critical-pod" labels="app=mate,chaos,stage!=production" namespaces="!kube-system,!production"

Cela limite davantage l'espace de recherche du sélecteur de labels ci-dessus en excluant également tous les pods des namespaces kube-system et production, ainsi qu'en ignorant tous les pods marqués comme critiques.

Le sélecteur d'annotations peut également être utilisé pour exécuter chaoskube en tant qu'addon de cluster et permettre aux pods de choisir d'être terminés comme bon vous semble. Par exemple, vous pourriez exécuter chaoskube comme ceci :

$ chaoskube --annotations 'chaos.alpha.kubernetes.io/enabled=true' --debug
...
INFO[0000] setting pod filter       annotations="chaos.alpha.kubernetes.io/enabled=true"
DEBU[0000] found candidates         count=0
DEBU[0000] no victim found
Télécharger l’outil