Important
At the moment MeisterStack is active coursework and in proof-of-concept phase. Feature requests and bug-fixes do not have high priority.
MeisterStack is a lightweight Infrastructure-as-a-Service (IaaS) tool that enables the user to mange virtual machines, block-storage and networking resources across multiple machines in multiple clusters. Its goal is to enable small labs and research clusters with a cloud-like experience. It's architecture is inspired by Kubernetes, Oakestra and OpenStack. For a list of already supported and planned features read the docs.
MeisterStack supports sharing NVIDIA GPUs with its nvrm driver that utilizes Project Leandro.
Warning
The project is at the moment considered in ALPHA stage, most features are proven in the lab but to reach
BETA, long-term tests and support for Linstor and Vitastor is planned to support SDS solutions.
This project heavily used AI for implementation and testing, when the project reaches BETA stage the generated
code will be fully reviewed!
Requirements:
Prerequisites:
./get_patched_binaries.sh
cargo buildSetup local etcd (one for both tiers):
etcd --data-dir /tmp/ms-dev/etcd --listen-client-urls http://127.0.0.1:2379 --advertise-client-urls http://127.0.0.1:2379Setup cloud-tier:
cp config/examples/cloud.toml /tmp/ms-dev/cloud.toml # uses port 3000 and 50050
target/debug/meister-cloud-controller --config /tmp/ms-dev/cloud.tomlSetup cluster-tier:
cp config/examples/cluster.toml /tmp/ms-dev/cluster.toml # uses port 3001 and 50051
target/debug/meister-cluster-controller --config /tmp/ms-dev/cluster.tomlSetup agent:
sudo target/debug/meister-agent --config config/agent.dev.toml*Note that the image nixos.raw has to sit in ../images relative to the config.
Create CLI-profiles:
CLI-profiles are files that hold an endpoint and the required credentials. This makes it more easy to specify to which layer you want to talk.
For this example you can jsut use the config/cli.dev.toml or specify `--endpoint "http://127.0.0.1:3000" before each command.
cp config/cli.dev.toml ~/.config/meisterstack/config.tomlUse MeisterStack:
meister api-resources
meister whoami
meister node ls --cluster cluster-1 # the agent must show up here before a VM can land
meister tenant create lab
meister image create nixos.raw --source /absolute/path/to/images/nixos.raw
meister vm create -t lab -f config/json/plain.json demo
meister vm ls -t lab
meister vm logs demo
meister --endpoint http://127.0.0.1:3001 vm ls # to talk to the cluster-level APISee Deployment for further information. A special deployment tool meister-deploy is under active development.
One machine with a card and no control plane — the agent and the CLI at its socket, for a local rig — is the single node, Deployment §20: a NixOS profile, or scripts/meisterstack-install.sh on any other Linux (which also puts the CLI alone on a laptop or a runner).
MeisterStack is organized in three tiers. The Agent that runs locally on the hypervisor. The Cluster-Controller and the Cloud-Controller
that act as two tiered, etcd backed control-plane. Plugins and Drivers allow to utilize traits and abstract capabilities on specific devices
and adapt to other software stacks at compile time. The three tiers of the system communicate via gRPC and use an three-tiered, Kubernetes inspired
reconcile mechanism to control the cloud.
The control-plane supports high-availability on both levels, for the future it is planned to make the cluster-controller more modular to adapt more easy
to already existing solutions for storage and networking like OVN/OVS and software defined storage of any kind.
See the docs for more detailed information.
The project is opensource and under MIT License.