An edge-native container management system for edge computing

Overview

English | 简体中文

SuperEdge

What is SuperEdge?

SuperEdge is an open source container management system for edge computing to manage compute resources and container applications in multiple edge regions. These resources and applications, in the current approach, are managed as one single Kubernetes cluster. A native Kubernetes cluster can be easily converted to a SuperEdge cluster.

SuperEdge has the following characteristics:

  • Kubernetes-native: SuperEdge extends the powerful container orchestration and scheduling capabilities of Kubernetes to the edge. It makes nonintrusive enhancements to Kubernetes and is fully compatible with all Kubernetes APIs and resources. Kubernetes users can leverage SuperEdge easily for edge environments with minimal learning.
  • Edge autonomy: SuperEdge provides L3 edge autonomy. When the network connection between the edge and the cloud is unstable, or the edge node is offline, the node can still work independently. This eliminates the negative impact of unreliable network.
  • Distributed node health monitoring: SuperEdge provides edge-side health monitoring capabilities. SuperEdge can continue to monitor the processes on the edge side and collect health information for faster and more accurate problem discovery and reporting. In addition, its distributed design can provide multi-region monitoring and management.
  • Built-in edge orchestration capability: SuperEdge supports automatic deployment of multi-regional microservices. Edge-side services are closed-looped, and it effectively reduces the operational overhead and improves the fault tolerance and availability of the system.
  • Network tunneling: SuperEdge ensures that Kubernetes nodes can operate under different network situations. It supports network tunnelling using TCP, HTTP and HTTPS.

SuperEdge was initiated by the following companies: Tencent, Intel, VMware, Huya, Cambricon, Captialonline and Meituan.

Architecture

Cloud components:

  • tunnel-cloud: Maintains a persistent network connection to tunnel-edge services. Supports TCP/HTTP/HTTPS network proxies.
  • application-grid controller: A Kubernetes CRD controller as part of ServiceGroup. It manages DeploymentGrids and ServiceGrids CRDs and control applications and network traffic on edge worker nodes.
  • edge- admission: Assists Kubernetes controllers by providing real-time health check status from edge-health services distributed on all edge worker nodes.

Edge components:

  • lite-apiserver: Lightweight kube-apiserver for edge autonomy. It caches and proxies edge components' requests and critical events to cloud kube-apiserver.
  • edge-health: Monitors the health status of edge nodes in the same edge region.
  • tunnel-edge: Maintains persistent connection to tunnel-cloud to retrieve API requests to the controllers on the edge.
  • application-grid wrapper: Managed by application-grid controller to provide independent internal network space for services within the same ServiceGrid.

Quickstart Guide

For installation, deployment, and administration, see our Tutorial.

Contact

For any question or support, feel free to contact us via:

Contributing

Welcome to contribute and improve SuperEdge

License

Apache License 2.0

Issues
  • superedge部署--编译环境

    superedge部署--编译环境

    环境是kubernetes V1.16.15 docker-ce:18.09.9 golang:1.15.5 请教一下:执行下面命令报错 [[email protected] ~]# kubectl apply -f tunnel-coredns.yaml error: error parsing tunnel-coredns.yaml: error converting YAML to JSON: yaml: line 90: mapping values are not allowed in this context 是不是需要编译环境,编译的二进制文件tar.gz在哪里获取 谢谢!

    kind/question 
    opened by hongfei-cloud 7
  • Use edgeadm to install superedge v0.6.0

    Use edgeadm to install superedge v0.6.0

    I use the edgeadm to install the superedge v0.6.0. However, it fails. Part of the logs is as follows

    I1104 12:53:30.737691   34938 round_trippers.go:445] POST https://192.168.100.201:6443/apis/superedge.io/v1/namespaces/edge-system/deploymentgrids 404 Not Found in 0 milliseconds
    I1104 12:53:30.737779   34938 deploy_edge_coredns.go:82] Waiting deploy edge-coredns DeploymentGrid, system message: the server could not find the requested resource (post deploymentgrids.superedge.io)
    I1104 12:53:33.740334   34938 round_trippers.go:445] POST https://192.168.100.201:6443/apis/superedge.io/v1/namespaces/edge-system/deploymentgrids 404 Not Found in 1 milliseconds
    I1104 12:53:33.740435   34938 deploy_edge_coredns.go:82] Waiting deploy edge-coredns DeploymentGrid, system message: the server could not find the requested resource (post deploymentgrids.superedge.io)
    

    I want to know what should I do? Thanks.

    kind/question 
    opened by littletiger123 6
  • [Question] /tmp Permission changed after running edgeadm addon edge-apps

    [Question] /tmp Permission changed after running edgeadm addon edge-apps

    ENV:

    lsb_release -a :

    Distributor ID:	Ubuntu
    Description:	Ubuntu 18.04.6 LTS
    Release:	18.04
    Codename:	bionic
    

    kubectl version:

    Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.12", GitCommit:"4bf2e32bb2b9fdeea19ff7cdc1fb51fb295ec407", GitTreeState:"clean", BuildDate:"2021-10-27T17:12:26Z", GoVersion:"go1.15.15", Compiler:"gc", Platform:"linux/amd64"}
    Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.15", GitCommit:"8f1e5bf0b9729a899b8df86249b56e2c74aebc55", GitTreeState:"clean", BuildDate:"2022-01-19T17:23:01Z", GoVersion:"go1.15.15", Compiler:"gc", Platform:"linux/amd64"}
    

    Process:

    1. Only single k8s master running on my laptop, no other node;
    2. Install calico as cni;
    3. Running sudo edgeadm addon edge-apps --master-public-addr doujohnerk8smaster.com on master;

    Result:

    To run ls -lad /tmp , its permissions seem be changed: drwxrw_rwt 3 root root 4096 Feb 14 11:42 /tmp, which leads to bash: cannot create temp file for here-document: Permission denied if I tried to autocomplete my command. And I have to manually add umask chmod 1777 /tmp to make it work;

    kind/question 
    opened by mhh12121 5
  • [Question] CNCF SIG-Runtime Discussion/Presentation?

    [Question] CNCF SIG-Runtime Discussion/Presentation?

    Hello SuperEdge team,

    I'm one of the co-chairs of the CNCF SIG-Runtime, I'm reaching out and think it would be great for you to present/discuss the project at one of our meetings. An overview of the project would be great.

    Let me know if this something you'd be interested in doing. If yes, please feel free to add it to our agenda or reach out to me (raravena80 at gmail.com)

    Thanks!

    kind/question 
    opened by raravena80 4
  • Module nf_conntrack_ipv4 not found

    Module nf_conntrack_ipv4 not found

    What happened:

    use docker(kindest/node:v1.21.1) start by kind as edge node to join a superEdge k8s cluster run: ./edgeadm join ...

    1. get the error: E1117 14:39:31.802393 3427 init_node.go:47] Run init node shell: /tmp/edgeadm/edge-install/script/init-node.sh, error: exit status 126

    2. add set -x to init-node.sh, rerun the script and get the output:

    ++ modprobe -- nf_conntrack_ipv4
    modprobe: FATAL: Module nf_conntrack_ipv4 not found in directory /lib/modules/5.10.47-linuxkit
    
    1. check the code and find: modprobe -- nf_conntrack_ipv4

    The reason:

    after some dig, and found out nf_conntrack_ipv4 is updated to nf_conntrack since the kernel 4.19 and only kube-proxy v1.13 is strong required this

    and superEdge supported kube-proxy is higher than v1.13 (v1.18.2?) so, can we remove this?

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

    1. kind create cluster (use config to create more than one worker node)
    2. docker exec kind-worker, run ./edgeadm join
    kind/bug 
    opened by adamzhoul 3
  • Addon edgexfoundry to edge cluster

    Addon edgexfoundry to edge cluster

    What type of PR is this? Adding function

    What this PR does: Add the function to install the components of edgexfoundry to the edge cluster

    Which issue(s) this PR fixes:

    Fixes #

    Special notes for your reviewer: Edgexfoundry is a useful tool to deal with the issue of manging the things on the edge of the cloud. Installing the components of edgexfoundry easily can help users to use the edgexfoundry to do the task without worring about how to download and install the components on the edge clusters. So we preset the yaml file of the components of edgexfoundry in the project and create or update the yaml file to install when the command 'edgeadm addon edgex' is called. And they can be uninstall by 'edgeadm detach edgex'. Each command supports to install or uninstall specific components of edgex with flags. And it is proved to be able to run correctly.

    documentation approved lgtm size/XXL 
    opened by OmigaXm 3
  • hope to join both edge and no-edge nodes

    hope to join both edge and no-edge nodes

    What would you like to be added/modified: edgeadm init集群和join节点完全保留了kubeadm init/join原有的参数和流程,只是自动了初始化节点和安装容器运行时,可以用edgeadm --enable-edge=fasle参数来一键化安装原生Kubernetes集群, 也可以用edgeadm --enable-edge=true参数一键化来安装边缘Kubernetes集群。

    但目前只能加入同一类节点, 不能同时加入两类节点。

    Why is this needed: 我们在搭建superedge的演示环境,需要尽可能贴近真实的环境,就是中心云里有多个普通节点,同时有多个边缘节点。这样就可以测试各种场景,包括云边通讯,边边通讯等。

    good first issue help wanted kind/feature plan 
    opened by haotaogeng 3
  • [Question] cni config uninitialized

    [Question] cni config uninitialized

    Lease:
      HolderIdentity:  ubuntu-xenial
      AcquireTime:     <unset>
      RenewTime:       Fri, 25 Jun 2021 00:55:32 +0000
    Conditions:
      Type             Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
      ----             ------  -----------------                 ------------------                ------                       -------
      MemoryPressure   False   Fri, 25 Jun 2021 00:52:33 +0000   Thu, 24 Jun 2021 23:57:01 +0000   KubeletHasSufficientMemory   kubelet has sufficient memory available
      DiskPressure     False   Fri, 25 Jun 2021 00:52:33 +0000   Thu, 24 Jun 2021 23:57:01 +0000   KubeletHasNoDiskPressure     kubelet has no disk pressure
      PIDPressure      False   Fri, 25 Jun 2021 00:52:33 +0000   Thu, 24 Jun 2021 23:57:01 +0000   KubeletHasSufficientPID      kubelet has sufficient PID available
      Ready            False   Fri, 25 Jun 2021 00:52:33 +0000   Thu, 24 Jun 2021 23:57:01 +0000   KubeletNotReady              runtime network not ready: NetworkReady=false **reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized**
    Addresses:
      InternalIP:  10.0.2.15
      Hostname:    ubuntu-xenial
    
    
    kind/question 
    opened by meua 3
  • edgeadm: fix the wrong tip

    edgeadm: fix the wrong tip

    What type of PR is this?

    Fixes

    What this PR does:

    The original tips of nil kubeconfig "kubeconfig nil, Please appoint --kubeconfig, KUBECONFIG or ~/kube/config" should be "kubeconfig nil, Please appoint --kubeconfig, KUBECONFIG or ~/.kube/config"

    Which issue(s) this PR fixes:

    Fixes #

    Special notes for your reviewer:

    opened by RinChanNOWWW 3
  • edgeadm: add an edgeadm change label subcommand to add a label to the node

    edgeadm: add an edgeadm change label subcommand to add a label to the node

    What type of PR is this?

    What this PR does:

    At present, the command of edgeadm change will change all kubeadm kubernetes nodes to edge nodes, but I just want to change some of my nodes to edge nodes. add an edgeadm change label subcommand to add a label to the node to be change.

    Which issue(s) this PR fixes:

    Fixes #57

    Special notes for your reviewer:

    opened by wenhuwang 3
  • Add statefulsetgrid docs

    Add statefulsetgrid docs

    What type of PR is this? This PR acts as docs addition of release-0.2.

    What this PR does: This PR add StatefulSetGrid relevant docs.

    Which issue(s) this PR fixes:

    Fixes #26

    opened by duyanghao 3
  • 在已有k8s集群上部署superedge 报错 panic: runtime error: invalid memory address or nil pointer dereference

    在已有k8s集群上部署superedge 报错 panic: runtime error: invalid memory address or nil pointer dereference

    What happened: 在已有k8s环境上部署报错 panic: runtime error: invalid memory address or nil pointer dereference

    What you expected to happen:

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

    Anything else we need to know?:

    Environment:

    • SuperEdge version: v0.7
    • Kubernetes version (use kubectl version): v1.20.7
    • OS (e.g. cat /etc/os-release): centos7.9
    • Kernel (e.g. uname -a): 5.18.5-1.el7.elrepo.x86_64
    • Hardware configuration (e.g. lscpu) 2c/4G/160G
    • Go Version (e.g. go version)
    • Others:
    kind/bug 
    opened by baizipo 2
  • Enhance superedge to support kube-proxy's ipvs mode

    Enhance superedge to support kube-proxy's ipvs mode

    What would you like to be added/modified: Now the version of superedge doesn't support ipvs. Mainly there are 2 problems:

    1. The wrapper may have some malfunction dealing with ipvs, so when ipvs enabled, the incluster function will be out of work
    2. When enable ipvs, the lite-apiserver endpoint 127.0.0.1:xxxx was not working Why is this needed: We are planing to fix these 2 issues, according to #268 #222
    kind/feature plan 
    opened by dodiadodia 0
  • superedge supports k8s version 1.22

    superedge supports k8s version 1.22

    What type of PR is this? kind/feature What this PR does:

    1. superedge supports k8s version 1.22
    2. Deploy the latest version of tunnel using deploymentgrid
    kind/feature 
    opened by 00pf00 0
  • upgrade CNI version in installing package

    upgrade CNI version in installing package

    What would you like to be added/modified:

    upgrade cni version to 1.0,(flannel plugin is separated after 1.0 )

    Why is this needed:

    current version of cni failed on some arm platform

    kind/feature 
    opened by jasine 0
Releases(v0.7.0)
Owner
SuperEdge
An edge computing working group
SuperEdge
cloud-native local storage management system

Open-Local是由多个组件构成的本地磁盘管理系统,目标是解决当前 Kubernetes 本地存储能力缺失问题。通过Open-Local,使用本地存储会像集中式存储一样简单。

null 211 Jun 26, 2022
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 89.5k Jun 23, 2022
Container Storage Interface driver for Synology NAS

Synology CSI Driver for Kubernetes The official Container Storage Interface driver for Synology NAS. Container Images & Kubernetes Compatibility Drive

Synology Open Source 138 Jun 20, 2022
Cloud-native way to provide elastic Jupyter Notebook services on Kubernetes

elastic-jupyter-operator: Elastic Jupyter on Kubernetes Kubernetes 原生的弹性 Jupyter 即服务 介绍 为用户按需提供弹性的 Jupyter Notebook 服务。elastic-jupyter-operator 提供以下特性

TKEStack 118 Jun 17, 2022
A Cloud Native Buildpack for Go

The Go Paketo Buildpack provides a set of collaborating buildpacks that enable the building of a Go-based application.

Paketo Buildpacks 53 Jun 6, 2022
Elkeid is a Cloud-Native Host-Based Intrusion Detection solution project to provide next-generation Threat Detection and Behavior Audition with modern architecture.

Elkeid is a Cloud-Native Host-Based Intrusion Detection solution project to provide next-generation Threat Detection and Behavior Audition with modern architecture.

Bytedance Inc. 1.2k Jun 23, 2022
Nocalhost is Cloud Native Dev Environment.

Most productive way to build cloud-native applications. Nocalhost The term Nocalhost originates from No Local, which is a cloud-native development too

Nocalhost 1.3k Jun 30, 2022
Cloudpods is a cloud-native open source unified multi/hybrid-cloud platform developed with Golang

Cloudpods is a cloud-native open source unified multi/hybrid-cloud platform developed with Golang, i.e. Cloudpods is a cloud on clouds. Cloudpods is able to manage not only on-premise KVM/baremetals, but also resources from many cloud accounts across many cloud providers. It hides the differences of underlying cloud providers and exposes one set of APIs that allow programatically interacting with these many clouds.

null 1 Jan 11, 2022
A Cloud Native Buildpack that contributes SDKMAN and uses it to install dependencies like the Java Virtual Machine

gcr.io/paketo-buildpacks/sdkman A Cloud Native Buildpack that contributes SDKMAN and uses it to install dependencies like the Java Virtual Machine. Be

Daniel Mikusa 1 Jan 8, 2022
A Cloud Native Buildpack that provides the Open Liberty runtime

gcr.io/paketo-buildpacks/open-liberty The Paketo Open Liberty Buildpack is a Cloud Native Buildpack that contributes Open Liberty for Java EE support.

Paketo Buildpacks 4 May 23, 2022
cloneMAP: cloud-native Multi-Agent Platform

cloneMAP: cloud-native Multi-Agent Platform cloneMAP is a multi-agent platform (MAP) that is designed to run in a cloud environment based on Kubernete

RWTH Aachen University, Institute for Automation of Complex Power Systems 3 Apr 24, 2022
A Cloud Native Buildpack that contributes the Syft CLI which can be used to generate SBoM information

gcr.io/paketo-buildpacks/syft The Paketo Syft Buildpack is a Cloud Native Buildpack that contributes the Syft CLI which can be used to generate SBoM i

Paketo Buildpacks 1 Apr 27, 2022
Next generation distributed, event-driven, parallel config management!

mgmt: next generation config management! About: Mgmt is a real-time automation tool. It is familiar to existing configuration management software, but

James 2.9k Jun 25, 2022
JuiceFS is a distributed POSIX file system built on top of Redis and S3.

JuiceFS is an open-source POSIX file system built on top of Redis and object storage (e.g. Amazon S3), designed and optimized for cloud native environ

Juicedata, Inc 5.5k Jun 24, 2022
a high-performance, POSIX-ish Amazon S3 file system written in Go

Goofys allows you to mount an S3 bucket as a filey system.

Ka-Hing Cheung 4.2k Jun 24, 2022
GoDrive: A cloud storage system similar to Dropbox or Google Drive, with resilient

Cloud Storage Service Author: Marisa Tania, Ryan Tjakrakartadinata Professor: Matthew Malensek See project spec here: https://www.cs.usfca.edu/~mmalen

Ryan G Tjakrakartadinata 2 Dec 7, 2021
Edge Orchestration project is to implement distributed computing between Docker Container enabled devices.

Edge Orchestration Introduction The main purpose of Edge Orchestration project is to implement distributed computing between Docker Container enabled

null 1 Dec 17, 2021
Kubernetes Native Edge Computing Framework (project under CNCF)

KubeEdge KubeEdge is built upon Kubernetes and extends native containerized application orchestration and device management to hosts at the Edge. It c

KubeEdge 5.1k Jun 26, 2022
🦖 Streaming-Serverless Framework for Low-latency Edge Computing applications, running atop QUIC protocol, engaging 5G technology.

YoMo YoMo is an open-source Streaming Serverless Framework for building Low-latency Edge Computing applications. Built atop QUIC Transport Protocol an

YoMo 1.1k Jun 22, 2022
a small form factor OpenShift/Kubernetes optimized for edge computing

Microshift Microshift is OpenShift1 Kubernetes in a small form factor and optimized for edge computing. Edge devices deployed out in the field pose ve

Red Hat Emerging Technologies 340 Jun 24, 2022
Microshift is a research project that is exploring how OpenShift1 Kubernetes can be optimized for small form factor and edge computing.

Microshift is a research project that is exploring how OpenShift1 Kubernetes can be optimized for small form factor and edge computing.

Oleg Silkin 0 Nov 1, 2021
Provide cloud-edge message synergy solutions for companies and individuals.the cloud-edge message system based on NATS.

Swarm This project is a cloud-edge synergy solution based on NATS. quikly deploy cloud deploy on k8s #pull the project. git clone https://github.com/g

null 1 Jan 11, 2022
A serverless cluster computing system for the Go programming language

Bigslice Bigslice is a serverless cluster data processing system for Go. Bigslice exposes composable API that lets the user express data processing ta

GRAIL 500 Jun 24, 2022
A serverless cluster computing system for the Go programming language

Bigslice Bigslice is a serverless cluster data processing system for Go. Bigslice exposes composable API that lets the user express data processing ta

GRAIL 500 Jun 24, 2022
PolarDB Cluster Manager is the cluster management component of PolarDB for PostgreSQL, responsible for topology management, high availability, configuration management, and plugin extensions.

What is PolarDB Cluster Manager PolarDB Cluster Manager is the cluster management component of PolarDB for PostgreSQL, responsible for topology manage

null 8 Dec 15, 2021
cloud-native local storage management system

Open-Local是由多个组件构成的本地磁盘管理系统,目标是解决当前 Kubernetes 本地存储能力缺失问题。通过Open-Local,使用本地存储会像集中式存储一样简单。

null 211 Jun 26, 2022
MOSN is a cloud native proxy for edge or service mesh. https://mosn.io

中文 MOSN is a network proxy written in Golang. It can be used as a cloud-native network data plane, providing services with the following proxy functio

MOSN 3.8k Jun 22, 2022
MatrixOne is a planet scale, cloud-edge native big data engine crafted for heterogeneous workloads.

What is MatrixOne? MatrixOne is a planet scale, cloud-edge native big data engine crafted for heterogeneous workloads. It provides an end-to-end data

Matrix Origin 996 Jun 29, 2022
OpenYurt - Extending your native Kubernetes to edge(project under CNCF)

openyurtio/openyurt English | 简体中文 What is NEW! Latest Release: September 26th, 2021. OpenYurt v0.5.0. Please check the CHANGELOG for details. First R

OpenYurt 1.2k Jun 18, 2022