Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
chaoskube — Периодически завершает случайные поды Kubernetes, чтобы проверить, как системы ведут себя при произвольных сбоях подов; поддерживает фильтры по namespace, label, annotation и расписанию для контролируемых хаос-экспериментов. | Kitploit
Инструменты/GitHubGitHub/linki/chaoskube
Инженерия ХаосаТоп в Инженерия Хаоса №9
GitHublinki/chaoskube

chaoskube

Периодически завершает случайные поды Kubernetes, чтобы проверить, как системы ведут себя при произвольных сбоях подов; поддерживает фильтры по namespace, label, annotation и расписанию для контролируемых хаос-экспериментов.

Репозиторий
1.9k1278415 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

chaoskube

GitHub release go-doc

chaoskube периодически убивает случайные поды в вашем кластере Kubernetes.

chaoskube

Зачем

Проверьте, как ваша система ведёт себя при произвольных сбоях подов.

Пример

При запуске он по умолчанию убивает под в любом namespace каждые 10 минут.

$ 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 позволяет фильтровать целевые поды по namespaces, меткам, аннотациям и возрасту, а также исключать определённые дни недели, время суток и дни года из хаоса.

Как

Helm

Вы можете установить chaoskube с помощью Helm. Следуйте краткому руководству Helm и затем установите чарт chaoskube.

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

Обратитесь к chaoskube на kubeapps.com, чтобы узнать, как его настроить, и найти другие полезные Helm-чарты.

Обычный манифест

Обратитесь к примеру манифеста. Убедитесь, что вы предоставили chaoskube соответствующие разрешения с помощью предоставленного ClusterRole.

Конфигурация

По умолчанию chaoskube ведёт себя дружелюбно и ничего не убивает. Когда вы проверите целевой кластер, вы можете отключить режим dry-run, передав флаг --no-dry-run. Вы также можете указать более агрессивный интервал и другие поддерживаемые флаги для вашего развёртывания.

Если вы работаете в кластере Kubernetes и хотите воздействовать на тот же кластер, то этого достаточно.

Если вы хотите воздействовать на другой кластер или запустить его локально, укажите ваш кластер через флаг --master или предоставьте действующий kubeconfig через флаг --kubeconfig. По умолчанию используется стандартный путь kubeconfig в вашем домашнем каталоге. Это означает, что будет выбран текущий контекст.

Если вы хотите увеличить или уменьшить количество хаоса, измените интервал между убийствами с помощью флага --interval. Кроме того, вы можете увеличить количество реплик вашего развёртывания chaoskube.

Помните, что chaoskube по умолчанию убивает любой под во всех ваших namespaces, включая системные поды и сам себя.

chaoskube предоставляет простой HTTP-эндпоинт, который можно использовать для проверки его работы. Его можно использовать для проверок liveness и readiness в Kubernetes. По умолчанию он слушает порт 8080. Чтобы отключить, передайте --metrics-address="" в chaoskube.

Фильтрация целей

Однако вы можете ограничить пространство поиска chaoskube, указав селекторы меток, аннотаций и namespaces, шаблоны включения/исключения имён подов, а также настройку минимального возраста.

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

Это выбирает все поды, у которых метка app установлена в mate, метка chaos установлена в любое значение, а метка stage не установлена в production или не задана.

Вы также можете фильтровать целевые поды по селектору namespace.

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

Это отфильтрует поды в трёх namespaces: default, staging и testing.

Namespaces также можно фильтровать с помощью селектора меток namespace.

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

Это исключит все поды из namespaces с меткой integration.

Вы можете фильтровать целевые поды по селектору kind OwnerReference.

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

Это исключит любые поды DaemonSet и StatefulSet.

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

Это включит только поды DaemonSet.

Обратите внимание: любой фильтр include автоматически исключит все поды, у которых не определён OwnerReference.

Вы можете фильтровать поды по имени:

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

Это приведёт к тому, что целями станут только поды, чьё имя содержит 'foo' или 'bar' и не содержит 'prod'.

Вы также можете исключать namespaces и комбинировать их с селекторами меток и аннотаций.

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

Это дополнительно ограничивает пространство поиска вышеуказанного селектора меток, исключая также любые поды в namespaces kube-system и production, а также игнорируя все поды, помеченные как критичные.

Селектор аннотаций также можно использовать для запуска chaoskube как аддона кластера и разрешать подам выбирать участие в завершении так, как вы считаете нужным. Например, вы можете запустить chaoskube так:

$ 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

Если вы ещё нигде не используете эту аннотацию, сначала будут игнорироваться все ваши поды (вы можете увидеть количество кандидатов в режиме debug). Затем вы можете выборочно включать отдельные Deployment в режим хаоса, аннотируя их поды значением chaos.alpha.kubernetes.io/enabled=true.

Скачать инструмент