KubeEdge使用文档

    选用示例:KubeEdge Counter Demo

    计数器是一个伪设备,用户无需任何额外的物理设备即可运行此演示。计数器在边缘侧运行,用户可以从云侧在Web中对其进行控制,也可以从云侧在Web中获得计数器值。原理图如下:

    详细文档参考:https://github.com/kubeedge/examples/tree/master/kubeedge-counter-demo

    1)本示例要求KubeEdge版本必须是v1.2.1+,此次选择最新版的KubeEdge v1.8.0

    2)确保k8s apiserver开启了以下配置:

    1. --insecure-bind-address=0.0.0.0

    可以通过修改/etc/kubernetes/manifests/kube-apiserver.yaml文件,并重启k8s-apiserver组件的pod来进行更改。

    3)下载示例代码:

    1. [root@ke-cloud ~]# git clone https://github.com/kubeedge/examples.git $GOPATH/src/github.com/kubeedge/examples

    2. 创建device model和device

    1)创建device model

    1. [root@ke-cloud ~]# cd $GOPATH/src/github.com/kubeedge/examples/kubeedge-counter-demo/crds
    2. [root@ke-cloud crds~]# kubectl create -f kubeedge-counter-model.yaml

    2)创建device

    1)修改代码

    云端应用web-controller-app用来控制边缘端的pi-counter-app应用,该程序默认监听的端口号为80,此处修改为8089,如下所示:

    1. [root@ke-cloud ~]# cd $GOPATH/src/github.com/kubeedge/examples/kubeedge-counter-demo/web-controller-app
    2. [root@ke-cloud web-controller-app~]# vim main.go
    3. import (
    4. "github.com/astaxie/beego"
    5. "github.com/kubeedge/examples/kubeedge-counter-demo/web-controller-app/controller"
    6. func main() {
    7. beego.Router("/", new(controllers.TrackController), "get:Index")
    8. beego.Router("/track/control/:trackId", new(controllers.TrackController), "get,post:ControlTrack")
    9. beego.Run(":8089")
    10. }

    2)构建镜像

    注意:构建镜像时,请将源码拷贝到GOPATH对应的路径下,如果开启了go mod请关闭。

    1. [root@ke-cloud web-controller-app~]# make all

    3)部署web-controller-app

    1. [root@ke-cloud ~]# cd $GOPATH/src/github.com/kubeedge/examples/kubeedge-counter-demo/crds
    2. [root@ke-cloud crds~]# kubectl apply -f kubeedge-web-controller-app.yaml

    4. 部署边缘端应用

    边缘端的pi-counter-app应用受云端应用控制,主要与mqtt服务器通信,进行简单的计数功能。

    1)修改代码与构建镜像

    需要将Makefile中的GOARCH修改为amd64才能运行该容器。

    2)部署Pi Counter App

    1. [root@ke-cloud crds~]# kubectl apply -f kubeedge-pi-counter-app.yaml
    2. 说明:为了防止Pod的部署卡在`ContainerCreating`,这里直接通过docker savescpdocker load命令将镜像发布到边缘端
    3. [root@ke-cloud ~]# docker save -o kubeedge-pi-counter.tar kubeedge/kubeedge-pi-counter:v1.0.0
    4. [root@ke-cloud ~]# scp kubeedge-pi-counter.tar root@192.168.1.56:/root
    5. [root@ke-edge1 ~]# docker load -i kubeedge-pi-counter.tar
    1. [root@ke-cloud ~]# kubectl get pods -o wide
    2. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    3. kubeedge-counter-app-758b9b4ffd-f8qjj 1/1 Running 0 26m 192.168.1.66 ke-cloud <none> <none>

    我们现在开始测试一下该Demo运行效果:

    1)执行ON命令 在web页面上选择ON,并点击Execute,可以在edge节点上通过以下命令查看执行结果:

    2)查看counter STATUS 在web页面上选择STATUS,并点击Execute,会在Web页面上返回counter当前的status,如下所示:

    3)执行OFF命令 在web页面上选择OFF,并点击Execute,可以再edge节点上通过以下命令查看执行结果:

    6. 其它

    1)更过多的KubeEdge官方示例请参考 https://github.com/kubeedge/examples

    |Controlling a CC2650 SensorTag bluetooth device using KubeEdge platform | Play Music @Edge through WeChat | Play music at edge based on WeChat and KubeEdge | | Play music at edge based on Web and KubeEdge | Collecting temperature @Edge | Collecting temperature at edge based KubeEdge | | Control pseudo device counter and collect data based KubeEdge Play Music @Edge through Twitter| Play music at edge based on Twitter and KubeEdge. | Face detection at cloud using OpenCV and using it to control zigbee on edge using Kubeedge.

    2)使用EdgeMesh做边缘服务发现

    https://github.com/kubeedge/edgemesh

    3)自定义云边消息路由