ultron

command module
v0.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 12, 2024 License: Apache-2.0 Imports: 11 Imported by: 0

README

Ultron

Ultron is a critical component of Project Ultron, designed to enhance the automation and intelligence of workload management within Kubernetes clusters. At its core, its a webhook server responsible for dynamically and automatically assigning labels to pods as they are provisioned. This auto-labeling mechanism enables Kubernetes to make more informed decisions about pod scheduling, resource allocation and workload optimization. By applying labels based on a variety of important criteria, Ultron ensures that workloads are efficiently distributed across the available nodes or assigned to a newly provisioned one if needed.

The labels applied by the ultron can include a wide range of information:

  • Pod workload type: Labels can categorize workloads as batch processing, real-time applications or AI/ML jobs, allowing for better differentiation and handling of diverse workload types on available nodes.

  • Resource requirements: Labels reflecting the specific CPU, memory or other resource needs of a pod can guide more accurate scheduling and ensure that pods are placed on nodes with appropriate available resources.

  • Priority and custom labels: Users can define custom labels to express specific organizational or operational priorities, such as higher-priority workloads or specialized workflows, enabling fine-tuned control over workload handling.

  • Node-specific labels: These labels are applied to optimize pod placement based on node characteristics, ensuring that pods are scheduled on nodes that can provide the best performance or cost efficiency for the given workload.

This automatic labeling system is crucial for Kubernetes clusters that rely on autoscaling mechanisms like karpenter or cluster autoscaler, where nodes and pods are frequently provisioned or de-provisioned. By seamlessly integrating into these dynamic environments, Ultron plays a key role assisting with optimizing resource usage and improving overall cluster performance.

Prerequisites

  • Go 1.23 or higher
  • Docker (if you want to run the application in a container)

Environment Variables

The application requires the following environment variables to be set:

  • EMMA_CLIENT_ID: Your Emma API client ID
  • EMMA_CLIENT_SECRET: Your Emma API client secret

Installation

Clone the repository
git clone https://github.com/be-heroes/ultron
cd ultron
Set up environment variables
export EMMA_CLIENT_ID=your_client_id
export EMMA_CLIENT_SECRET=your_client_secret
Build the application
go build -o main main.go
Run the application
./main

Docker

To build and run the application using Docker.

Build the Docker image
docker build -t ultron:latest .
Run the Docker container
docker run -e EMMA_CLIENT_ID=your_client_id -e EMMA_CLIENT_SECRET=your_client_secret ultron:latest

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL