https://github.com/cau-se/ecoscape

Benchmark for Kubernetes Remediators

https://github.com/cau-se/ecoscape

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.2%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Benchmark for Kubernetes Remediators

Basic Info
  • Host: GitHub
  • Owner: cau-se
  • License: apache-2.0
  • Language: Jsonnet
  • Default Branch: master
  • Size: 232 KB
Statistics
  • Stars: 1
  • Watchers: 6
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created about 1 year ago · Last pushed 11 months ago
Metadata Files
Readme License

README.md

Ecoscape

Ecoscape is a simulated edge-cloud continuum testbed and a benchmark for fault remediation strategies. Ecoscape leverages Kubernetes and the chaos engineering tool Chaos Mesh to simulate nodes within the edge-cloud continuum. Additionally, it provides benchmarking scripts that simulates faults on the simulated edge and cloud nodes. This enables the benchmark of remediation strategies. A remediation strategy is a set of actions to reconfigure a service to sustain its Service Level Objectives (SLOs).

Benchmark Definition

The Ecoscape Benchmark three configuration: The SLOs, the duration and the directories.

SLO's

The SLO's are your requirements to your deployed service. They are defined via a quantifiable metric and a threshold. The metrics are retrieved from Prometheus and are therefore formulated as Prometheus queries For the Ecoscape Benchmark the files are stored in the slo.yaml file.

An examplary slo.yaml is the following:

yaml prometheus: url: <prometheus-url> slos: - name: "processing-latency" query: "avg(latency{namespace=~'monitor'}!=0)" threshold: 1.5 isBiggerBetter: false weight: 1

Benchmark Duration

The Ecoscape Benchmark consists of different phases: - Deployment Phase (System under Test is deployed) - Warm-up Phase (Load Generator is deployed) - Happy Phase (Evaluation of SLO starts) - Chaos Phase (Faults are injected)

The duration of those phases are configured in the duration.yaml. Moreover, the number of repetitions are modified in that file.

yaml loadDelay: 20 #length of deployment phase in seconds evalDelay: 20 #length of warm-up phase in seconds chaosDelay: 20 #length of happy phase in seconds duration: 60 #length of chaos phase in seconds repetitions: 1

Use-cases

Ecoscape gives the opportunity to support different system configurations. These are seTo change between different use cases parated in directories during the build process.

Getting Started

To run the Ecoscape Benchmark it is required to have access to a Kubernetes cluster. It is assumed that you have the
KUBECONFIG environment variable set to the path of your kubeconfig. Additionally, Docker has to be installed on your machine.

To configure the systems you have to adopt the config/config.jsonnet file. It consists out of 5 main sections infra, data, sut, load and monitor.

The infra describes the network topology and resource constraints within the computing setup. The data definition describes the middleware that stores the data. The sut defines the tested system while the load defines which data is produced to be handled.

To interact with the cluster you have the following commands to be used. You can either install the tools locally or you can use the docker container by running ecoscape-tools.sh.

Run Ecoscape

After running the ecoscape-tools.sh you are in a docker container and you can run the commands referenced in the Useful Commands section. Before running the ecoscape benchmark a build has to be executed. By typing ecoscape you run the benchmark. You can explore the configuration options by running ecoscape --help. The results of the benchmarks are the stored in the result directory.

Useful commands:

build: Builds the Kubernetes Mainfest files

deploy {infra|sut|data|load}/{subcomponent}: This deploys the part of the manifests that are specified. For example deploy infra/networkChaos deploys the infraStructure for the networkChaos use-case.

delete {infra|sut|data|load}/{subcomponent}: This deletes the manifests from the Kubernetes cluster

kn {infra|sut|data|load|monitor}: Switch between the namespaces.

kafka <kafkaName> Gives the URL of the bootstrap server

Owner

  • Name: Kiel University - Software Engineering Group
  • Login: cau-se
  • Kind: organization
  • Location: Kiel, Germany

GitHub Events

Total
  • Watch event: 1
  • Push event: 4
  • Fork event: 1
  • Create event: 3
Last Year
  • Watch event: 1
  • Push event: 4
  • Fork event: 1
  • Create event: 3

Dependencies

Dockerfile docker
  • ubuntu 24.04 build
requirements.txt pypi
  • kubernetes *
  • prometheus-api-client *