* test: add node_scenarios pytest migration under tests_v2 Migrate the node chaos coverage from the legacy CI/tests/test_node.sh into the v2 pytest framework at CI/tests_v2/scenarios/node_scenarios/. - test_node_scenarios.py (TestNodeScenarios extends BaseScenarioTest): reboot and stop/start happy paths, node_name vs label_selector targeting, node recovery with finalizer, a control-plane safety guard, and negative cases (invalid selector, invalid node, missing actions, unsupported cloud type, unknown action). - scenario_base.yaml: single node_scenarios entry (cloud_type docker, worker-only) patched per test. - Register the node_scenarios marker in pytest.ini and document the scenario in CI/tests_v2/README.md. Part of #1398. The coupled legacy move + workflow edit is left for a maintainer (the bot lacks GitHub App workflows permission); see PR description. * test: address node_scenarios review feedback - Reboot happy path now runs with kube_check: True so Krkn waits for the node to go Unknown then Ready, eliminating the race where wait_node_ready could pass against a stale Ready=True before the disruption propagated. - Finalizer ensure_node_container_running now polls for Ready (bounded) when given k8s_core and logs non-zero 'start' exits, matching the docstring contract so a rerun never picks up an unrecovered node. - Clarify the parallelism note: first/last worker separation only applies on multi-worker clusters (CI's 2-worker kind-config.yml); single-worker dev clusters share the node and rely on test ordering. * fix: make node happy-path tests resilient to KinD multi-CP API LB The reboot/stop_start happy paths failed in the Tests v2 job with "Response ended prematurely": with kube_check enabled, Krkn's docker node plugin polls the kube API (wait_for_unknown_status/wait_for_ready_status) for ~40-50s after the disruption, and krkn-lib does not retry a transient connection drop from the multi-control-plane KinD haproxy API load balancer. The docker action itself succeeded in <0.5s. Run both happy paths with kube_check: False so Krkn performs the action and exits cleanly, and prove real disruption deterministically via the node container's State.StartedAt advancing (runtime-level evidence, independent of node-status timing). Recovery is still verified with the resilient test-side wait_node_ready poll. README updated to match. * refactor: move reusable node/container test helpers to lib/utils Per review feedback, relocate the generic node-level helpers out of the node_scenarios test module into the shared CI/tests_v2/lib/utils.py so future node/container tests can reuse them: wait_node_ready, container_runtime, container_started_at, assert_container_cycled, ensure_node_container_running, and assert_kraken_marker. The test module now imports them; behavior is unchanged and all 8 tests still collect. * docs: fix duplicated word in tests_v2 README scenario list * test: skip redundant container start in node finalizer to avoid noisy warnings * test: honor KIND_EXPERIMENTAL_PROVIDER when selecting container runtime * docs: align node finalizer wording with start-if-stopped behavior * docs: align node test module docstring with start-if-stopped finalizer * test: sort schedulable worker nodes for deterministic targeting * test: assert combined node_stop_start_scenario marker in stop/start happy path --------- Co-authored-by: augmentcode[bot] <185243770+augmentcode[bot]@users.noreply.github.com>
Krkn aka Kraken
Chaos and resiliency testing tool for Kubernetes. Kraken injects deliberate failures into Kubernetes clusters to check if it is resilient to turbulent conditions.
Workflow
How to Get Started
Instructions on how to setup, configure and run Kraken can be found in the documentation.
Blogs, podcasts and interviews
Additional resources, including blog posts, podcasts, and community interviews, can be found on the website
Roadmap
Enhancements being planned can be found in the roadmap.
Contributing
We are always looking for more enhancements, fixes to make it better, any contributions are most welcome. Feel free to report or work on the issues filed on github.
See CONTRIBUTING.md for details, or check the contribution guidelines on the website.
Community
Key Members(slack_usernames/full name): paigerube14/Paige Rubendall, mffiedler/Mike Fiedler, tsebasti/Tullio Sebastiani, yogi/Yogananth Subramanian, sahil/Sahil Shah, pradeep/Pradeep Surisetty and ravielluri/Naga Ravi Chaitanya Elluri.
Community Meeting
If you have any questions that you think could be better discussed on a meeting, we have monthly office hours. Please add items to the agenda beforehand so we can best prepare to help you.
The Linux Foundation® (TLF) has registered trademarks and uses trademarks. For a list of TLF trademarks, see Trademark Usage.

