运行KubeEdge官网示例_Counter Demo 计数器

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

先装置好kubeedge

Linux装置kubeedge_亲测胜利

kubeedge边缘节点装置

#在k8s-master 上执行,查看节点kubectl get nodeNAME         STATUS   ROLES        AGE   VERSIONk8s-master   Ready    master       34h   v1.19.2k8s-node-1   Ready    agent,edge   79m   v1.19.3-kubeedge-v1.5.0

云端操作 在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 modelcd $GOPATH/src/github.com/kubeedge/examples/kubeedge-counter-demo/crds#创立modelkubectl create -f kubeedge-counter-model.yaml#创立devicecd $GOPATH/src/github.com/kubeedge/examples/kubeedge-counter-demo/crds#依据你的理论状况批改matchExpressions:vim kubeedge-counter-instance.yaml#次要批改的中央- key: 'kubernetes.io/hostname'  values:    - k8s-node-1 #这里是节点名称#运行yamlkubectl create -f kubeedge-counter-instance.yaml#部署云端利用#云端利用web-controller-app用来管制边缘端的pi-counter-app利用,该程序默认监听的端口号为80,此处批改为8089cd $GOPATH/src/github.com/kubeedge/examples/kubeedge-counter-demo/web-controller-appvim main.gobeego.Run(":8089")#构建镜像make allmake docker#部署web-controller-appcd $GOPATH/src/github.com/kubeedge/examples/kubeedge-counter-demo/crdskubectl 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-mappervim MakefileGOARCH=amd64 go build -o pi-counter-app main.go#构建镜像make allmake docker#部署Pi Counter Appcd $GOPATH/src/github.com/kubeedge/examples/kubeedge-counter-demo/crdskubectl 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 [email protected]:/data/#在边缘端执行docker load -i kubeedge-pi-counter.tar#在边缘端查看容器启动日志,有没有报错docker logs -f counter-container-iddocker logs -f 8e2359446752

体验demo

KubeEdge Demo的云端局部和边缘端的局部都曾经部署结束

kubectl get pods -o wideNAME                                    READY   STATUS    RESTARTS   AGE   IP            NODE           NOMINATED NODE   READINESS GATESkubeedge-counter-app-6984dcb4dd-jz5nh   1/1     Running   0          32m   172.16.72.143   k8s-master   <none>           <none>kubeedge-pi-counter-784d57c5d4-27v5g    1/1     Running   0          30m   <none>        k8s-node-1        <none>           <none>

浏览器拜访: http://172.16.72.143:8089/
因为应用的 hostNetwork 模式,所以间接拜访即可,

在web页面上抉择ON,并点击Execute,能够在edge边缘节点上通过以下命令查看执行后果
docker logs -f counter-container-id
docker logs -f 8e2359446752

示意测试胜利

部署可能呈现的问题

点击没有反馈,页面调试工具F12查看,起因是jquery拜访不了------真是坑-----

https://code.jquery.com/jquer... 拜访不了

https://code.jquery.com/jquer...
批改为
https://cdn.staticfile.org/jq...
进入容器
docker ps 找到kubeedge-counter-app
docker exec -it 21b11899d52f /bin/bash
批改不了,是个二进制文件了

批改源码,从新编译打包

cd $GOPATH/src/github.com/kubeedge/examples/kubeedge-counter-demo/web-controller-appvim views/layout.html https://code.jquery.com/jquery-1.10.2.min.js #把这个替换成 https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js#从新编译打包make allmake dockercd $GOPATH/src/github.com/kubeedge/examples/kubeedge-counter-demo/crds#删除kubectl delete -f kubeedge-web-controller-app.yaml #重新启动kubectl apply -f kubeedge-web-controller-app.yaml 
8080端口不通 ---又是坑--- 报错: dial tcp 127.0.0.1:8080: connect: connection refused
#查看云端日志docker ps kubeedge-counter-app 找到容器iddocker logs -f 6e768c3db4eb报错: dial tcp 127.0.0.1:8080: connect: connection refusedkubectl -s http://127.0.0.1:8080 get nodescurl http://127.0.0.1:80808080端口不通#查看kubelet日志journalctl -xeu kubeletjournalctl -f -u kubelet#报错Failed to get system container stats for "/system.slice/docker.service": failed to get cg起因:kubernetes和docker版本兼容性问题vim /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf[Service]CPUAccounting=true              ## 增加 CPUAccounting=true 选项,开启 systemd CPU 统计性能MemoryAccounting=true           ## 增加 MemoryAccounting=true 选项,开启 systemd Memory 统计性能systemctl daemon-reloadsystemctl restart kubelet还是没有用------------8080端口不通--------netstat -tpnlkubectl cluster-infovim /etc/kubernetes/manifests/kube-apiserver.yaml insecure-port字段值为0,示意默认禁用了8080端口--insecure-port=8080重启apiserver容器 -----胜利8080通了-------docker restart ce5511548fe0

咱们须要裸露 Kubernetes apiserver 的 http 端口8080用于与 cloudcore/kubectl 交互。
请依照以下步骤在 Kubernetes apiserver 中启用 http 端口。这样能够在边缘节点执行 kubectl get nodes -s 192.169.0.10:8080等命令,就像在 master 节点上一样。
kubectl get nodes -s 172.16.72.143:8080

-------计数器终于计数了-------胜利----------------
拜访:http://172.16.72.143:8089/
查看日志
docker logs -f dc59f4f3a877(kubeedge-counter-app)
docker logs -f dc59f4f3a877(kubeedge-pi-counter)

参考链接: https://www.dogfei.cn/archive...
https://zhuanlan.zhihu.com/p/...