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

#yyds干货盘点#运行KubeEdge官方示例_Counter Demo 计数器_docker

先安装好kubeedge

Linux安装kubeedge_亲测成功

kubeedge边缘节点安装


          
          
#在k8s-master 上执行,查看节点
[root@k8s-master crds]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 3d23h v1.19.3
k8s-node01 Ready <none> 3d23h v1.19.3
k8s-node02 Ready <none> 3d22h v1.19.3
ke-edge1 Ready agent,edge 3d21h v1.19.3-kubeedge-v1.8.0
ke-edge2 Ready agent,edge 3d21h v1.19.3-kubeedge-v1.8.0
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

确保kubernetes apiserver开启了以下配置:


          
          
--insecuret-port=8080
--insecure-bind-address=0.0.0.0
  • 1.
  • 2.

云端操作 在k8s-master 上执行


          
          
#下载示例代码
git clone https://github.com/kubeedge/examples.git $GOPATH/src/github.com/kubeedge/examples

#使用官方的示例仓库github会比较慢,这里可以使用我的加速仓库
git clone https://gitee.com/iot-kubeedge/kubeedge-examples.git $GOPATH/src/github.com/kubeedge/examples

#创建 device model
cd $GOPATH/src/github.com/kubeedge/examples/kubeedge-counter-demo/crds

#创建model
kubectl create -f kubeedge-counter-model.yaml

#创建device
cd $GOPATH/src/github.com/kubeedge/examples/kubeedge-counter-demo/crds
#根据你的实际情况修改matchExpressions:
vim kubeedge-counter-instance.yaml
#主要修改的地方
- key: 'kubernetes.io/hostname'
values:
- k8s-node-1 #这里是节点名称

#运行yaml
kubectl create -f kubeedge-counter-instance.yaml

kubectl create -f kubeedge-web-controller-app.yaml

#部署云端应用
#云端应用web-controller-app用来控制边缘端的pi-counter-app应用,该程序默认监听的端口号为80,此处修改为8089
cd $GOPATH/src/github.com/kubeedge/examples/kubeedge-counter-demo/web-controller-app
vim main.go
beego.Run(":8089")

#构建镜像
make all
make docker

#部署web-controller-app
cd $GOPATH/src/github.com/kubeedge/examples/kubeedge-counter-demo/crds
kubectl apply -f kubeedge-web-controller-app.yaml

#部署边缘端应用
#边缘端的pi-counter-app应用受云端应用控制,主要与mqtt服务器通信,进行简单的计数功能。
#修改代码与构建镜像
#需要将Makefile中的GOARCH修改为amd64才能运行该容器。默认是arm架构的
cd $GOPATH/src/github.com/kubeedge/examples/kubeedge-counter-demo/counter-mapper
vim Makefile
GOARCH=amd64 go build -o pi-counter-app main.go

#构建镜像
make all
make docker

#部署Pi Counter App
cd $GOPATH/src/github.com/kubeedge/examples/kubeedge-counter-demo/crds
kubectl apply -f kubeedge-pi-counter-app.yaml
#说明:为了防止Pod的部署卡在`ContainerCreating`,这里直接通过docker save、scp和docker load命令将镜像发布到边缘端
#因为边缘端没有这个镜像,只能手动弄过去,或者先上传到私有镜像仓库, 边缘端配置私有仓库地址,就可以直接从私有仓库下载
#这里就手动弄到边缘端
docker save -o kubeedge-pi-counter.tar kubeedge/kubeedge-pi-counter:v1.0.0

#传到边缘端
scp kubeedge-pi-counter.tar root@172.16.72.142:/data/
#在边缘端执行
docker load -i kubeedge-pi-counter.tar

#在边缘端查看容器启动日志,有没有报错
docker logs -f counter-container-id

turn off counter.
turn on counter.
Counter value: 1
Counter value: 2
Counter value: 3
Counter value: 4
Counter value: 5
Counter value: 6
Counter value: 7
Counter value: 8
Counter value: 9
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.