当前位置: 首页 > news >正文

体验 Shifu 解决报错流程

打开技术文档,首先看了一下目录,简单了解一下框架结构,目录的其中重点是“下载安装” 和 ”本机安装测试“,这两部分。

由于没有学过K8s的缘故,所以刚开始看命令都是一知半解,啃了半天的K8s快速入门,理解基础知识如Pod是什么。

Shifu安装方式

安装前提是:都需要安装Docker,文中是安装 Docker Desktop,我们是Linux安装Docker就行

从文档中总结得出,Shifu安装方式共分为三种:

  1. 下载准备好的Shifu安装包(Docker镜像压缩文件)并安装,Shifu会快捷方便的在Docker中运行
  2. 本机安装中:手动安装Shifu所需要的组件如 kubectl ,kind ,再安装 Shifu仓库 。   
    # clone Shifu仓库
    git clone https://github.com/Edgenesis/shifu.git
    cd shifu
    # 在集群中安装Shifu
    sudo kubectl apply -f pkg/k8s/crd/install/shifu_install.yml
     就是各种组件配置安装很麻烦,并且没有deviceshifu的pods资源,无法进行资源的交互,也就是无法使用shifu的API,使用数字孪生的命令(这也是卡了我许久的原因,一直以为是环境配置错误,所以一直回滚数据,但运行时还是提示无法连接本地主机,或无资源)
  3. 在生产环境部署 Shifu 前您需要先安装 Kubernetes。

    Shifu 提供了一键安装的方式,您可以使用如下命令将 Shifu 安装到您的集群中:

    kubectl apply -f https://raw.githubusercontent.com/Edgenesis/shifu/v0.1.1/pkg/k8s/crd/install/shifu_install.yml
    

1.使用Docker运行Shifu

环境别人已经给你搭好了,运行环境在容器中,已经提交为镜像并转为了压缩文件,我们只需要使用就可以了

安装测试

 先根据 “下载安装” 中的

1.2 下载 Shifu 安装包

curl -LO https://demo.shifu.run/demo-content/shifu_demo_aio_linux_amd64.tar

1.3 将所下载的安装包解压到testdir文件夹中

mkdir testdir && tar -xvf shifu_demo_aio_linux_amd64.tar -C testdir && cd testdir

1.4 运行Demo

chmod +x scripts/deviceshifu-demo-aio.sh && sudo ./scripts/deviceshifu-demo-aio.sh run_demo

注意这里运行的时候有一个问题:

 每次都是这里报错,但本机Kind的环境已经配置好了,而且这是Docker里的环境啊。。怎么会找不到?

于是去重启并重新修改了三次环境(回滚重装),都没有解决问题

去报错提示信息  ./scripts/deciceshifu-demo-aio.sh :line 97 这里看看

也就是一个kind命令,在shell文件中执行,找不到kind 这个命令行(这时候我还没有看见执行命令行中的sudo 字段)

于是去在本地安装kind 和 kubctl 环境,并将该文件中的所有kind命令修改为 /usr/local/bin/kind ,kubctl同理。于是可以运行成功并自动创建集合了。

 之后又总结了一下其他的解决办法:

程序是在  sudo ./scripts....   下运行的,所以必须要在刚刚创建的testdir目录下,并且拥有sudo访问该目录的权限,否则会在执行 kind 和 kubctl 命令时,会报sudo: command not found错误

有三个解决办法:

1.删去sudo运行

chmod +x scripts/deviceshifu-demo-aio.sh && ./scripts/deviceshifu-demo-aio.sh run_demo

2.配置 /etc/sudoers 

vim /etc/sudoers

在里面找到secure_path行,添加到你需要访问的路径

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/root/go/bin:

 原理参考如下:

(8条消息) sudo: command not found 的解决方法_ByteSaid的博客-CSDN博客

3.(本人第一次的解决过程)在本地配置安装好环境 如 kubctl和 Kind ,并修改./scripts/deciceshifu-demo-aio.sh   文件,将其中命令 的环境改为本地的命令地址 

​​​​​​​

2.本地主机环境配置测试Shifu

安装Docker -- > 安装kubctl -->  安装 go  --> 通过go/或直接 安装kind --> 创建集群 -->下载镜像并加载到集群 --> 安装Shifu,在集群中安装Shifu 

测试

sudo kubectl get pods -A 

结果:(缺少deviceshifu服务)

NAMESPACE                    NAME                                 READY       STATUS      RESTARTS       AGE

kube-system         coredns-6d4b75cb6d-gjzmw                       1/1        Running        0           34s
kube-system         coredns-6d4b75cb6d-rncrk                       1/1        Running        0           34s
kube-system         etcd-kind-control-plane                        1/1        Running        0           49s
kube-system         kindnet-t69bx                                  1/1        Running        0           34s
kube-system         kube-apiserver-kind-control-plane              1/1        Running        0           49s
kube-system         kube-controller-manager-kind-control-plane     1/1        Running        0           48s
kube-system         kube-proxy-7dfvm                               1/1        Running        0           34s
kube-system         kube-scheduler-kind-control-plane              1/1        Running        0           48s
local-path-storage  local-path-provisioner-9cd9bd544-6zgpv         1/1        Running        0           34s
shifu-crd-system    shifu-crd-controller-manager-94c8c779d-czvkx   2/2        Running        0           17s

Shifu使用

所有的操作都可以总结为以下四步

  • 创建数字孪生
  • 查看pod(可选)
  • 进入nginx,准备调用接口
  • 与数字孪生进行交互(调用程序)

与AGV交互

与温度计交互

与酶标仪交互

与PLC交互

与机械臂交互

与OPC UA设备交互

与 Socket 设备交互

与 MQTT 设备交互

总结:

太过依赖文档给出的命令,此次出错的大部分时间浪费在没有看见  sudo 的调用上,经验也有所不足,才无法快速定位到错误本身,而在配置环境上浪费了大部分时间

相关文章:

  • SpringBoot+Vue项目在线学习网站
  • antd tree 懒加载+局部刷新
  • c# RestClient 请求接口
  • 为了面试大厂,熬夜肝完这份 “测试” 笔记后,我终于“硬”了一回
  • T1095 数1的个数(信息学一本通C++)
  • 八、class 与 style 绑定(1)
  • 职言 | 编码是测试自动化职业生涯的关键:你准备好了吗?
  • 92-Java的缓冲流概述、体系、字节缓冲流使用
  • 检测网络框架越来越多
  • Gee引擎常用功能简介
  • 微信小程序 - - - - - 瀑布流效果实现
  • 前端面试问题(3)
  • 面试复习题二(综合类)
  • HCIA网络基础7-VRP和命令行基础
  • mybatis获取参数的两种方式: #{ } 和 ${ }
  • [Vue CLI 3] 配置解析之 css.extract
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • laravel 用artisan创建自己的模板
  • sublime配置文件
  • vue 配置sass、scss全局变量
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 关于springcloud Gateway中的限流
  • 你不可错过的前端面试题(一)
  • 前端之React实战:创建跨平台的项目架构
  • 如何实现 font-size 的响应式
  • 使用putty远程连接linux
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 找一份好的前端工作,起点很重要
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • #在 README.md 中生成项目目录结构
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (zhuan) 一些RL的文献(及笔记)
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)Windows2003安全设置/维护
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .cfg\.dat\.mak(持续补充)
  • .net解析传过来的xml_DOM4J解析XML文件
  • @拔赤:Web前端开发十日谈
  • [AIGC] Redis基础命令集详细介绍
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured
  • [Android]使用Git将项目提交到GitHub
  • [c]扫雷
  • [C]整形提升(转载)