1 Star 0 Fork 31

新无止竞 / baetyl-cloud

forked from baetyl / baetyl-cloud 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README_CN.md 9.21 KB
一键复制 编辑 原始数据 按行查看 历史
jiangxin 提交于 2020-09-11 18:42 . node setup change (#94)

BAETYL v2

Baetyl-logo

build codecov Go Report Card License Stars

README

BaetylLinux Foundation Edge 旗下的边缘计算项目,旨在将云计算能力拓展至用户现场。 提供临时离线、低延时的计算服务,包括设备接入、消息路由、数据遥传、函数计算、视频采集、AI推断、状态上报、配置下发等功能。

Baetyl v2 提供了一个全新的边云融合平台,采用云端管理、边缘运行的方案,分成边缘计算框架云端管理套件(本项目)两部分,支持多种部署方式。可在云端管理所有资源,比如节点、应用、配置等,自动部署应用到边缘节点,满足各种边缘计算场景,特别适合新兴的强边缘设备,比如 AI 一体机、5G 路侧盒子等。

v2 和 v1 版本的主要区别如下:

  • 边缘和云端框架全部向云原生演化,已支持运行在 K8S 或 K3S 之上。
  • 引入声明式的设计,通过影子(Report/Desire)实现端云同步(OTA)。
  • 边缘框架暂不支持进程(native)运行模式,由于运行在 K3S 上,所以整体的资源开销会有增加。
  • 边缘框架将来会支持边缘节点集群。

架构

Architecture

云端管理套件(本项目)

云端管理套件(Cloud Management Suite)负责管理所有资源,包括节点、应用、配置、部署等。所有功能的实现都插件化,方便功能扩展和第三方服务的接入,提供丰富的应用。云端管理套件的部署非常灵活,即可部署在公有云上,又可部署在私有化环境中,还可部署在普通设备上,支持 K8S/K3S 部署,支持单租户和多租户。

开源版云端管理套件提供的基础功能如下:

  • 边缘节点管理
    • 在线安装
    • 端云同步(影子)
    • 节点信息
    • 节点状态
    • 应用状态
  • 应用部署管理
    • 容器应用
    • 函数应用
    • 节点匹配(自动)
  • 配置管理
    • 普通配置
    • 函数配置
    • 密文
    • 证书
    • 镜像库凭证

开源版本包含上述所有功能的 RESTful API,暂不包含前端界面(Dashboard)。

边缘计算框架

边缘计算框架(Edge Computing Framework)运行在边缘节点的 Kubernetes 上, 管理和部署节点的所有应用,通过应用服务提供各式各样的能力。 应用包含系统应用和普通应用,系统应用全部由 Baetyl 官方提供,用户无需配置。

目前有如下几个系统应用:

  • baetyl-init:负责激活边缘节点到云端,并初始化 baetyl-core,任务完成后就会退出。
  • baetyl-core:负责本地节点管理(node)、端云数据同步(sync)和应用部署(engine)。
  • baetyl-function: 所有函数运行时服务的代理模块,函数调用都到通过这个模块。

目前框架支持 Linux/amd64、Linux/arm64、Linux/armv7, 如果边缘节点的资源有限,可考虑使用轻量版 Kubernetes:K3S

快速安装

在安装前请先下载 baetyl-cloud 项目,我们以项目中的 scripts/demo 为例演示步骤,云端管理套件和边缘计算框架全部安装在同一台机器上。

git clone https://github.com/baetyl/baetyl-cloud.git

安装数据库

在安装 baetyl-cloud 之前,我们需要先安装数据库,可执行如下命令安装。

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install mariadb --set rootUser.password=secretpassword,db.name=baetyl_cloud bitnami/mariadb
helm install phpmyadmin bitnami/phpmyadmin 

注意:这里为了演示方便,我们 hardcode 了密码,请自行修改,可全局替换 secretpassword。

初始化数据

确认 mariadb 和 phpmyadmin 都进入 Runing 状态。

kubectl get pod
# NAME                            READY   STATUS             RESTARTS   AGE
# mariadb-master-0                1/1     Running            0          2m56s
# mariadb-slave-0                 1/1     Running            0          2m56s
# phpmyadmin-55f4f964d7-ctmxj     1/1     Running            0          117s

然后执行如下命令,保持终端不要退出。

export POD_NAME=$(kubectl get pods --namespace default -l "app=phpmyadmin,release=phpmyadmin" -o jsonpath="{.items[0].metadata.name}")
echo "phpMyAdmin URL: http://127.0.0.1:8080"
kubectl port-forward --namespace default svc/phpmyadmin 8080:80

然后用浏览器打开 http://127.0.0.1:8080/index.php, 服务器输入:mariadb,账号输入:root,密码输入:secretpassword。登录后选择数据库 baetyl-cloud,点击 SQL按钮,将 baetyl-cloud 项目下 scripts/sql 目录中的所有文件的 sql 语句输入到页面执行。如果执行没有报错,则数据初始化成功。

安装 baetyl-cloud

进入 baetyl-cloud 项目所在目录,执行如下命令。

# helm 3
helm install baetyl-cloud ./scripts/demo/charts/baetyl-cloud/

确认 baetyl-cloud 处于 Running 状态,也可查看日志是否报错。

kubectl get pod
# NAME                            READY   STATUS    RESTARTS   AGE
# baetyl-cloud-57cd9597bd-z62kb   1/1     Running   0          97s

kubectl logs -f baetyl-cloud-57cd9597bd-z62kb

创建和安装边缘节点

调用 RESTful API 创建节点。

curl -d "{\"name\":\"demo-node\"}" -H "Content-Type: application/json" -X POST http://0.0.0.0:30004/v1/nodes
# {"namespace":"baetyl-cloud","name":"demo-node","version":"1931564","createTime":"2020-07-22T06:25:05Z","labels":{"baetyl-node-name":"demo-node"},"ready":false}

获取边缘节点的在线安装脚本。

curl http://0.0.0.0:30004/v1/nodes/demo-node/init
# {"cmd":"curl -skfL 'https://0.0.0.0:30003/v1/active/setup.sh?token=f6d21baa9b7b2265223a333630302c226b223a226e6f6465222c226e223a2264656d6f2d6e6f6465222c226e73223a2262616574796c2d636c6f7564222c227473223a313539353430323132367d' -osetup.sh && sh setup.sh"}

在 baetyl-cloud 部署地机器上执行安装脚本.

curl -skfL 'https://0.0.0.0:30003/v1/active/setup.sh?token=f6d21baa9b7b2265223a333630302c226b223a226e6f6465222c226e223a2264656d6f2d6e6f6465222c226e73223a2262616574796c2d636c6f7564222c227473223a313539353430323132367d' -osetup.sh && sh setup.sh

注意

1、边缘节点端安装前需配置K3s环境,具体参考 k3s安装,K3s默认运行在Containerd运行时,若想切换到Docker运行时,请先安装Docker,具体参考 docker安装

2、如果需要在 baetyl-cloud 部署地机器以外的设备上安装边缘节点,请修改数据库将 baetyl_property 表中的 node-address 和 active-address 修改成真实的地址。

查看边缘节点的状态,最终会有两个边缘服务处于 Running 状态,也可调用云端 RESTful API 查看边缘节点状态,可以看到边缘节点已经在线("ready":true)。

kubectl get pod -A
# NAMESPACE            NAME                                      READY   STATUS    RESTARTS   AGE
# baetyl-edge-system   baetyl-core-8668765797-4kt7r              1/1     Running   0          2m15s
# baetyl-edge-system   baetyl-function-5c5748957-nhn88           1/1     Running   0          114s

curl http://0.0.0.0:30004/v1/nodes/demo-node
# {"namespace":"baetyl-cloud","name":"demo-node","version":"1939112",...,"report":{"time":"2020-07-22T07:25:27.495362661Z","sysapps":...,"node":...,"nodestats":...,"ready":true}

联系我们

Baetyl 作为中国首发的开源边缘计算框架, 我们旨在打造一个 轻量、安全、可靠、可扩展性强 的边缘计算社区, 为边缘计算技术的发展和不断推进营造一个良好的生态环境。 为了更好的推进 Baetyl 的发展,如果您有更好的关于 Baetyl 的发展建议, 欢迎选择如下方式与我们联系。

如何贡献

如果您热衷于开源社区贡献,Baetyl 将为您提供两种贡献方式,分别是代码贡献和文档贡献。 具体请参考 如何向 Baetyl 贡献代码和文档

Go
1
https://gitee.com/huiwei13/baetyl-cloud.git
git@gitee.com:huiwei13/baetyl-cloud.git
huiwei13
baetyl-cloud
baetyl-cloud
master

搜索帮助