clusternet

module
v0.16.0 Latest Latest
Warning

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

Go to latest
Published: Jun 21, 2023 License: Apache-2.0

README

GoPkg Widget License GoVersion OpenSSF Best Practices Go Report Card build Version codecov FOSSA Status


Managing Your Clusters (including public, private, hybrid, edge, etc.) as easily as Visiting the Internet.

Out of the Box.

A CNCF(Cloud Native Computing Foundation) Sandbox Project.


Clusternet (Cluster Internet) is an open source add-on that helps you manage thousands of millions of Kubernetes clusters as easily as visiting the Internet. No matter the clusters are running on public cloud, private cloud, hybrid cloud, or at the edge, Clusternet helps setup network tunnels in a configurable way and lets you manage/visit them all as if they were running locally. This also help eliminate the need to juggle different management tools for each cluster.

Clusternet can also help deploy and coordinate applications to multiple clusters from a single set of APIs in a hosting cluster.

Clusternet also provides a Kubernetes-styled API, where you can continue using the Kubernetes way, such as KubeConfig, to visit a certain Managed Kubernetes cluster, or a Kubernetes service.

Clusternet is multiple platforms supported now, including linux/amd64, linux/arm64, linux/ppc64le, linux/s390x , linux/386 and linux/arm;


Core Features

  • Kubernetes Multi-Cluster Management and Governance
    • managing Kubernetes clusters running in cloud providers, such as AWS, Google Cloud, Tencent Cloud, Alibaba Cloud, etc.
    • managing on-premise Kubernetes clusters
    • managing any Certified Kubernetes Distributions, such as k3s
    • managing Kubernetes clusters running at the edge
    • automatically discovering and registering clusters created by cluster-api
    • parent cluster can also register itself as a child cluster to run workloads
    • managing Kubernetes upper than v1.17.x (Learn more about Kubernetes Version Skew)
    • visiting any managed clusters with dynamic RBAC rules (Learn more from this tuorial)
    • cluster auto-labelling based on Node Feature Discovery
  • Application Coordinations
    • Scheduling Framework (in-tree plugins, out-of-tree plugins)
    • Cross-Cluster Scheduling
      • replication scheduling
      • static dividing scheduling by weight
      • dynamic dividing scheduling by capacity
        • cluster resource predictor framework for in-tree and out-of-tree implementations
        • various deployment topologies for cluster resource predictors
      • subgroup cluster scheduling
    • Various Resource Types
      • Kubernetes native objects, such as Deployment, StatefulSet, etc.
      • CRDs
      • helm charts, including OCI-based Helm charts
    • Resource interpretations with in-tree or out-of-tree controllers
    • Setting Overrides
      • two-stage priority based override strategies
      • easy to rollback overrides
      • cross-cluster canary rollout
    • Multi-Cluster Services
      • multi-cluster services discovery with mcs-api
  • CLI
    • providing a kubectl plugin, which can be installed with kubectl krew install clusternet
    • consistent user experience with kubectl
    • create/update/watch/delete multi-cluster resources
    • interacting with any child clusters the same as local cluster
  • Client-go

Architecture

Clusternet is a lightweight addon that consists of four components, clusternet-agent, clusternet-scheduler, clusternet-controller-manager and clusternet-hub.

Explore the architecture of Clusternet on clusternet.io.

To start using Clusternet

See our documentation on clusternet.io.

The quick start tutorial will walk you through setting up Clusternet locally with kind and deploying applications to multiple clusters.

Try our interactive tutorials that help you understand Clusternet and learn some basic Clusternet features.

If you want to use client-go to interact with Clusternet, we provide a wrapper for easy integration. You can follow demo.go for a quick start.

To use Clusternet APIs and CRDs as a module, please add github.com/clusternet/apis to your go.mod.

Contact

If you've got any questions, please feel free to contact us with following ways:

Contributing & Developing

If you want to get participated and become a contributor to Clusternet, please don't hesitate to refer to our CONTRIBUTING document for details.

A developer guide is ready to help you

  • build binaries for all platforms, such as darwin/amd64, linux/amd64, linux/arm64, etc.;
  • build docker images for multiple platforms, such as linux/amd64, linux/arm64, etc.;

License

FOSSA Status

Directories

Path Synopsis
cmd
examples
pkg
apis/apps/v1alpha1
Package v1alpha1 is the v1alpha1 version of the API.
Package v1alpha1 is the v1alpha1 version of the API.
apis/clusters/v1beta1
Package v1beta1 is the v1beta1 version of the API.
Package v1beta1 is the v1beta1 version of the API.
apis/proxies
Package proxies is the internal version of the API.
Package proxies is the internal version of the API.
apis/proxies/v1alpha1
Package v1alpha1 is the v1alpha1 version of the API.
Package v1alpha1 is the v1alpha1 version of the API.
generated/clientset/versioned
This package has the automatically generated clientset.
This package has the automatically generated clientset.
generated/clientset/versioned/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
generated/clientset/versioned/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
generated/clientset/versioned/typed/apps/v1alpha1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
generated/clientset/versioned/typed/apps/v1alpha1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
generated/clientset/versioned/typed/clusters/v1beta1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
generated/clientset/versioned/typed/clusters/v1beta1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
generated/clientset/versioned/typed/proxies/v1alpha1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
generated/clientset/versioned/typed/proxies/v1alpha1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
hub
scheduler/profile
Package profile holds the definition of a scheduling Profile.
Package profile holds the definition of a scheduling Profile.

Jump to

Keyboard shortcuts

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