GithubHelp home page GithubHelp logo

web-logs2 / kubebrain-3 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sky-big/kubebrain

0.0 0.0 0.0 1.77 MB

A High Performance Metadata System for Kubernetes

License: Apache License 2.0

Shell 3.52% Python 0.41% Go 96.02% Makefile 0.06%

kubebrain-3's Introduction

KubeBrain

English | δΈ­ζ–‡

Overview

Kubernetes is a distributed application orchestration and scheduling system. It has become the de facto standard for cloud-native application bases, but its official stable operation scale is limited to 5K nodes. This is sufficient for most application scenarios, but still insufficient for applications with millions of machine nodes. With the growth of "digitalisation" and "cloud-native" in particular, the overall global IT infrastructure will continue to grow at an accelerated rate. For distributed application orchestration and scheduling systems, there are two ways to adapt to this trend.

  • Horizontal scaling: building the ability to manage N clusters.
  • Vertical scaling: increasing the size of individual clusters. In order to scale a single cluster, the storage of meta/state information is one of the core scaling points, and this project is to solve the scalability and performance problems of cluster state information storage.

We investigated some of existing distributed storage systems, and analyzed the performance of ETCD and the interface usage in kubernetes for state information storage. Inspired by the kine project, KubeBrain was implemented as the core service for Kubernetes state information storage.

Feature

  • Stateless: KubeBrain is a component that implements the storage server interface required by the API Server. It performs the conversion of the storage interface and does not actually store the data. The actual metadata is stored in the underlying storage engine, and the data that the API Server needs to monitor is stored in the memory of the master node.
  • Extensibility: KubeBrain abstracts the key-value database interface, and implements the interface needed for storage API Server storage on this basis. All key-value databases with specified characteristics can be adapted to the storage interface.
  • High availability: KubeBrain currently uses master-slave architecture. The master node supports all operations including conditional update, read, and event monitoring. The slave node supports read operations, and automatically selects the master based on K8S's "leaderelection" to achieve high availability.
  • Horizontal scaling: In a production environment, KubeBrain usually uses a distributed key-value database to store data. Horizontal scaling involves two levels:
    • At the KubeBrain level, concurrent read performance can be improved by adding slave nodes;
    • At the storage engine level, read and write performance and storage capacity can be improved by adding storage nodes.

Detailed Documentation

TODO

  • Guarantee consistence in critical cases
  • Optimize storage engine interface
  • Optimize unit test code, add use cases and error injection
  • Jepsen Test
  • Implement Proxy to make it more scalable

Contribution

Please check Contributing for more details.

Code of Conduct

Please check Code of Conduct for more details.

Community

License

This project is licensed under the Apache-2.0 License.

kubebrain-3's People

Contributors

divanodestiny avatar strrl avatar sky-big avatar charleszheng44 avatar tangmengqiu avatar lenage avatar c4pt0r avatar siddontang avatar xuchen-xiaoying avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.