运行 KubeEdge 官网示例_Counter Demo 计数器
KubeEdge Counter Demo 计数器是一个伪设施,用户无需任何额定的物理设施即可运行此演示。计数器在边缘侧运行,用户能够从云侧在 Web 中对其进行管制,也能够从云侧在 Web 中取得计数器值, 原理图如下:
先装置好 kubeedge
Linux 装置 kubeedge_亲测胜利
kubeedge 边缘节点装置
# 在 k8s-master 上执行, 查看节点
kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 34h v1.19.2
k8s-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 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
#部署云端利用
#云端利用 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 [email protected]:/data/
#在边缘端执行
docker load -i kubeedge-pi-counter.tar
#在边缘端查看容器启动日志, 有没有报错
docker logs -f counter-container-id
docker logs -f 8e2359446752
体验 demo
KubeEdge Demo 的云端局部和边缘端的局部都曾经部署结束
kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kubeedge-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-app
vim 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 all
make docker
cd $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 找到容器 id
docker logs -f 6e768c3db4eb
报错: dial tcp 127.0.0.1:8080: connect: connection refused
kubectl -s http://127.0.0.1:8080 get nodes
curl http://127.0.0.1:8080
8080 端口不通
#查看 kubelet 日志
journalctl -xeu kubelet
journalctl -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-reload
systemctl restart kubelet
还是没有用 ------------8080 端口不通 --------
netstat -tpnl
kubectl cluster-info
vim /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/…