Managing your Kubernetes clusters (including public, private, edge, etc) as easily as visiting the Internet

Overview

Clusternet


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


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 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 will help setup network tunnels in a configurable way, when your clusters are running in a VPC network, at the edge, or behind a firewall.

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

  • darwin/amd64 and darwin/arm64;
  • linux/amd64, linux/arm64, linux/ppc64le, linux/s390x, linux/386 and linux/arm;

Architecture

Clusternet is light-weighted that consists of two components, clusternet-agent and clusternet-hub.

clusternet-agent is responsible for

  • auto-registering current cluster to a parent cluster as a child cluster, which is also been called ManagedCluster;
  • reporting heartbeats of current cluster, including Kubernetes version, running platform, healthz/readyz/livez status, etc;
  • setting up a websocket connection that provides full-duplex communication channels over a single TCP connection to parent cluster;

clusternet-hub is responsible for

  • approving cluster registration requests and creating exclusive resources, such as namespaces, serviceaccounts and RBAC rules, for each child cluster;
  • serving as an aggregated apiserver (AA), which is used to serve as a websocket server that maintain multiple active websocket connections from child clusters;
  • providing Kubernstes-styled API to redirect/proxy/upgrade requests to each child cluster;

Note: Since clusternet-hub is running as an AA, please make sure that parent apiserver could visit the clusternet-hub service.

Concepts

For every Kubernetes cluster that wants to be managed, we call it child cluster. The cluster where child clusters are registerring to, we call it parent cluster.

clusternet-agent runs in child cluster, while clusternet-hub runs in parent cluster.

  • ClusterRegistrationRequest is an object that clusternet-agent creates in parent cluster for child cluster registration.
  • ManagedCluster is an object that clusternet-hub creates in parent cluster after approving ClusterRegistrationRequest.

Building

Building Binaries

Clone the repository, and run

# build for linux/amd64 by default
$ make clusternet-agent clusternet-hub

to build binaries clusternet-agent and clusternet-hub for linux/amd64.

Also you could specify other platforms when building, such as,

# build only clusternet-agent for linux/arm64 and darwin/amd64
# use comma to separate multiple platforms
$ PLATFORMS=linux/arm64,darwin/amd64 make clusternet-agent
# below are all the supported platforms
# PLATFORMS=darwin/amd64,darwin/arm64,linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm

All the built binaries will be placed at _output folder.

Building Docker Images

You can also build docker images. Here docker buildx is used to help build multi-arch container images.

If you're running MacOS, please install Docker Desktop and then check the builder,

$ docker buildx ls
NAME/NODE DRIVER/ENDPOINT STATUS  PLATFORMS
default * docker
  default default         running linux/amd64, linux/arm64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6

If you're running Linux, please refer to docker buildx docs on the installation.

Note:

For better docker buildx support, it is recommended to use Ubuntu Focal 20.04 (LTS), Debian Bullseye 11 and CentOS 8.

And install deb/rpm package qemu-user-static as well, such as

apt-get install qemu-user-static

or

yum install qemu-user-static
# build for linux/amd64 by default
# container images for clusternet-agent and clusternet-hub
$ make images

Also you could build container images for other platforms, such as arm64,

$ PLATFORMS=linux/amd64,linux/arm64,linux/ppc64le make images
# below are all the supported platforms
# PLATFORMS=linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm

Getting Started

Deploy Clusternet

You need to deploy clusternet-agent and clusternet-hub in child cluster and parent cluster respectively.

For clusternet-hub

kubectl apply -f deploy/hub

And then create a bootstrap token for clusternet-agent,

# this will create a bootstrap token 07401b.f395accd246ae52d
$ kubectl apply -f manifests/samples

For clusternet-agent

First we need to create a secret, which contains token for cluster registration,

# create namespace clusternet-system if not created
$ kubectl create ns clusternet-system
# here we use the token created above
$ PARENTURL=https://192.168.10.10 REGTOKEN=07401b.f395accd246ae52d envsubst < ./deploy/templates/clusternet_agent_secret.yaml | kubectl apply -f -

The PARENTURL above is the apiserver address of the parent cluster that you want to register to.

$ kubectl apply -f deploy/agent

Check Cluster Registrations

# clsrr is an alias for ClusterRegistrationRequest
$ kubectl get clsrr
NAME                                              CLUSTER-ID                             STATUS     AGE
clusternet-dc91021d-2361-4f6d-a404-7c33b9e01118   dc91021d-2361-4f6d-a404-7c33b9e01118   Approved   3d6h
$ kubectl get clsrr clusternet-dc91021d-2361-4f6d-a404-7c33b9e01118 -o yaml
apiVersion: clusters.clusternet.io/v1beta1
kind: ClusterRegistrationRequest
metadata:
  creationTimestamp: "2021-05-24T08:24:40Z"
  generation: 1
  labels:
    clusters.clusternet.io/cluster-id: dc91021d-2361-4f6d-a404-7c33b9e01118
    clusters.clusternet.io/cluster-name: clusternet-cluster-dzqkw
    clusters.clusternet.io/registered-by: clusternet-agent
  name: clusternet-dc91021d-2361-4f6d-a404-7c33b9e01118
  resourceVersion: "553624"
  uid: 8531ee8a-c66a-439e-bb5a-3adacfe58952
spec:
  clusterId: dc91021d-2361-4f6d-a404-7c33b9e01118
  clusterName: clusternet-cluster-dzqkw
  clusterType: EdgeClusterSelfProvisioned
status:
  caCertificate: REDACTED
  dedicatedNamespace: clusternet-dhxfs
  managedClusterName: clusternet-cluster-dzqkw
  result: Approved
  token: REDACTED

After ClusterRegistrationRequest is approved, the status will be updated with corresponding credentials that can be used to access parent cluster if needed. Those credentials have been set with scoped RBAC rules, see blow two rules for details.

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  annotations:
    clusters.clusternet.io/rbac-autoupdate: "true"
  creationTimestamp: "2021-05-24T08:25:07Z"
  labels:
    clusters.clusternet.io/bootstrapping: rbac-defaults
    clusters.clusternet.io/cluster-id: dc91021d-2361-4f6d-a404-7c33b9e01118
    clusternet.io/created-by: clusternet-hub
  name: clusternet-dc91021d-2361-4f6d-a404-7c33b9e01118
  resourceVersion: "553619"
  uid: 87db2e72-f4c1-4628-9373-1536ed7fd4af
rules:
  - apiGroups:
      - clusters.clusternet.io
    resources:
      - clusterregistrationrequests
    verbs:
      - create
      - get
  - apiGroups:
      - proxies.clusternet.io
    resourceNames:
      - dc91021d-2361-4f6d-a404-7c33b9e01118
    resources:
      - sockets
    verbs:
      - '*'

and

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  annotations:
    clusters.clusternet.io/rbac-autoupdate: "true"
  creationTimestamp: "2021-05-24T08:25:07Z"
  labels:
    clusters.clusternet.io/bootstrapping: rbac-defaults
    clusternet.io/created-by: clusternet-hub
  name: clusternet-managedcluster-role
  namespace: clusternet-dhxfs
  resourceVersion: "553622"
  uid: 7524b743-57f3-4a45-a6cd-ceb3321fe2ff
rules:
  - apiGroups:
      - '*'
    resources:
      - '*'
    verbs:
      - '*'

Check ManagedCluster Status

# mcls is an alias for ManagedCluster
$ kubectl get mcls -A
NAMESPACE          NAME                       CLUSTER-ID                             CLUSTER-TYPE                 KUBERNETES   READYZ   AGE
clusternet-dhxfs   clusternet-cluster-dzqkw   dc91021d-2361-4f6d-a404-7c33b9e01118   EdgeClusterSelfProvisioned   v1.19.10     true     2d20h
$ kubectl get mcls -n clusternet-dhxfs   clusternet-cluster-dzqkw -o yaml
apiVersion: clusters.clusternet.io/v1beta1
kind: ManagedCluster
metadata:
  creationTimestamp: "2021-05-24T08:25:07Z"
  generation: 1
  labels:
    clusters.clusternet.io/cluster-id: dc91021d-2361-4f6d-a404-7c33b9e01118
    clusters.clusternet.io/cluster-name: clusternet-cluster-dzqkw
    clusternet.io/created-by: clusternet-agent
  name: clusternet-cluster-dzqkw
  namespace: clusternet-dhxfs
  resourceVersion: "555091"
  uid: e7e7fb5f-1a00-4e4e-aa02-2e943e37e4ff
spec:
  clusterId: dc91021d-2361-4f6d-a404-7c33b9e01118
  clusterType: EdgeClusterSelfProvisioned
status:
  healthz: true
  k8sVersion: v1.19.10
  lastObservedTime: "2021-05-24T08:58:30Z"
  livez: true
  platform: linux/amd64
  readyz: true

The status of ManagedCluster is updated by clusternet-agent every 3 minutes for default, which can be configured by flag --cluster-status-update-frequency.

Visit ManagedCluster

You can visit all your managed clusters using the kubeConfig of parent cluster. Only a small modification is needed.

# suppose your parent cluster kubeconfig locates at /home/demo/.kube/config
$ kubectl config view --kubeconfig=/home/demo/.kube/config --minify=true --raw=true > ./config-cluster-dc91021d-2361-4f6d-a404-7c33b9e01118
$ export KUBECONFIG=`pwd`/config-cluster-dc91021d-2361-4f6d-a404-7c33b9e01118
$ kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://10.0.0.10:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: [email protected]
current-context: [email protected]
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
# suppose your child cluster running at http://demo1.cluster.net
$ kubectl config set-cluster `kubectl config get-clusters | grep -v NAME` \
  --server=https://10.0.0.10:6443/apis/proxies.clusternet.io/v1alpha1/sockets/dc91021d-2361-4f6d-a404-7c33b9e01118/http/demo1.cluster.net
# or just use the direct path
$ kubectl config set-cluster `kubectl config get-clusters | grep -v NAME` \
  --server=https://10.0.0.10:6443/apis/proxies.clusternet.io/v1alpha1/sockets/dc91021d-2361-4f6d-a404-7c33b9e01118/direct

What you need is to append /apis/proxies.clusternet.io/v1alpha1/sockets/<CLUSTER-ID>/http/<SERVER-URL> or /apis/proxies.clusternet.io/v1alpha1/sockets/<CLUSTER-ID>/direct at the end of original parent cluster server address.

  • CLUSTER-ID is a UUID for your child cluster, which is auto-populated by clusternet-agent, such as dc91021d-2361-4f6d-a404-7c33b9e01118. You could get this UUID from objects ClusterRegistrationRequest, ManagedCluster, etc. Also this UUID is labeled with key clusters.clusternet.io/cluster-id.
  • SERVER-URL is the apiserver address of your child cluster, it could be localhost, 127.0.0.1 and etc, only if clusternet-agent could access.

Currently Clusternet only support http scheme. If your child clusters are running with https scheme, you could run a local proxy instead, for example,

kubectl proxy --address='10.212.0.7' --accept-hosts='^*$'

Please replace 10.212.0.7 with your real local IP address.

Then you can visit child cluster as usual.

Issues
  • fix proxy url join error

    fix proxy url join error

    What type of PR is this?

    kind/bug

    What this PR does / why we need it:

    Which issue(s) this PR fixes:

    Fixes #

    Special notes for your reviewer:

    kind/bug 
    opened by dixudx 1
  • helm uses sockets/proxy to connect to child clusters if necessary

    helm uses sockets/proxy to connect to child clusters if necessary

    What type of PR is this?

    kind/bug

    What this PR does / why we need it:

    as the title said

    Which issue(s) this PR fixes:

    Depends on #26

    Special notes for your reviewer:

    kind/bug 
    opened by dixudx 1
  • fix direct shortpath url error

    fix direct shortpath url error

    What type of PR is this?

    kind/bug

    What this PR does / why we need it:

    as the title said

    Which issue(s) this PR fixes:

    Fixes #

    Special notes for your reviewer:

    kind/bug 
    opened by dixudx 1
  • clusternet-agent need edge-system

    clusternet-agent need edge-system

    What happened:

    When I deploy clusternet-agent, the container logs error:

    E0626 13:41:08.159174       1 leaderelection.go:329] error initially creating leader election record: namespaces "edge-system" not found
    

    What you expected to happen:

    No error log, no need namespace edge-system

    How to reproduce it (as minimally and precisely as possible):

    With docker image: ghcr.io/clusternet/clusternet-agent :v0.1.0, you will reproduce it.

    Because I haven't find any code about edge-system, and I find there was a default namespace named edge-system [#4 ].

    Maybe we need update the image in ghcr.io.

    kind/bug 
    opened by TomatoAres 1
  • [compatility] clusternet-agent run error in k8s 1.20

    [compatility] clusternet-agent run error in k8s 1.20

    What happened:

    Error log:

    #  kubectl  logs -n clusternet-system -l app=clusternet-agent
    ...
    E0627 07:00:04.512265       1 leaderelection.go:325] error retrieving resource lock edge-system/self-cluster: leases.coordination.k8s.io "self-cluster" is forbidden: User "system:serviceaccount:clusternet-system:clusternet-agent" cannot get resource "leases" in API group "coordination.k8s.io" in the namespace "edge-system"
    I0627 07:00:04.512287       1 leaderelection.go:248] failed to acquire lease edge-system/self-cluster
    E0627 07:00:11.405519       1 leaderelection.go:325] error retrieving resource lock edge-system/self-cluster: leases.coordination.k8s.io "self-cluster" is forbidden: User "system:serviceaccount:clusternet-system:clusternet-agent" cannot get resource "leases" in API group "coordination.k8s.io" in the namespace "edge-system"
    I0627 07:00:11.405572       1 leaderelection.go:248] failed to acquire lease edge-system/self-cluster
    
    [[email protected] ~]# kubectl api-resources | grep lease
    leases                                         coordination.k8s.io/v1                 true         Lease
    

    What you expected to happen:

    Run correctly in k8s 1.20 and newer

    How to reproduce it (as minimally and precisely as possible):

    Deploy the clusternet-agent in k8s 1.20

    Anything else we need to know?:

    The lease resources version is changed in 1.20

    # in k8s 1.20.0
    # kubectl api-resources | grep lease
    leases                                         coordination.k8s.io/v1                 true         Lease
    
    # in k8s 1.19.7
    # kubectl api-resources | grep lease
    leases                                               coordination.k8s.io            true         Lease
    

    Environment:

    • Clusternet version: v0.1.0
    kind/bug 
    opened by TomatoAres 1
  • fix race condition when using secret

    fix race condition when using secret

    What type of PR is this?

    kind/bug

    What this PR does / why we need it:

    Fix race condition when using secret

    Which issue(s) this PR fixes:

    Fixes #

    Special notes for your reviewer:

    kind/bug 
    opened by dixudx 1
  • optimize subscription handler logic and fix bugs

    optimize subscription handler logic and fix bugs

    What type of PR is this?

    kind/bug

    What this PR does / why we need it:

    • rename Announcement apis to Subscription
    • optimize subscription handler logic and fix bugs

    Which issue(s) this PR fixes:

    Fixes #

    Special notes for your reviewer:

    kind/bug 
    opened by dixudx 0
  • add tests for getExtraFromHeaders

    add tests for getExtraFromHeaders

    What type of PR is this?

    kind/tests

    What this PR does / why we need it:

    add tests for getExtraFromHeaders

    Which issue(s) this PR fixes:

    Fixes #

    Special notes for your reviewer:

    kind/tests 
    opened by dixudx 0
  • add clusternet architecture

    add clusternet architecture

    What type of PR is this?

    kind/documentation

    What this PR does / why we need it:

    add clusternet architecture

    Which issue(s) this PR fixes:

    Fixes #

    Special notes for your reviewer:

    kind/documentation 
    opened by dixudx 0
  • use socket transport wisely

    use socket transport wisely

    What type of PR is this?

    kind/bug

    What this PR does / why we need it:

    Use socket transport only when ManagedCluster.Status.UseSocket is true

    Which issue(s) this PR fixes:

    Fixes #

    Special notes for your reviewer:

    kind/bug 
    opened by dixudx 0
  • add new apps controllers and support subscription manifest

    add new apps controllers and support subscription manifest

    What type of PR is this?

    kind/feature

    What this PR does / why we need it:

    support subscription to refer a manifest and create a base object recording to the manifest

    Which issue(s) this PR fixes:

    Fixes #

    Special notes for your reviewer:

    opened by qmhu 0
  • update deployment yaml with new versions and features

    update deployment yaml with new versions and features

    What type of PR is this?

    kind/change

    What this PR does / why we need it:

    update deployment yaml files with new images bumped and new feature gates added

    Which issue(s) this PR fixes:

    Fixes #

    Special notes for your reviewer:

    kind/change kind/feature 
    opened by dixudx 0
  • add fed/v1alpha1 api

    add fed/v1alpha1 api

    What type of PR is this?

    kind/feature

    What this PR does / why we need it:

    Which issue(s) this PR fixes:

    Fixes #

    Special notes for your reviewer:

    kind/feature 
    opened by dixudx 0
  • new apps api Localization/Globalization/Base/Manifest

    new apps api Localization/Globalization/Base/Manifest

    What type of PR is this?

    kind/feature

    What this PR does / why we need it:

    add new type to apps/v1alpha1,

    • Localization, Globalization, and Base
    • Manifest

    Which issue(s) this PR fixes:

    Fixes #

    Special notes for your reviewer:

    kind/apis kind/feature 
    opened by dixudx 0
Releases(v0.2.0)
  • v0.2.0(Jul 9, 2021)

    :tada: :tada: :tada:Second Release! v0.2.0 !

    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 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.

    Changes Since v0.1.0

    • Bumps default namespace from edge-system to clusternet-system (#4)
    • Allows using a short-path URL handler for direct child cluster visiting (#3, #18)
    • Adds subresource sockets/proxy (#18)
    • Supports visiting child clusters with RBAC, including serviceaccount tokens, tls certificates (#19)
    • Introduces new api group apps/v1alpha1, which includes HelmChart, Subscription, Description, HelmRelease (#13)
    • Add a new feature gate Deployer to allow clusternet-hub working as a deployer to distribute kinds of resources to a group of clusters (#13)
    • Supports deploying helm charts to multiple clusters (#13)
    • Introduce cluster sync mode, Push, Pull, and Dual (#12)
    • Add a new feature gate AppPusher to fasten seat belt of child clusters (#11). With regard to security of child clusters, deploying applications directly from parent cluster should be limited. A more configurable way is provided here.

    Downloading Clusternet v0.2.0

    The common platform binaries are here:

    | OS Arch | Checksum | | -------- | ----------- | | MacOS amd64 | 633c8b52f4dd67a7a3c4f2be0ecbd4665d3f8c455f76e8a6038ecb6b6e24069b | | MacOS arm64 | 08df33a46bb593c3a5bcf2e23eb2258ed75c8b2167a94666185d4566c05a2b48 | | Linux i386 | f3c78a884b187c0f49dc7f5a04b378b305ef8b04ad9785ee3fac3711d1bee878 | | Linux amd64 | 03979f5653b9fc89a7aa2a157de653d2121922d8ade4f9df9be2779a53d2db51 | | Linux arm | 689423d9e97babcba31d9b609dd46b456c41a9e98a086647583ea8e64f149c55 | | Linux arm64 | 58537016a150b742e3270bcf3bedc93520caae87456a541eecbbca978b9c402c | | Linux ppc64le | 4421ec3a3cb2dd4e7c6e3432ab0280ec87357f7170ab4bd671ad30c4387feb72 | | Linux s390x | a8fabd9dd424f337714f27140e76309acbaa8c39107071a52536de57271d4dc8 |

    Source code(tar.gz)
    Source code(zip)
    clusternet-v0.2.0-darwin-amd64.tar.gz(49.46 MB)
    clusternet-v0.2.0-darwin-arm64.tar.gz(48.41 MB)
    clusternet-v0.2.0-linux-386.tar.gz(50.56 MB)
    clusternet-v0.2.0-linux-amd64.tar.gz(51.34 MB)
    clusternet-v0.2.0-linux-arm.tar.gz(47.23 MB)
    clusternet-v0.2.0-linux-arm64.tar.gz(47.77 MB)
    clusternet-v0.2.0-linux-ppc64le.tar.gz(46.91 MB)
    clusternet-v0.2.0-linux-s390x.tar.gz(51.50 MB)
  • v0.1.0(Jun 8, 2021)

    ⚡ ⚡ ⚡ First Release!

    This is the first release of Clusternet, which is aimed to help manage multiple Kubernetes clusters (including public, private, edge, etc) as easily as visiting the Internet.


    What's In

    Clusternet consists of two components, clusternet-agent and clusternet-hub.

    And Clusternet is multiple platforms supported, including linux/amd64, linux/arm64, linux/s390x, etc.

    clusternet-agent: runing at each child Kubernetes cluster

    • Automatically registers current cluster to a parent cluster as a child cluster
    • Reports heartbeats of current cluster, including Kubernetes version, running platform, healthz/readyz/livez status, etc
    • Sets up a websocket connection with clusternet-hub in the parent cluster to provide full-duplex communication channels over a single TCP connection

    clusternet-hub: running at the parent Kubernetes cluster

    • Runs as an Aggregated Apiserver (AA) that maintains multiple active WebSocket connections between child clusters
    • Approves registration requests from child clusters
    • Creates exclusive set of resources for each child cluster, such as namespaces, service accounts and RBAC rules
    • Proxies all Kubernstes-styled APIs to targeted child cluster
    • Allows to manage all child clusters (running in private cloud, at the edge, etc) with KubeConfig

    Downloading Clusternet v0.1.0

    The common platform binaries are here:

    | OS Arch | Checksum | | -------- | ----------- | | MacOS amd64 | 1594051bf314760f4e24e1aa5724ade82caff19d36be36b9ccfe071e10b29a87 | | MacOS arm64 | 6eb331b649e4e45171038f28227d217d40a9f5244067b9b170796b970139c476 | | Linux i386 | 06ee6a40227bfe6b560078da16d10f89af910fba5aaad3998c2025782412bcef | | Linux amd64 | 45add7008e56e836e27ef8caa66f24c881bf79714fd57238caec9b1490e17d49 | | Linux arm | 7e7f327ab58cfdc180804d136af76dd951bbe8b98741ad687ff9099092e16405 | | Linux arm64 | 2e4708f52e8750294b985e775820cf28b1541512ca80f41aa1900d8ff5851474 | | Linux ppc64le | 610e0301b7eebaa3bc41e842e898fc5ba21c02c823879bc3d4c3d107e71b0a90 | | Linux s390x | c46ea0c3601ed1de260a5cbcc2b6b0526964c8c862d19398b36a8f0fd24b72df |

    Source code(tar.gz)
    Source code(zip)
    clusternet-v0.1.0-darwin-amd64.tar.gz(42.85 MB)
    clusternet-v0.1.0-darwin-arm64.tar.gz(40.51 MB)
    clusternet-v0.1.0-linux-386.tar.gz(42.56 MB)
    clusternet-v0.1.0-linux-amd64.tar.gz(43.08 MB)
    clusternet-v0.1.0-linux-arm.tar.gz(39.52 MB)
    clusternet-v0.1.0-linux-arm64.tar.gz(39.98 MB)
    clusternet-v0.1.0-linux-ppc64le.tar.gz(39.21 MB)
    clusternet-v0.1.0-linux-s390x.tar.gz(43.02 MB)
Owner
Clusternet
Clusternet
Clusternet
Managing your Kubernetes clusters (including public, private, edge, etc) as easily as visiting the Internet

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

Clusternet 69 Jul 23, 2021
Simplified network and services for edge applications

English | 简体中文 EdgeMesh Introduction EdgeMesh is a part of KubeEdge, and provides a simple network solution for the inter-communications between servi

KubeEdge 30 Jul 11, 2021
An operator for managing ephemeral clusters in GKE

Test Cluster Operator for GKE This operator provides an API-driven cluster provisioning for integration and performance testing of software that integ

Isovalent 28 Mar 19, 2021
Enterprise-grade container platform tailored for multicloud and multi-cluster management

KubeSphere Container Platform What is KubeSphere English | 中文 KubeSphere is a distributed operating system providing cloud native stack with Kubernete

KubeSphere 6.2k Jul 27, 2021
🐶 Kubernetes CLI To Manage Your Clusters In Style!

K9s - Kubernetes CLI To Manage Your Clusters In Style! K9s provides a terminal UI to interact with your Kubernetes clusters. The aim of this project i

Fernand Galiana 12.8k Jul 21, 2021
Lightweight Kubernetes

K3s - Lightweight Kubernetes Lightweight Kubernetes. Production ready, easy to install, half the memory, all in a binary less than 100 MB. Great for:

null 17.3k Jul 23, 2021
👀 A Kubernetes cluster resource sanitizer

Popeye - A Kubernetes Cluster Sanitizer Popeye is a utility that scans live Kubernetes cluster and reports potential issues with deployed resources an

Fernand Galiana 3k Jul 25, 2021
A Golang based high performance, scalable and distributed workflow framework

Go-Flow A Golang based high performance, scalable and distributed workflow framework It allows to programmatically author distributed workflow as Dire

Vanu 394 Jul 22, 2021
Production-Grade Container Scheduling and Management

Kubernetes (K8s) Kubernetes, also known as K8s, is an open source system for managing containerized applications across multiple hosts. It provides ba

Kubernetes 79.2k Jul 20, 2021
Kilo is a multi-cloud network overlay built on WireGuard and designed for Kubernetes (k8s + wg = kg)

Kilo Kilo is a multi-cloud network overlay built on WireGuard and designed for Kubernetes. Overview Kilo connects nodes in a cluster by providing an e

Lucas Servén Marín 981 Jul 21, 2021
GitHub中文排行榜,帮助你发现高分优秀中文项目、更高效地吸收国人的优秀经验成果;榜单每周更新一次,敬请关注!

榜单设立目的 ???? GitHub中文排行榜,帮助你发现高分优秀中文项目; 各位开发者伙伴可以更高效地吸收国人的优秀经验、成果; 中文项目只能满足阶段性的需求,想要有进一步提升,还请多花时间学习高分神级英文项目; 榜单设立范围 设立1个总榜(所有语言项目汇总排名)、18个分榜(单个语言项目排名);

kon9chunkit 36.7k Jul 25, 2021
k0s - Zero Friction Kubernetes

k0s - Zero Friction Kubernetes k0s is an all-inclusive Kubernetes distribution with all the required bells and whistles preconfigured to make building

k0s - Kubernetes distribution - OSS Project 3.8k Jul 22, 2021
kubequery is a Osquery extension that provides SQL based analytics for Kubernetes clusters

kubequery powered by Osquery kubequery is a Osquery extension that provides SQL based analytics for Kubernetes clusters kubequery will be packaged as

Uptycs Inc 47 Jul 13, 2021
Not another markup language. Framework for replacing Kubernetes YAML with Go.

Not another markup language. Replace Kubernetes YAML with raw Go! Say so long ?? to YAML and start using the Go ?? programming language to represent a

Kris Nóva 710 Jul 17, 2021