MCPcopy Index your code
hub / github.com/CentaurusInfra/arktos

github.com/CentaurusInfra/arktos @v1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0 ↗ · + Follow
86,139 symbols 467,118 edges 7,979 files 37,242 documented · 43%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Arktos

Go Report Card LICENSE

What is Arktos

Arktos is an open source project designed for large scale cloud compute infrastructure. It is evolved from the open source project Kubernetes codebase with core design changes.

Arktos aims to be an open source solution to address key challenges of large-scale clouds, including system scalability, resource efficiency, multitenancy, edge computing, and the native support for the fast-growing modern workloads such as containers and serverless functions.

Architecture

Architecture Diagram

Key Features

Large Scalability

Arktos achieves a scalable architecture by partitioning and scaling out components, including API Server, storage, controllers and data plane. The eventual goal of Arktos is to support 300K nodes with a single regional control plane.

Multitenancy

Arktos implements a hard multitenancy model to meet the strict isolation requirement highly desired by public cloud environment. It's based on the virtual cluster idea and all isolations are transparent to tenants. Each tenant feels it's a dedicated cluster for them.

Unified Container/VM Orchestration

In addition to container orchestration, Arktos implements a built-in support for VMs. In Arktos a pod can contain either containers or a VM. They are scheduled the same way in a same resource pool. This enables cloud providers use a single converged stack to manage all cloud hosts.

More Features

There are more features under development, such as cloud-edge scheduling, in-place vertical scaling, etc. Check out the project introduction for more information.

Build Arktos

Arktos requires a few dependencies to build and run, and a bash script is provided to install them.

After the prerequisites are installed, you just need to clone the repo and run "make":

Note: you need to have a working Go 1.13 environment. Go 1.14 and above is not supported yet.
mkdir -p $GOPATH/src/github.com
cd $GOPATH/src/github.com
git clone https://github.com/CentaurusInfra/arktos
cd arktos
make

Run Arktos

The easiest way to run Arktos is to bring up a single-node cluster in your local development box:

cd $GOPATH/src/github.com/arktos
./hack/arktos-up.sh

The above command shows how to set up arktos with default network solution, bridge. With release 1.0, an advanced network solution, Mizar, is introduced into Arktos. The integration with Mizar allows tenant pods/services to be truely isolated from pods/services in another tenant. To start Arktos cluster with Mizar, make sure you are using Ubuntu 18.04+, run the following command:

cd $GOPATH/src/github.com/arktos
CNIPLUGIN=mizar ./hack/arktos-up.sh

After the Arktos cluster is up, you can access the cluster with kubectl tool released in Arktos just like what you do with a Kubernetes cluster. For example:

cd $GOPATH/src/github.com/arktos
./cluster/kubectl.sh get nodes

To setup a multi-node cluster, please refer to Arktos Cluster Setup Guide. And this guide gives detailed instructions if you want to enable partitions in the cluster.

To setup an Arktos scale out cluster in Google Cloud, please refer to Setting up Arktos scale out environment in Google Cloud.

To setup an Arktos scale out cluster in local dev environment, follow the instructions on Setting up local dev environment for scale out.

Community Meetings

Pacific Time: Tuesday, 6:00PM PT (Biweekly), starting 7/20/2021. Please join our slack channel/email group for the latest update.

Resources: Meeting Link | Meeting Summary

Documents and Support

The design document folder contains the detailed design of already implemented features, and also some thoughts for planned features.

The user guide folder provides information about these features from users' perspective.

To report a problem, please create an issue in the project repo.

To ask a question, here is the invitation to join Arktos slack channels. You can also post in the email group, or create an issue of question type in the repo.

Extension points exported contracts — how you extend this code

Measurement (Interface)
Measurement is an common interface for all measurements methods. It should be implemented by the user to allow his/her m [19 …
perf-tests/clusterloader2/pkg/measurement/interface.go
Binder (Interface)
Binder knows how to write a binding. [11 implementers]
pkg/scheduler/factory.go
RangeRegistry (Interface)
RangeRegistry is a registry that can retrieve or persist a RangeAllocation object. [21 implementers]
pkg/registry/core/rangeallocation/registry.go
SysctlsStrategy (Interface)
SysctlsStrategy defines the interface for all sysctl strategies. [215 implementers]
pkg/security/podsecuritypolicy/sysctl/types.go
InformerFactory (Interface)
InformerFactory creates informers for each group version resource. [18 implementers]
pkg/cloudfabric-controller/informer_factory.go
InformerFactory (Interface)
InformerFactory creates informers for each group version resource. [18 implementers]
pkg/controller/informer_factory.go
ProxyProvider (Interface)
ProxyProvider is the interface provided by proxier implementations. [6 implementers]
pkg/proxy/types.go
ResourcePrinter (Interface)
ResourcePrinter is an interface that knows how to print runtime objects. [12 implementers]
pkg/printers/interface.go

Core symbols most depended-on inside this repo

Errorf
called by 15649
pkg/kubelet/pod_workers_test.go
Errorf
called by 7742
staging/src/k8s.io/apiextensions-apiserver/pkg/cmd/server/testing/testserver.go
Fatalf
called by 5057
pkg/scheduler/internal/cache/cache_test.go
Infof
called by 4692
test/e2e/framework/ingress/ingress_utils.go
Errorf
called by 4423
staging/src/k8s.io/client-go/util/testing/fake_handler.go
V
called by 4028
staging/src/k8s.io/apiserver/pkg/storage/etcd3/logger.go
new
called by 3863
plugin/pkg/admission/deployment/network/admission.go
Error
called by 3066
staging/src/k8s.io/client-go/util/exec/exec.go

Shape

Method 44,505
Function 30,484
Struct 7,800
Interface 2,133
TypeAlias 834
FuncType 376
Class 7

Languages

Go100%
Python1%

Modules by API surface

staging/src/k8s.io/cri-api/pkg/apis/runtime/v1alpha2/api.pb.go2,225 symbols
pkg/apis/core/v1/zz_generated.conversion.go907 symbols
pkg/volume/csi/csiv0/csi.pb.go891 symbols
staging/src/k8s.io/api/extensions/v1beta1/generated.pb.go804 symbols
staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go625 symbols
staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go516 symbols
pkg/apis/core/zz_generated.deepcopy.go516 symbols
staging/src/k8s.io/api/apps/v1beta2/generated.pb.go440 symbols
staging/src/k8s.io/api/apps/v1/generated.pb.go398 symbols
staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.pb.go356 symbols
staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go342 symbols
staging/src/k8s.io/api/apps/v1beta1/generated.pb.go300 symbols

For agents

$ claude mcp add arktos \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact