mirror of
https://github.com/krkn-chaos/krkn.git
synced 2026-08-25 09:27:36 +00:00
@@ -8,14 +8,14 @@ The following are the components of Kubernetes/OpenShift for which a basic chaos
|
||||
|
||||
```
|
||||
scenarios:
|
||||
- name: "<Name of scenario>"
|
||||
- name: "<name of scenario>"
|
||||
namespace: "<specific namespace>" # can specify "*" if you want to find in all namespaces
|
||||
label_selector: "<label of pod(s)>"
|
||||
container_name: "<specific container name>" # This is optional, can take out and will kill all containers in all pods found under namespace and label
|
||||
pod_names: # This is optional, can take out and will select all pods with given namespace and label
|
||||
- <pod_name>
|
||||
count: <number of containers to disrupt, default=1>
|
||||
action: <Action to run. For example kill 1 ( hang up ) or kill 9. Default is set to kill 1>
|
||||
action: <kill signal to run. For example 1 ( hang up ) or 9. Default is set to 1>
|
||||
expected_recovery_time: <number of seconds to wait for container to be running again> (defaults to 120seconds)
|
||||
```
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ from krkn_lib.models.telemetry import ScenarioTelemetry
|
||||
from arcaflow_plugin_sdk import serialization
|
||||
from krkn_lib.utils.functions import get_yaml_item_value
|
||||
|
||||
|
||||
# Run pod based scenarios
|
||||
def run(kubeconfig_path, scenarios_list, config, failed_post_scenarios, wait_duration):
|
||||
# Loop to run the scenarios starts here
|
||||
@@ -66,6 +67,7 @@ def run(kubeconfig_path, scenarios_list, config, failed_post_scenarios, wait_dur
|
||||
cerberus.publish_kraken_status(config, failed_post_scenarios, start_time, end_time)
|
||||
return failed_post_scenarios
|
||||
|
||||
|
||||
# krkn_lib
|
||||
def container_run(kubeconfig_path,
|
||||
scenarios_list,
|
||||
@@ -134,8 +136,16 @@ def container_killing_in_pod(cont_scenario, kubecli: KrknKubernetes):
|
||||
label_selector = get_yaml_item_value(cont_scenario, "label_selector", None)
|
||||
pod_names = get_yaml_item_value(cont_scenario, "pod_names", [])
|
||||
container_name = get_yaml_item_value(cont_scenario, "container_name", "")
|
||||
kill_action = get_yaml_item_value(cont_scenario, "action", "kill 1")
|
||||
kill_action = get_yaml_item_value(cont_scenario, "action", 1)
|
||||
kill_count = get_yaml_item_value(cont_scenario, "count", 1)
|
||||
if not isinstance(kill_action, int):
|
||||
logging.error("Please make sure the action parameter defined in the "
|
||||
"config is an integer")
|
||||
raise RuntimeError()
|
||||
if (kill_action < 1) or (kill_action > 15):
|
||||
logging.error("Only 1-15 kill signals are supported.")
|
||||
raise RuntimeError()
|
||||
kill_action = "kill " + str(kill_action)
|
||||
if type(pod_names) != list:
|
||||
logging.error("Please make sure your pod_names are in a list format")
|
||||
# removed_exit
|
||||
|
||||
@@ -3,6 +3,6 @@ scenarios:
|
||||
namespace: "openshift-etcd"
|
||||
label_selector: "k8s-app=etcd"
|
||||
container_name: "etcd"
|
||||
action: "kill 1"
|
||||
action: 1
|
||||
count: 1
|
||||
expected_recovery_time: 60
|
||||
|
||||
Reference in New Issue
Block a user