• 体验 Shifu 解决报错流程


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

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

    Shifu安装方式

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

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

    1. 下载准备好的Shifu安装包(Docker镜像压缩文件)并安装,Shifu会快捷方便的在Docker中运行
    2. 本机安装中:手动安装Shifu所需要的组件如 kubectl ,kind ,再安装 Shifu仓库 。   
      1. # clone Shifu仓库
      2. git clone https://github.com/Edgenesis/shifu.git
      3. cd shifu
      4. # 在集群中安装Shifu
      5. 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服务)

    1. NAMESPACE NAME READY STATUS RESTARTS AGE
    2. kube-system coredns-6d4b75cb6d-gjzmw 1/1 Running 0 34s
    3. kube-system coredns-6d4b75cb6d-rncrk 1/1 Running 0 34s
    4. kube-system etcd-kind-control-plane 1/1 Running 0 49s
    5. kube-system kindnet-t69bx 1/1 Running 0 34s
    6. kube-system kube-apiserver-kind-control-plane 1/1 Running 0 49s
    7. kube-system kube-controller-manager-kind-control-plane 1/1 Running 0 48s
    8. kube-system kube-proxy-7dfvm 1/1 Running 0 34s
    9. kube-system kube-scheduler-kind-control-plane 1/1 Running 0 48s
    10. local-path-storage local-path-provisioner-9cd9bd544-6zgpv 1/1 Running 0 34s
    11. shifu-crd-system shifu-crd-controller-manager-94c8c779d-czvkx 2/2 Running 0 17s

    Shifu使用

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

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

    与AGV交互

    与温度计交互

    与酶标仪交互

    与PLC交互

    与机械臂交互

    与OPC UA设备交互

    与 Socket 设备交互

    与 MQTT 设备交互

    总结:

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

  • 相关阅读:
    C/C++模板类模板与函数模板区别,以及用法详解
    126. SAP UI5 进阶 - JSON 模型字段里的值,显示在最终 UI5 界面上的奥秘分析
    主动调度是如何发生的
    Cobalt Strike(二)使用重定器
    windows server 2016 ftp搭建详细教程
    leetcode61 旋转链表
    NeuralProphet之一:安装与使用
    MySql 数据库【Union、Limit】
    Qt 事件处理机制简介
    字节面试问到CPU的多级缓存架构,诸佬们怎么回答?
  • 原文地址:https://blog.csdn.net/qq_48826531/article/details/127092234