KubeEdge官方示例运行成功_Counter Demo 计数器

news2024/12/24 0:31:10

运行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 root@172.16.72.142:/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/jquery-1.10.2.min.js 访问不了

https://code.jquery.com/jquery-1.10.2.min.js
修改为
https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js
进入容器
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/archives/kubeedge
https://zhuanlan.zhihu.com/p/342626632

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/716959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端web入门-移动web-day10

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 移动Web基础 手机模拟器 屏幕分辨率 视口 二倍图 适配方案 rem 适配方案 rem 媒体查询 rem – …

使用java生成mvt切片的方法

如何使用java生成geoserver的矢量切片供前端&#xff08;mapbox等&#xff09;调用 目录新的想法Java能为切片做什么如何生成切片如何转换xyz数据如何查询如何输出mvt格式给前端前端如何调用 目录 好久没发博客了&#xff0c;每日或忙碌、或悠闲、或喜或悲、时怅时朗&#xff…

访问学者怎样准备申请推荐信

作为访问学者&#xff0c;申请推荐信是非常重要的一步&#xff0c;它能够在您的申请过程中增加信誉度和竞争力。一个优秀的推荐信可以更好地展现您的学术能力、研究潜力和个人品质。以下是知识人网小编整理的关于如何准备申请推荐信的建议&#xff1a; 1. 确定推荐人&#xff1…

阿里云OSS上传文件工具类

个人主页&#xff1a;金鳞踏雨 个人简介&#xff1a;大家好&#xff0c;我是金鳞&#xff0c;一个初出茅庐的Java小白 目前状况&#xff1a;22届普通本科毕业生&#xff0c;几经波折了&#xff0c;现在任职于一家国内大型知名日化公司&#xff0c;从事Java开发工作 我的博客&am…

20本期刊影响因子上涨,7月SCI/SSCI/AHCI/EI刊源表已更新!

2023年7月SCI/SSCI/AHCI/EI期刊目录更新 2023年6月28日发布的最新《期刊引证报告》中&#xff0c;我处合作期刊中&#xff0c;7月刊源表有20本期刊影响因子上涨&#xff0c;同时新增多本快刊&#xff01; 重磅&#xff01;2023年JCR正式发布&#xff08;附影响因子名单下载&a…

[github-100天机器学习]day2 simple linear regression

https://github.com/LiuChuang0059/100days-ML-code/blob/master/Day2_SImple_Linear_regression/README.md 简单线性回归 使用单一特征预测响应值。基于自变量X来预测因变量Y的方法&#xff0c;假设两者线性相关&#xff0c;寻找一种根据特征或自变量X的线性函数来预测Y。 目…

工资难以突破升职加薪必看,资深测试经理教你怎么做好“管理岗”!

要了解测试管理岗位需要具备的素质&#xff0c;我们先来看下测试管理岗位的职责。以下是 Boss 直聘上某几家的公司的测试经理的岗位要求&#xff1a; 如果你想学习接口自动化测试&#xff0c;我这边给你推荐一套视频&#xff0c;这个视频可以说是B站播放全网第一的接口自动化测…

从零开始搭建STM32CubeMX开发环境

本文记录一下如何从零开始使用STM32CubeMX&#xff0c;包括软件的安装&#xff0c;环境的搭建&#xff0c;配置代码的生成等&#xff1b; 本文以STM32G030C8T6为例&#xff0c;如果你的单片机不是以STM32G030C8T6为例&#xff0c;换成你的单片机类型即可&#xff0c;过程都是通…

03_单一职责模式

单一职责 在软件组件的设计中&#xff0c;如果责任划分的不清晰&#xff0c;使用继承得到的结果往往是随着需求的变化&#xff0c;子类急剧膨胀&#xff0c;同时充斥着重复代码&#xff0c;这时候的关键是划清责任。 装饰模式 动态&#xff08;组合&#xff09;地给一个对象增…

系统没有“internet信息服务(IIS)管理器”

系统没有“internet信息服务&#xff08;IIS&#xff09;管理器” 解决方案1.打开控制面板&#xff0c;找到并打开程序。2.找到并打开程序里的启用或关闭windows功能。3.在‘Internet Information Services’下的‘web管理工具’中找到IIS相关功能&#xff0c;在前面的复选框中…

探索数字孪生世界:市场上五款炙手可热的数字孪生产品介绍

山海鲸可视化&#xff1a;山海鲸可视化是一款国内领先的数字孪生软件&#xff0c;具有强大的GIS功能和可视化效果&#xff0c;广泛应用于城市规划、建筑设计和智慧城市等领域。 华为云数字孪生&#xff1a;华为云数字孪生平台提供了全面的数字化解决方案&#xff0c;包括智慧城…

链表中倒数第k个结点(快慢指针问题)

⭐️ 往期相关文章 &#x1f4ab;链接1&#xff1a;leetcode 876.链表的中间结点(快慢指针问题) &#x1f4ab;链接2&#xff1a;leetcode 206.反转链表 &#x1f4ab;链接3&#xff1a;leetcode 203.移除链表元素 &#x1f4ab;链接4&#xff1a;数据结构-手撕单链表代码详解…

实训笔记7.4

实训笔记7.4 7.4一、座右铭二、IDEA集成开发环境的安装和使用三、DEBUG断点调试四、Java设计模式4.1 适配器模式4.2 动态代理模式4.3 单例设计模式 五、Java中网络编程5.1 网络编程三个核心要素5.2 TCP网络编程 六、基于网络编程的聊天系统6.1 需求分析6.2 系统设计6.2.1 概要设…

解放运营人员:钡铼技术S475物联网网关实现养殖环境的远程监控与告警

在养殖行业中&#xff0c;对环境参数的精确监测与控制至关重要。然而&#xff0c;传统的监测方法往往存在诸多痛点&#xff0c;如数据采集不准确、传输速度慢、可视化效果差等。为了解决这些问题&#xff0c;钡铼技术公司推出了其旗舰产品——S475多功能RTU&#xff0c;该产品在…

如何利用思维导图提高项目管理效率

思维导图 是一种强大的工具&#xff0c;可以帮助我们更好地组织和管理项目。它是一种以图形方式展现思维和概念之间关系的方法&#xff0c;通过将主题、子主题和分支串联起来&#xff0c;帮助我们清晰地了解任务的层次结构和相互关系。在项目管理中&#xff0c;思维导图可以帮助…

数据生成实体类解决方案

文章目录 数据生成实体类解决方案 简介工作原理解析JSON生成实体类示例JSON消息解析JSON核心方法&#xff1a;调用示例&#xff1a;将数据保存到实体类中。将实体类转为输出为JSON。 思考 数据生成实体类解决方案 直接将xml导入到Studio里即可。下载文件连接&#xff1a; CSDN…

GPIO点灯

简述&#xff1a;本人使用教材为《嵌入式系统原理与应用》&#xff0c;GPIOCON控制输出&#xff0c;GPIODAT控制高电平和低电平&#xff0c;高电平点亮&#xff0c;低电平熄灭。

【若依】框架搭建,前端向后端如何发送请求,验证码的实现

若依框架 若依框架&#xff08;Ruoyi&#xff09;是一款基于Spring Boot和Spring Cloud的开源快速开发平台。它提供了一系列的基础功能和通用组件&#xff0c;能够帮助开发者快速构建企业级应用。若依框架采用了模块化的设计理念&#xff0c;用户可以选择需要的功能模块进行集…

全网最全,华为可信专业级认证介绍

1&#xff1a;华为可信专业级认证是什么&#xff1f; 华为在推动技术人员的可信认证&#xff0c;算是一项安全合规的工作。专业级有哪些考试呢&#xff1f;共有四门&#xff1a; 科目一&#xff1a;上级编程&#xff0c;对比力扣2道中等、1道困难&#xff1b; 科目二&#xff…

C++ STL --哈希表

目录 1. unordered系列关联式容器 1.1 unordered_map 1.1.1 unordered_map的文档介绍 1.1.2 unordered_map的接口说明 1.2 unordered_set 1.3 在线OJ 2. 底层结构 2.1 哈希概念 2.2 哈希冲突 2.3 哈希函数 2.4 哈希冲突解决 2.4.1 闭散列 2.4.2 开散列 3. 模拟实现…