Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
chaoskube — Termina periodicamente pod Kubernetes casuali per testare come i sistemi si comportano in caso di failure arbitrarie dei pod, supportando filtri per namespace, label, annotazioni e pianificazione per esperimenti di chaos controllati. | Kitploit
Strumenti/GitHubGitHub/linki/chaoskube
Ingegneria del CaosTop in Ingegneria del Caos n.9
GitHublinki/chaoskube

chaoskube

Termina periodicamente pod Kubernetes casuali per testare come i sistemi si comportano in caso di failure arbitrarie dei pod, supportando filtri per namespace, label, annotazioni e pianificazione per esperimenti di chaos controllati.

Vedi Repository
1.9k127692 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

chaoskube

GitHub release go-doc

chaoskube termina periodicamente pod casuali nel tuo cluster Kubernetes.

chaoskube

Perché

Verifica come il tuo sistema si comporta in caso di guasti arbitrari dei pod.

Esempio

Eseguendolo, per impostazione predefinita terminerà un pod in qualsiasi namespace ogni 10 minuti.

$ 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 consente di filtrare i pod target per namespace, label, annotazioni ed età e di escludere determinati giorni della settimana, fasce orarie e giorni dell'anno dal caos.

Come

Helm

Puoi installare chaoskube con Helm. Segui la Guida rapida di Helm e poi installa la chart chaoskube.

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

Fai riferimento a chaoskube su kubeapps.com per sapere come configurarlo e trovare altre utili chart Helm.

Manifesto grezzo

Fai riferimento al manifesto di esempio. Assicurati di concedere a chaoskube le autorizzazioni appropriate utilizzando il ClusterRole fornito.

Configurazione

Per impostazione predefinita, chaoskube è innocuo e non termina nulla. Una volta convalidato il cluster target, puoi disattivare la modalità dry-run passando il flag --no-dry-run. Puoi anche specificare un intervallo più aggressivo e altri flag supportati per il tuo deployment.

Se stai eseguendo in un cluster Kubernetes e vuoi avere come target lo stesso cluster, tutto ciò che devi fare è questo.

Se vuoi avere come target un cluster diverso o eseguirlo in locale, specifica il cluster tramite il flag --master o fornisci un kubeconfig valido tramite il flag --kubeconfig. Per impostazione predefinita, utilizza il percorso kubeconfig standard nella tua home. Ciò significa che verrà preso di mira qualunque contesto sia attualmente presente lì.

Se vuoi aumentare o diminuire la quantità di caos, modifica l'intervallo tra le terminazioni con il flag --interval. In alternativa, puoi aumentare il numero di repliche del tuo deployment chaoskube.

Ricorda che chaoskube, per impostazione predefinita, termina qualsiasi pod in tutti i tuoi namespace, inclusi i pod di sistema e sé stesso.

chaoskube fornisce un semplice endpoint HTTP che può essere utilizzato per verificare che sia in esecuzione. Può essere usato per i probe di liveness e readiness di Kubernetes. Per impostazione predefinita, ascolta sulla porta 8080. Per disattivarlo, passa --metrics-address="" a chaoskube.

Filtrare i target

Tuttavia, puoi limitare lo spazio di ricerca di chaoskube fornendo selettori di label, annotazioni e namespace, pattern di inclusione/esclusione per i nomi dei pod, oltre a un'impostazione di età minima.

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

Questo seleziona tutti i pod che hanno la label app impostata su mate, la label chaos impostata su qualsiasi valore e la label stage non impostata su production o non impostata.

Puoi filtrare i pod target anche tramite un selettore di namespace.

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

Questo filtrerà i pod nei tre namespace default, staging e testing.

I namespace possono inoltre essere filtrati tramite un selettore di label dei namespace.

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

Questo escluderà tutti i pod dai namespace con la label integration.

Puoi filtrare i pod target tramite il selettore di kind degli OwnerReference.

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

Questo escluderà qualsiasi pod DaemonSet e StatefulSet.

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

Questo includerà solo i pod DaemonSet.

Nota: qualsiasi filtro di inclusione escluderà automaticamente tutti i pod senza un OwnerReference definito.

Puoi filtrare i pod per nome:

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

Ciò farà sì che vengano presi di mira solo i pod il cui nome contiene 'foo' o 'bar' e non contiene 'prod'.

Puoi anche escludere namespace e combinarli con i selettori di label e annotazioni.

$ 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"

Questo limita ulteriormente lo spazio di ricerca del selettore di label precedente, escludendo anche i pod nei namespace kube-system e production e ignorando tutti i pod contrassegnati come critici.

Il selettore di annotazioni può essere utilizzato anche per eseguire chaoskube come componente aggiuntivo del cluster e consentire ai pod di aderire volontariamente alla terminazione come meglio credi. Ad esempio, potresti eseguire chaoskube in questo modo:

$ 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
Scarica lo strumento