GithubHelp home page GithubHelp logo

hwq830 / openyurt Goto Github PK

View Code? Open in Web Editor NEW

This project forked from openyurtio/openyurt

0.0 1.0 0.0 983 KB

OpenYurt - Extending your native Kubernetes to edge

License: Apache License 2.0

Makefile 0.25% Go 96.47% Dockerfile 0.01% Shell 2.94% Starlark 0.34%

openyurt's Introduction


Version License Go Report Card Build Status

notification What is NEW!
August 30th, 2020. OpenYurt v0.2.0 is RELEASED! Please check the CHANGELOG for details.
May 29th, 2020. OpenYurt v0.1.0-beta.1 is RELEASED! Please check the CHANGELOG for details.

OpenYurt is built based on native Kubernetes and targets to extend it to support edge computing seamlessly. In a nutshell, OpenYurt enables users to manage applications that run in the edge infrastructure as if they were running in the cloud infrastructure. Our official website is https://openyurt.io.

OpenYurt is suitable for common edge computing use cases whose requirements include:

  • Minimizing the network traffic over long distances between the devices and the workloads.
  • Overcoming the network bandwidth or reliability limitations.
  • Processing data remotely to reduce latency.
  • Providing a better security model to handle sensitive data.

OpenYurt has the following advantages in terms of compatibility and usability.

  • Kubernetes native. It provides full Kubernetes API compatibility. All Kubernetes workloads, services, operators, CNI plugins, and CSI plugins are supported.
  • Seamless conversion. It provides a tool to easily convert a native Kubernetes to be "edge" ready. The extra resource and maintenance costs of the OpenYurt components are very low.
  • Node autonomy. It provides mechanisms to tolerate unstable or disconnected cloud-edge networking. The applications run in the edge nodes are not affected even if the nodes are offline.
  • Cloud platform agnostic. OpenYurt can be easily deployed in any public cloud Kubernetes services.

Architecture

OpenYurt follows a classic edge application architecture design - a centralized Kubernetes master resides in the cloud site, which manages multiple edge nodes reside in the edge site. Each edge node has moderate compute resources allowing running a number of edge applications plus the Kubernetes node daemons. The edge nodes in a cluster can span multiple physical regions. The terms region and unit are interchangeable in OpenYurt.


The major OpenYurt components consist of:

  • YurtHub: A node daemon that serves as a proxy for the outbound traffic from the Kubernetes node daemons (Kubelet, Kubeproxy, CNI plugins and so on). It caches the states of all the resources that the Kubernetes node daemons might access in the edge node's local storage. In case the edge node is offline, those daemons can recover the states upon node restarts.
  • Yurt controller manager: It manages a few controllers such as the node controller and the unit controller (to be released) for different edge computing use cases. For example, the Pods in the nodes that are in the autonomy mode will not be evicted from APIServer even if the node heartbeats are missing.
  • Yurt tunnel server: It connects with the TunnelAgent daemon running in each edge node via a reverse proxy to establish a secure network access between the cloud site control plane and the edge nodes that are connected to the intranet (to be released).

Getting started

OpenYurt supports Kubernetes versions up to 1.16. Using higher Kubernetes versions may cause compatibility issues.

You can setup the OpenYurt cluster manually, but we recommend to start OpenYurt by using the yurtctl command line tool. To quickly build and install yurtctl, assuming the build system has golang 1.13+ and bash installed, you can simply do the following:

$ git clone https://github.com/alibaba/openyurt.git
$ cd openyurt
$ make WHAT=cmd/yurtctl

The yurtctl binary can be found at _output/bin. To convert an existing Kubernetes cluster to an OpenYurt cluster, the following simple command line can be used:

$ _output/bin/yurtctl convert --provider [minikube|ack]

To uninstall OpenYurt and revert back to the original Kubernetes cluster settings, you can run the following command:

$ _output/bin/yurtctl revert

Please check yurtctl tutorial for more details.

Usage

We provider detailed tutorials to demonstrate how to use OpenYurt to manage edge applications.

Roadmap

Community

Contributing

If you are willing to be a contributor for OpenYurt project, please refer to our CONTRIBUTING document for details. We have also prepared a developer guide to help the code contributors.

Meeting

Item Value
APAC Friendly Community meeting Bi-weekly APAC (Starting Sep 2, 2020), Wednesday 10:00AM GMT+8
Meeting link APAC Friendly meeting https://zoom.us/j/99639193252
Meeting notes Notes and agenda

Contact

If you have any questions or want to contribute, you are welcome to communicate most things via GitHub issues or pull requests. Other active communication channels:

License

OpenYurt is under the Apache 2.0 license. See the LICENSE file for details. Certain implementations in OpenYurt rely on the existing code from Kubernetes and the credits go to the original Kubernetes authors.

openyurt's People

Contributors

alibaba-oss avatar carolove avatar charleszheng44 avatar crazy-kitty avatar dddddai avatar denverdino avatar eswzy avatar fei-guo avatar huangyuqi avatar hwq830 avatar lixin0111 avatar lonelymemo avatar rambohe-ch avatar szihai avatar vincent-pli avatar xmwilldo avatar xujunjie-cover avatar zyjhtangtang avatar

Watchers

 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.