Scenarios

Available Krkn-AI Scenarios

The following Krkn scenarios are currently supported by Krkn-AI.

At least one scenario must be enabled for the Krkn-AI experiment to run.

ScenarioKrkn-AI Config (YAML)
Pod Scenarioscenario.pod-scenarios
Application Outagesscenario.application-outages
Container Scenarioscenario.container-scenarios
Node CPU Hogscenario.node-cpu-hog
Node Memory Hogscenario.node-memory-hog
Node IO Hogscenario.node-io-hog
Syn Floodscenario.syn-flood
Time Scenarioscenario.time-scenarios
Network Scenariosscenario.network-scenarios
DNS Outagescenario.dns-outage
PVC Scenarioscenario.pvc-scenarios
KubeVirt VM Outagescenario.kubevirt-scenarios
Storage Throttlescenario.storage-throttle

When you generate a config with discover, Krkn-AI enables the scenarios your cluster can run and disables the rest. Each scenario needs certain components to be present:

ScenarioRequires
Pod ScenarioA running pod with at least one label
Application OutagesA running pod with at least one label
Container ScenarioA running pod with at least one label
Node CPU HogA schedulable, ready node
Node Memory HogA schedulable, ready node
Node IO HogA schedulable, ready node
Time ScenarioA namespace containing pods, and labels on pods or nodes
Network ScenariosA node with a discovered network interface
DNS OutageA running pod
Syn FloodA service that exposes ports
PVC ScenarioA PVC, or a pod in a discovered namespace
KubeVirt VM OutageA KubeVirt virtual machine instance
Storage ThrottleA PVC, or a pod in a discovered namespace

If nothing can be built, every scenario is disabled and Krkn-AI logs a warning. That usually means the filters were too narrow, so widen -n and run discover again.

You can always override this. Depending on your use case, enable or disable these scenarios in the krkn-ai.yaml config file by setting the enable field to true or false.

scenario:
  pod-scenarios:
    enable: true

  application-outages:
    enable: false

  container-scenarios:
    enable: false

  node-cpu-hog:
    enable: true

  node-memory-hog:
    enable: true

  node-io-hog:
    enable: false

  syn-flood:
    enable: false

  time-scenarios:
    enable: true

  network-scenarios:
    enable: false

  dns-outage:
    enable: true

  pvc-scenarios:
    enable: false

  kubevirt-scenarios:
    enable: false

  storage-throttle:
    enable: false