计数器是一个伪设备,可以在没有额外物理设备的情况下运行。计数器在边缘端运行,用户可以从云端通过网络控制,也可以从云端通过网络获取计数器值。基本原理图如下
1.预设环境
云服务器Kubeedge搭建
树莓派加入集群
云端和树莓派均处于ready状态
2.云端安装web-controller-app
下载示例代码
git clone https://github.com/kubeedge/examples.git $GOPATH/src/github.com/kubeedge/examples
进入crds文件夹,创建计数器模型
cd $GOPATH/src/github.com/kubeedge/examples/kubeedge-counter-demo/crds
kubectl create -f kubeedge-counter-model.yaml
根据计数器应用运行的节点,修改配置文件kubeedge-counter-instance.yaml,这里将节点名称改为shumeipai
vim kubeedge-counter-instance.yaml
修改后的内容如下
apiVersion: devices.kubeedge.io/v1alpha2
kind: Device
metadata:
name: counter
labels:
description: 'counter'
spec:
deviceModelRef:
name: counter-model
nodeSelector:
nodeSelectorTerms:
- matchExpressions:
- key: 'kubernetes.io/hostname'
operator: In
values:
- shumeipai
status:
twins:
- propertyName: status
desired:
metadata:
type: string
value: 'ON'
reported:
metadata:
type: string
value: '0'
然后将设备从云端拉起
kubectl create -f kubeedge-counter-instance.yaml
部署云端应用,应该在服务器中打开相应的端口,将web运行在此端口,进入云端应用目录,修改main程序
cd ..
cd web-controller-app
vim main.go
将端口修改为开放的端口,笔者开放端口为3089
beego.Run(":3089")
编译、构建并拉起镜像
make all
make docker
cd ..
cd crds
kubectl apply -f kubeedge-web-controller-app.yaml
3.树莓派部署应用
为了避免镜像的发布传输效果,可以直接在树莓派上操作生成镜像
下载示例代码
git clone https://github.com/kubeedge/examples.git $GOPATH/src/github.com/kubeedge/examples
进入应用文件夹counter-mapper
cd $GOPATH/src/github.com/kubeedge/examples/kubeedge-counter-demo/counter-mapper
直接编译生成镜像
make all
make docker
在服务器中,将应用部署起来
cd $GOPATH/src/github.com/kubeedge/examples/kubeedge-counter-demo/crds
kubectl apply -f kubeedge-pi-counter-app.yaml
4.实验效果
查看应用云端与边端的部署情况
可以看到,应用已经在云端和边端成功运行
通过以下命令可以查看设备的部署情况
kubectl get device
直接通过服务器的公网IP:port进行访问
在树莓派上查看运行日志
我们可以看到,云端数据和树莓派上数据保持同步
到这里,表明Kubeedge的计数器示例运行成功