Sencillo is a scheduling framework designed to streamline scheduler development in Kubernetes environments. With Sencillo, developers can focus on developing decision-making algorithms. The framework handles connecting to the API server, managing pod creation events, and managing cluster resources.
- 🚀 Support for Various Clusters Types: The framework supports only-cloud, only-edge and cloud-assisted edge clusters.
- 🔀 Multi-Algorithm Support: Supports multiple scheduling algorithms in a single codebase with a dynamic algorithm selection mechanism configurable through Kubernetes configmaps.
- 📊 Accurate Cluster State Tracking: Continuously monitors and maintains an up-to-date view of CPU and memory availability across all nodes.
Kubernetes Integration: Seamlessly integrates with Kubernetes clusters for smooth deployment and management.
- 🧩 Modular Architecture: Easily extend and customize scheduling logic thanks to a clean and modular codebase.
cmd/: Contains the main entry points for the different scheduler implementations.configs/: Configuration files for the schedulers.deployments/: Kubernetes deployment manifests for deploying the schedulers.internal/: Internal packages and modules used across the project.Dockerfile: Dockerfile for building the scheduler container images.Makefile: Makefile for automating build and deployment tasks.docker-compose.yaml: Docker Compose configuration for local development and testing.go.modandgo.sum: Go module files for dependency management.main.go: The main entry point for the application.
- Go 1.16 or higher
- Docker
- Kubernetes cluster
-
Clone the Repository:
git clone https://github.com/Noisyboy-9/sencillo.git cd sencillo -
Build the Docker Image:
make docker-build
-
Deploy to Kubernetes:
Ensure your
kubectlis configured to communicate with your Kubernetes cluster, then run:kubectl apply -f deployments/
After deployment, the schedulers will be running within your Kubernetes cluster, ready to handle scheduling tasks based on their implemented algorithms. You can monitor their behavior and performance using Kubernetes tools and logs.
Contributions are welcome! Please fork the repository and submit a pull request with your changes. Ensure that your code adheres to the project's coding standards and includes appropriate tests.
This project is licensed under the MIT License. See the LICENSE file for details.