katalyst-core

module
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Aug 8, 2023 License: Apache-2.0

README

Katalyst-core

English | 简体中文

Overview

Katalyst aims to provide a universal solution to improve resource utilization and reduce overall costs in the cloud. The main features include:

  • QoS-based Resource Model: Katalyst provides a pre-defined QoS model along with multiple enhancements to meet the QoS requirements of various workloads;
  • Elastic Resource Management: Katalyst provides both horizontal and vertical scaling implementations, along with an extensible mechanism for out-of-tree algorithms;
  • Topology-aware Scheduling and Allocation: Katalyst extends the capabilities of the native scheduler and kubelet to be aware of the NUMA and device topology when scheduling Pods and allocating resources to them, thereby improving the performance of workloads;
  • Fine-grained Resource Isolation: Katalyst provides real-time and fine-grained resource over-commitment, allocation and isolation strategies for each QoS through auto-tuned workload profiling.

Katalyst contains three main projects:

  • Katalyst-API: API definitions for the Katalyst project, including CRDs, protocols, the QoS model, and more;
  • Katalyst-Core: Katalyst core implementations;
  • Charts: Helm charts for all projects in KubeWharf;

A 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 of the Katalyst project, please refer to our CONTRIBUTING document for details.

Contact

If you have any questions or wish to contribute, you are welcome to communicate via GitHub issues or pull requests. Alternatively, you may reach out to our 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
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