katalyst-core

module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Feb 27, 2023 License: Apache-2.0

README

Katalyst-core

English | 简体中文

Overview

katalyst aims to provide a universal solution to help improve resource utilization and optimize the overall costs in the cloud. The main feature includes:

  • QoS-Based Resource Model: provide pre-defined QoS Model along with multiple enhancements to match up with QoS requirements for different kinds of workload;
  • Elastic Resource Management: provide both horizontal & vertical scaling implementations, along with an extensible mechanism for out-of-tree algorithms;
  • Topology-Awared Scheduling and Allocating: expend ability of native scheduler and kubelet to support topology-awared resource scheduling, making it easy to support heterogeneous devices;
  • Fine-Grained Resource Isolation: provide real-time and fine-grained resource oversold, allocation and isolation strategies for each QoS with auto-tuned workload profiling

Katalyst contains three main projects:

  • Katalyst-API: Katalyst core API, including CRD, Protocol, QoS Model and so on;
  • Katalyst-Core: Katalyst core implementations;
  • Charts: Helm charts for all projects in Kubewharf;

More Detailed Introduction will be presented in the future.

Prerequisites

Katalyst runs on a Kubewharf enhanced kubernetes cluster. Please refer to kubewharf-enhanced-kubernetes for detailed deployment instructions.

Deploying

Please refer to Charts for detailed helm charts. Since Kubewharf enhanced kubernetes is developed based on specific versions of upstream Kubernetes and maintains API compatibility with corresponding Kubernetes versions, if you wish to run other components (e.g. operators), please note its compatibility with the corresponding Kubernetes API version.

Getting started

Katalyst provides several example yaml to demonstrate the common use cases. For more information, please refer to tutorials.

Community

Contributing

If you are willing to be a contributor for the Katalyst project, please refer to our CONTRIBUTING document for details.

Contact

If you have any questions or want to contribute, you are welcome to communicate most things via GitHub issues or pull requests. Or Contact Maintainers

License

Katalyst is under the Apache 2.0 license. See the LICENSE file for details. Certain implementations in Katalyst rely on the existing code from Kubernetes and the credits go to the original Kubernetes authors.

Directories

Path Synopsis
cmd
katalyst-scheduler/app
Package app implements a Server object for running the scheduler.
Package app implements a Server object for running the scheduler.
pkg
agent/evictionmanager
Package evictionmanager is the package that contains the libraries that drive the Kubelet binary.
Package evictionmanager is the package that contains the libraries that drive the Kubelet binary.
agent/evictionmanager/plugin
Package plugin is the package that defines the eviction strategy, and those strategies must implement EvictPlugin interface, supporting both embedded plugin and external registered plugin.
Package plugin is the package that defines the eviction strategy, and those strategies must implement EvictPlugin interface, supporting both embedded plugin and external registered plugin.
agent/resourcemanager/fetcher
Package fetcher is a framework to collect resources from multiple plugins (both in-tree and out-of-tree implementations) and push contents to reporter manager to assemble and update thrugh APIServer.
Package fetcher is a framework to collect resources from multiple plugins (both in-tree and out-of-tree implementations) and push contents to reporter manager to assemble and update thrugh APIServer.
agent/resourcemanager/fetcher/plugin
Package plugin is the package that defines the reporter plugin, and those strategies must implement ReporterPlugin interface, supporting both embedded plugin and external registered plugin.
Package plugin is the package that defines the reporter plugin, and those strategies must implement ReporterPlugin interface, supporting both embedded plugin and external registered plugin.
agent/resourcemanager/reporter
Package reporter is responsible for collecting per-node resources for scheduler; those resources are collected through multiple different sources, and updated in different K8S objects for needs.
Package reporter is responsible for collecting per-node resources for scheduler; those resources are collected through multiple different sources, and updated in different K8S objects for needs.
client
Package client is the package that generate K8S kubeConfig and clientSet; and any new CRD and its corresponding clientSet should be added here.
Package client is the package that generate K8S kubeConfig and clientSet; and any new CRD and its corresponding clientSet should be added here.
client/control
Package control is the package to perform the real update actions for K8S objects through APIServer; all clientSet actions should be arranged here to provide a unified behavior for dry-run and testing.
Package control is the package to perform the real update actions for K8S objects through APIServer; all clientSet actions should be arranged here to provide a unified behavior for dry-run and testing.
config
Package config is the package that contains those important configurations for all running components, including Manager, eviction manager and external controller.
Package config is the package that contains those important configurations for all running components, including Manager, eviction manager and external controller.
consts
Package consts is the package that defines those universal const vars if const vars are not used specifically by a certain file, ie.
Package consts is the package that defines those universal const vars if const vars are not used specifically by a certain file, ie.
controller/kcc
Package kcc is the package that is responsible to maintain the configuration of dynamic config for agents including katalyst-agent/qrm/sys-advisor and so on.
Package kcc is the package that is responsible to maintain the configuration of dynamic config for agents including katalyst-agent/qrm/sys-advisor and so on.
controller/kcc/target
Package target is the package that is responsible to maintain the kcc-target logic
Package target is the package that is responsible to maintain the kcc-target logic
controller/lifecycle
Package lifecycle is the package that is responsible to maintain the lifecycle of self-generated CRs including CNC/CNM/CNR and so on.
Package lifecycle is the package that is responsible to maintain the lifecycle of self-generated CRs including CNC/CNM/CNR and so on.
controller/spd
Package spd is the package that summary service-level information and write into ServiceProfileDescriptor CRD.
Package spd is the package that summary service-level information and write into ServiceProfileDescriptor CRD.
controller/vpa
Package vpa is the package that contains several separated controllers for vpa, and those different controllers should work together (in asynchronous way) to provide an integrated functionality.
Package vpa is the package that contains several separated controllers for vpa, and those different controllers should work together (in asynchronous way) to provide an integrated functionality.
custom-metric/collector
Package collector is the package that collects metric data from katalyst agents (current implement is a pulling model), and it's responsible to push those data to data stores.
Package collector is the package that collects metric data from katalyst agents (current implement is a pulling model), and it's responsible to push those data to data stores.
custom-metric/store
Package store is the package that stores the real-time metric, katalyst may support different kinds of store implementations for different scenarios, such monolith im-memory store or distributed im-memory stores.
Package store is the package that stores the real-time metric, katalyst may support different kinds of store implementations for different scenarios, such monolith im-memory store or distributed im-memory stores.
metaserver
Package metaserver is the package that contains those implementations to obtain metadata in the specific node, any other component wants to get those data should import this package rather than get directly.
Package metaserver is the package that contains those implementations to obtain metadata in the specific node, any other component wants to get those data should import this package rather than get directly.
metaserver/agent
Package agent is the package that contains those implementations to obtain metadata in the specific node, any other component wants to get those data should import this package rather than get directly.
Package agent is the package that contains those implementations to obtain metadata in the specific node, any other component wants to get those data should import this package rather than get directly.
metaserver/config
Package config is the package that gets centralized configurations periodically and dynamically for a given node.
Package config is the package that gets centralized configurations periodically and dynamically for a given node.
metrics
Package metrics is the package that contains those implementations to emit metrics to reflect the running states of current process.
Package metrics is the package that contains those implementations to emit metrics to reflect the running states of current process.

Jump to

Keyboard shortcuts

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