Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/acrlabs/simkube
Record-and-replay Kubernetes simulator based on KWOK
https://github.com/acrlabs/simkube
k8s kubernetes rust simulation
Last synced: 2 months ago
JSON representation
Record-and-replay Kubernetes simulator based on KWOK
- Host: GitHub
- URL: https://github.com/acrlabs/simkube
- Owner: acrlabs
- License: mit
- Created: 2023-06-13T17:27:11.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-09-17T16:32:09.000Z (3 months ago)
- Last Synced: 2024-09-18T08:09:32.854Z (3 months ago)
- Topics: k8s, kubernetes, rust, simulation
- Language: Rust
- Homepage: https://appliedcomputing.io/simkube
- Size: 2.3 MB
- Stars: 222
- Watchers: 4
- Forks: 11
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-repositories - acrlabs/simkube - Record-and-replay Kubernetes simulator based on KWOK (Rust)
README
![build status](https://github.com/acrlabs/simkube/actions/workflows/verify.yml/badge.svg)
# simkube
A collection of tools for simulating Kubernetes scheduling and autoscaling behaviour
## Overview
This package provides the following components:
- `skctl`: a CLI utility for interacting with various other SimKube components
- `sk-ctrl`: a Kubernetes Controller that watches for Simulation custom resources and runs a simulation based on the
provided trace file.
- `sk-driver`: the actual runner for a specific simulation, created as a Kubernetes Job by `sk-ctrl`
- `sk-tracer`: a watcher for Kubernetes pod creation and deletion events, saves these events in a replayable trace
format.### Architecture Diagram
![architecture diagram of SimKube](docs/images/sk-overview.png)
### Demo
[![Watch the video](https://img.youtube.com/vi/Q1XpH1H4It8/hqdefault.jpg)](https://www.youtube.com/watch?v=Q1XpH1H4It8)
## Installation
1. To install `sk-tracer` in your prod cluster: `kubectl apply -k k8s/kustomize/prod`
2. To install `sk-ctrl` in your simulation cluster: `kubectl apply -k k8s/kustomize/sim`
3. To install `skctl` on your dev machine: `cargo install skctl`## Documentation
Full [documentation for SimKube](https://appliedcomputing.io/simkube/) is available on Applied
Computing's website. Here are some quick links to select topics:- [Installation](https://appliedcomputing.io/simkube/docs/intro/installation/)
- [Autoscaling](http://appliedcomputing.io/simkube/docs/adv/autoscaling/)
- [Metrics Collection](http://appliedcomputing.io/simkube/docs/adv/metrics/)
- [Component Reference](http://appliedcomputing.io/simkube/docs/components/skctl/)
- [Developing SimKube](http://appliedcomputing.io/simkube/docs/dev/contributing/)## Community
We have a [channel](https://kubernetes.slack.com/archives/C07LTUB823Z) on the Kubernetes Slack instance! Come chat with
us there. (You can [sign up](https://communityinviter.com/apps/kubernetes/community) for the Kubernetes Slack instance
for free)## Contributing
We welcome any and all contributions to the SimKube project! Please open a pull request.
If you have a feature request, please start a [discussion](https://github.com/acrlabs/simkube/discussions). Members of
the SimKube team will determine whether the feature should become planned work and how it will be prioritized.If you've found a bug or are working on a planned improvement, please [open an
issue](https://github.com/acrlabs/simkube/issues)!### Code of Conduct
Applied Computing Research Labs has a strict code of conduct we expect all contributors to adhere to. Please read the
[full text](https://github.com/acrlabs/simkube/blob/master/CODE_OF_CONDUCT.md) so that you understand the expectations
upon you as a contributor.### Copyright and Licensing
SimKube is licensed under the [MIT License](https://github.com/acrlabs/simkube/blob/master/LICENSE). Contributors to
this project agree that they own the copyrights to all contributed material, and agree to license your contributions
under the same terms. This is "inbound=outbound", and is the [GitHub
default](https://docs.github.com/en/site-policy/github-terms/github-terms-of-service#6-contributions-under-repository-license).> [!WARNING]
> Due to the uncertain nature of copyright and IP law, this repository does not accept contributions that have been all
> or partially generated with GitHub Copilot or other LLM-based code generation tools. Please disable any such tools
> before authoring changes to this project.## Related Reading
- [Announcing SimKube 1.0](https://blog.appliedcomputing.io/p/announcing-simkube-v10)
- [Why do we need a simulator?](https://blog.appliedcomputing.io/p/simkube-part-1-why-do-we-need-a-simulator)