diff --git a/预研项目/KubeEdge.md b/预研项目/KubeEdge.md
new file mode 100644
index 0000000..bf6227f
--- /dev/null
+++ b/预研项目/KubeEdge.md
@@ -0,0 +1,951 @@
+## 概述
+
+为开源产品,构建在Kubernetes之上,并将本机容器化应用程序编排和设备管理扩展到边缘主机。
+
+![KubeEdge Architecture](imgs/KubeEdge/kubeedge_arch.png)
+
+优势:
+
++ 原生支持kubernetes
++ 云边缘可靠协作
++ 边缘自治
++ 边缘设备管理:通过CRD实现的Kubernetes本地api管理边缘设备。
++ 极轻量边缘代理 (EdgeCore)
+
+组件:
+
++ Edged 运行在边缘节点的代理,管理容器化应用程序
++ EdgeHub 管理和云服务交互的web socket客户端。包括同步云端资源到边缘,上报边端主机和设备状态变更到云。
++ CloudHub 在云端运行的websocket服务,监听边端的事件
++ EdgeController: Kubernetes Controller的扩展,管理边缘node和pod元数据
++ EventBus: Mqtt的客户端用于连接Mqtt服务(mosquitto),提供到其他组件的订阅和发布。
++ DeviceTwin:存储设备状态、同步设备状态到云端。并提供应用的查询接口
++ MetaManager:Edged和edgehub之间的消息处理器,它还负责在轻量级数据库(SQLite)中存储/检索元数据。
+
+- [ServiceBus](https://kubeedge.io/en/docs/architecture/edge/servicebus): a HTTP client to interact with HTTP servers (REST), offering HTTP client capabilities to components of cloud to reach HTTP servers running at edge.
+
+
+
+
+
+官网:https://kubeedge.io/en/docs/setup/local/
+
+
+
+Github: https://github.com/kubeedge/kubeedge
+
+
+
+| 术语 | 描述 |
+| ---- | ---- |
+| | |
+
+## 安装
+
+[下载](https://github.com/kubeedge/kubeedge/releases)
+
++ [keadm-v1.7.1-linux-amd64.tar.gz](F:\H\edge) keadm安装文件
++ [kubeedge-v1.7.1-linux-amd64.tar.gz](F:\H\edge) 二进制文件安装
++ [edgesite-v1.7.1-linux-amd64.tar](F:\H\edge)
+
+
+
+### [通过Keadm来安装](https://kubeedge.io/en/docs/setup/keadm/)
+
+keadm 用来安装 KubeEdge 的云和端组件。
+
+#### 云端
+
+需要提前安装kubernetes。
+
+```sh
+keadm init --advertise-address="10.8.30.38"
+```
+
+将在服务器上安装 cloudcore,生成证书并安装CRDs。
+
+获取token,将在添加边缘节点时使用。
+
+```sh
+ keadm gettoken
+```
+
+
+
+#### 边端
+
+```sh
+keadm join --cloudcore-ipport=10.8.30.38:10000 --token=xxxx
+```
+
+将在客户端安装edgecore和mqtt。
+
+
+
+### [通过二进制文件安装](https://kubeedge.io/en/docs/setup/local/)
+
+或者参考https://www.cnblogs.com/kkbill/p/12600541.html
+
+安装环境**准备**:
+
+`Cloud:10.8.30.38`:kubernetes
+
+`Edge:10.8.30.35` : golang docker mqtt
+
+| 系统 | ubuntu 16.04 |
+| :----- | -------------------- |
+| golang | go1.10.4 linux/amd64 |
+| docker | 19.03.12 |
+| k8s | 1.18 |
+
+
+
+准备安装KubeEdnge1.7.1:
+
+将安装文件 `[kubeedge-v1.7.1-linux-amd64.tar.gz] 拷贝到服务器和边缘节点
+
+#### 云端
+
+创建 CRDs
+
+```shell
+kubectl apply -f https://raw.githubusercontent.com/kubeedge/kubeedge/master/build/crds/devices/devices_v1alpha2_device.yaml
+kubectl apply -f https://raw.githubusercontent.com/kubeedge/kubeedge/master/build/crds/devices/devices_v1alpha2_devicemodel.yaml
+kubectl apply -f https://raw.githubusercontent.com/kubeedge/kubeedge/master/build/crds/reliablesyncs/cluster_objectsync_v1alpha1.yaml
+kubectl apply -f https://raw.githubusercontent.com/kubeedge/kubeedge/master/build/crds/reliablesyncs/objectsync_v1alpha1.yaml
+```
+
+创建config文件
+
+```sh
+cloudcore --minconfig > cloudcore.yaml
+```
+
+[配置](https://kubeedge.io/en/docs/setup/config/#configuration-cloud-side-kubeedge-master)
+
+```yaml
+apiVersion: cloudcore.config.kubeedge.io/v1alpha1
+kind: CloudCore
+kubeAPIConfig:
+ kubeConfig: /root/.kube/config
+ master: ""
+modules:
+ cloudHub:
+ advertiseAddress:
+ - 10.8.30.38
+ enable: true
+ https:
+ address: 0.0.0.0
+ enable: true
+ port: 10002
+ nodeLimit: 1000
+ tlsCAFile: /etc/kubeedge/ca/rootCA.crt
+ tlsCAKeyFile: /etc/kubeedge/ca/rootCA.key
+ tlsCertFile: /etc/kubeedge/certs/edge.crt
+ tlsPrivateKeyFile: /etc/kubeedge/certs/edge.key
+ unixsocket:
+ address: unix:///var/lib/kubeedge/kubeedge.sock
+ enable: true
+ websocket:
+ address: 0.0.0.0
+ enable: true
+ port: 10000
+ router:
+ address: 0.0.0.0
+ enable: true
+ port: 9443
+ restTimeout: 60
+
+```
+
+运行
+
+```sh
+cloudcore --config cloudcore.yaml
+```
+
+生成证书
+
+```sh
+ wget https://raw.githubusercontent.com/kubeedge/kubeedge/master/build/tools/certgen.sh
+chmod +x certgen.sh
+./certgen.sh genCertAndKey edge
+
+root@node38:/home/anxin/edge# ls /etc/kubeedge
+ca certs crds
+
+拷贝到边缘节点:
+ scp /etc/kubeedge/ca/rootCA.crt root@node35:/etc/kubeedge/ca/
+ scp /etc/kubeedge/certs/edge.crt root@node35:/etc/kubeedge/certs/
+ scp /etc/kubeedge/certs/edge.key root@node35:/etc/kubeedge/certs/
+```
+
+
+
+获取token (将用于edge配置)
+
+```sh
+kubectl get secret -nkubeedge tokensecret -o json # 找到token 加入到edgecore.yml中
+
+# kubectl get secret -nkubeedge default-token-pdrnq -o=jsonpath='{.data.tokendata}' | base64 -d
+# sed -i -e "s|token: .*|token: ${token}|g" edgecore.yaml
+```
+
+
+
+
+
+#### 边端
+
+> 需要提前安装docker
+
+
+
+初始化配置
+
+```
+./edgecore --minconfig > edgecore.yaml
+./edgecore --defaultconfig > edgecore.yaml
+```
+
+
+
+将云端token配置到edgecore.yaml
+
+```yaml
+# With --minconfig , you can easily used this configurations as reference.
+# It's useful to users who are new to KubeEdge, and you can modify/create your own configs accordingly.
+# This configuration is suitable for beginners.
+
+apiVersion: edgecore.config.kubeedge.io/v1alpha1
+database:
+ dataSource: /var/lib/kubeedge/edgecore.db
+kind: EdgeCore
+modules:
+ edgeHub:
+ enable: true
+ heartbeat: 15
+ httpServer: https://10.8.30.38:10002
+ tlsCaFile: /etc/kubeedge/ca/rootCA.crt
+ tlsCertFile: /etc/kubeedge/certs/server.crt
+ tlsPrivateKeyFile: /etc/kubeedge/certs/server.key
+ token: 5e630e7bf11b00a77a513233e067788e12d36179be1d4b83d804bf77c463781e.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MjYyNDE2ODd9.oRE1mzeRVC7ohsA5KF9QP_EvxE83BSTjP6fuZuVL2Yk
+ websocket:
+ enable: true
+ handshakeTimeout: 30
+ readDeadline: 15
+ server: 10.8.30.38:10000
+ writeDeadline: 15
+ edged:
+ #cgroupDriver: cgroupfs 通过docker info查看本机安装的cgroup-driver
+ cgroupDriver: systemd
+ cgroupRoot: ""
+ cgroupsPerQOS: true
+ clusterDNS: ""
+ clusterDomain: ""
+ devicePluginEnabled: false
+ dockerAddress: unix:///var/run/docker.sock
+ enable: true
+ registerNode: true
+ gpuPluginEnabled: false
+ hostnameOverride: node35
+ nodeIP: 10.8.30.35
+ podSandboxImage: kubeedge/pause:3.1
+ remoteImageEndpoint: unix:///var/run/dockershim.sock
+ remoteRuntimeEndpoint: unix:///var/run/dockershim.sock
+ runtimeType: docker
+ eventBus:
+ enable: true
+ mqttMode: 2
+ mqttQOS: 0
+ mqttRetain: false
+ mqttServerExternal: tcp://127.0.0.1:1883
+ mqttServerInternal: tcp://127.0.0.1:1884
+```
+
+
+
+启动
+
+```shell
+edgecore --config edgecore.yaml
+```
+
+启动后 docker ps:
+
+![image-20210713140207317](imgs/KubeEdge/image-20210713140207317.png)
+
+
+
+在cloud端查看
+
+```sh
+root@node38:/home/anxin# kubectl get no
+NAME STATUS ROLES AGE VERSION
+node35 Ready agent,edge 334d v1.19.3-kubeedge-v1.7.1
+node37 Ready 334d v1.18.6
+node38 Ready master 334d v1.18.6
+```
+
+
+
+
+
+##### 常见报错
+
+1. Error: token credentials are in the wrong format
+
+ ```sh
+ 配置的token格式不对,从cloud端拿到的是base64,需要取解密后字符串、
+ ```
+
+2. cgroup-driver
+
+ 需要通过docker info命令查看自己安装的docker的cgroup-driver,然后修改配置文件中的cgroup-driver
+
+3. 无法访问平台侧的证书文件
+ F0709 14:54:31.063677 3153 certmanager.go:92] Error: failed to get edge certificate from the cloudcore, error: Get "https://10.8.30.38:10002/edge.crt": x509: cannot validate certificate for 10.8.30.38 because it doesn't contain any IP SANs
+
+```shell
+I0709 15:27:42.098408 14300 server.go:243] Ca and CaKey don't exist in local directory, and will read from the secret
+I0709 15:27:42.103401 14300 server.go:288] CloudCoreCert and key don't exist in local directory, and will read from the secret
+```
+
+**解决方法**:
+
+删除原来的配置
+
+```shell
+kubectl delete secret casecret -nkubeedge
+kubectl delete secret cloudcoresecret -nkubeedge
+# both cloud and edge side
+mv /etc/kubeedge/ca /etc/kubeedge/ca.bak
+mv /etc/kubeedge/certs /etc/kubeedge/certs.bak
+```
+
+
+
+执行: ./certgen.sh genCertAndKey edge
+
+新问题:
+
+`Can't load /root/.rnd` (第一次生成的时候可能就错在这里)
+
+```shell
+cd /root
+
+openssl rand -writerand .rnd
+```
+
+
+
+### 在Raspberry Pi 上安装
+
+#### 安装Lite系统
+
+https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2021-05-28/2021-05-07-raspios-buster-armhf-lite.zip
+
+设置网络
+
+```shell
+interface eth0
+static ip_address=10.8.30.197/24
+static routers=10.8.30.1
+static domain_name_servers=114.114.114.114 223.5.5.5 223.6.6.6
+
+#设置密码
+passwd pi
+
+PasswordAuthentication yes
+
+systemctl enable ssh
+```
+
+安装mosquitto
+
+```shell
+wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
+
+sudo apt-key add mosquitto-repo.gpg.key
+
+# sudo wget -P /etc/apt/sources.list.d/ http://repo.mosquitto.org/debian/mosquitto-jessie.list
+# sudo wget -P /etc/apt/sources.list.d/ http://repo.mosquitto.org/debian/mosquitto-stretch.list
+sudo wget -P /etc/apt/sources.list.d/ http://repo.mosquitto.org/debian/mosquitto-buster.list
+
+apt-get update
+
+apt-get install mosquitto
+
+systemctl status mosquitto
+```
+
+
+
+#### [安装docker](https://peppe8o.com/setup-a-docker-environment-with-raspberry-pi-os-lite-and-portainer/)
+
+
+
+```shell
+sudo apt-get update && sudo apt-get upgrade
+
+curl -fsSL https://get.docker.com -o get-docker.sh
+
+sudo sh get-docker.sh
+
+sudo docker version
+
+sudo docker run hello-world
+
+sudo usermod -aG docker pi
+
+```
+
+
+
+
+
+#### [安装containerd](https://docs.docker.com/engine/install/debian/)
+
+[Setting different container runtime with CRI](https://docs.kubeedge.io/en/docs/advanced/cri/)
+
+
+
+修改`/etc/apt/sources.list`
+
+```shell
+deb http://mirrors.163.com/raspbian/raspbian/ buster main contrib non-free rpi
+# Uncomment line below then 'apt-get update' to enable 'apt-get source'
+#deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
+```
+
+安装
+
+```shell
+ sudo apt-get update
+ sudo apt-get install \
+ apt-transport-https \
+ ca-certificates \
+ curl \
+ gnupg \
+ lsb-release
+
+curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
+
+ echo \
+ "deb [arch=armhf signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
+ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
+
+ sudo apt-get update
+ sudo apt-get install containerd.io
+```
+
+
+
+```shell
+# Configure containerd
+mkdir -p /etc/containerd
+containerd config default > /etc/containerd/config.toml
+
+# Restart containerd
+systemctl restart containerd
+```
+
+
+
+安装golang
+
+```shell
+sudo apt update
+sudo apt full-upgrade
+
+wget https://dl.google.com/go/go1.16.6.linux-armv6l.tar.gz -O go.tar.gz
+
+```
+
+
+
+
+
+#### 配置运行EdgeCore
+
+配置EdgeCore.yaml支持containerd.。 默认cgroup 配置是 cgroupfs。
+
+```yaml
+remoteRuntimeEndpoint: unix:///var/run/containerd/containerd.sock
+remoteImageEndpoint: unix:///var/run/containerd/containerd.sock
+runtimeRequestTimeout: 2
+podSandboxImage: k8s.gcr.io/pause:3.2
+runtimeType: remote
+```
+
+配置
+
+```yaml
+
+```
+
+启动:
+
+![image-20210721161810471](imgs/KubeEdge/image-20210721161810471.png)
+
+问题
+
+1. Cgroup subsystem not mounted:[memory]
+
+ ```shell
+ Following Cgroup subsystem not mounted: [memory]
+ ```
+
+ https://zhuanlan.zhihu.com/p/384443481
+
+ ```shell
+ #解决问题
+ #修改/boot/cmdline.txt
+ sudo vim /boot/cmdline.txt
+ cgroup_enable=memory cgroup_memory=1
+ 添加在同一行的最后面,接着内容后空格后添加, 注意:不要换行添加
+
+ #重启机器配置生效
+ reboot
+ ```
+
+2.
+
+
+
+## 配置
+
+### 云端
+
+设置边缘端自动注册 modules.edged.registerNode=true。 或者使用[手动注册](https://kubeedge.io/en/docs/setup/config/)。
+
+
+
+### 边端
+
+#### 设置基础镜像:
+
+```sh
+modules.edged.podSandboxImage
+```
+
+检查机器架构:
+
+```shell
+getconf LONG_BIT
+```
+
++ `kubeedge/pause-arm:3.1` **for** arm arch
++ `kubeedge/pause-arm64:3.1` **for** arm64 arch
++ `kubeedge/pause:3.1` **for** x86 arch
+
+#### 容器运行时
+
+```yaml
+runtimeType: docker
+```
+
+or
+
+```yaml
+runtimeType: remote
+```
+
+#### MQTT模式
+
+MQTT用于DeviceTwin和Devices之间的通信,支持3中MQTT模式:
+
+0 internalMqttMode 内部MQTT代理使能
+
+1 bothMqttMonde 内部和外部MQTT代理均使能
+
+2 externalMqttMode 外部代理使能
+
+
+
+
+
+## EdgeMesh
+
+云端和边缘之间发生网络问题,集成EdgeMesh 支持DNS访问
+
+```shell
+grep hosts /etc/nsswitch.conf
+hosts: dns file mdns4_minimal # 确保dns在第一位
+```
+
+**IP Forward**设置
+
+```shell
+$ sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
+$ sudo sysctl -p
+#check
+$ sudo sysctl -p | grep ip_forward
+net.ipv4.ip_forward = 1
+```
+
+部署一个nginx例子
+
+```yaml
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: nginx-deployment
+ labels:
+ app: nginx
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: nginx
+ template:
+ metadata:
+ labels:
+ app: nginx
+ spec:
+ containers:
+ - name: nginx
+ image: nginx
+ ports:
+ - containerPort: 80
+ hostPort: 8050
+```
+
+`kubeclt apply -f pod-nginx.yaml`
+
+![image-20210713171944426](imgs/KubeEdge/image-20210713171944426.png)
+
+按照官网例子访问容器ip curl 10.0.35.3:8050,无法访问,直接访问http://10.8.30.35:8050 可以。
+
+创建一个服务:
+
+```yaml
+apiVersion: v1
+kind: Service
+metadata:
+ name: nginx-svc
+ namespace: default
+spec:
+ clusterIP: None
+ selector:
+ app: nginx
+ ports:
+ - name: http-0
+ port: 18050
+ protocol: TCP
+ targetPort: 80
+```
+
+![image-20210713174342754](imgs/KubeEdge/image-20210713174342754.png)
+
+在边缘端访问: `..svc..:`
+
+curl http://nginx-svc.default.svc.cluster.local:18050
+
+
+
+## 开发指南
+
+### Device Model 设备原型
+
+KubeEdge支持通过Kubernetes CRDS,以及Device Mapper进行设备管理
+
+```yaml
+apiVersion: devices.kubeedge.io/v1alpha2
+kind: DeviceModel
+metadata:
+ name: sensor-tag-model
+ namespace: default
+spec:
+ properties:
+ - name: temperature
+ description: temperature in degree celsius
+ type:
+ int:
+ accessMode: ReadWrite
+ maximum: 100
+ unit: degree celsius
+ - name: temperature-enable
+ description: enable data collection of temperature sensor
+ type:
+ string:
+ accessMode: ReadWrite
+ defaultValue: 'OFF'
+```
+
+### Device Instance
+
+```yaml
+apiVersion: devices.kubeedge.io/v1alpha2
+kind: Device
+metadata:
+ name: sensor-tag-instance-01
+ labels:
+ description: TISimplelinkSensorTag
+ manufacturer: TexasInstruments
+ model: CC2650
+spec:
+ deviceModelRef:
+ name: sensor-tag-model
+ protocol:
+ modbus:
+ slaveID: 1
+ common:
+ com:
+ serialPort: '1'
+ baudRate: 115200
+ dataBits: 8
+ parity: even
+ stopBits: 1
+ customizedValues: # 自定义属性值
+ def1: def1-val
+ def2: def2-val
+ nodeSelector:
+ nodeSelectorTerms:
+ - matchExpressions:
+ - key: ''
+ operator: In
+ values:
+ - node1
+ propertyVisitors:
+ - propertyName: temperature
+ modbus:
+ register: CoilRegister
+ offset: 2
+ limit: 1
+ scale: 1
+ isSwap: true
+ isRegisterSwap: true
+ - propertyName: temperature-enable
+ modbus:
+ register: DiscreteInputRegister
+ offset: 3
+ limit: 1
+ scale: 1.0
+ isSwap: true
+ isRegisterSwap: true
+ - propertyName: temperature # 自定义协议写法
+ collectCycle: 500000000
+ reportCycle: 1000000000
+ customizedProtocol:
+ protocolName: MY-TEST-PROTOCOL
+ configData:
+ def1: def1-val
+ def2: def2-val
+ def3:
+ innerDef1: idef-val
+status:
+ twins:
+ - propertyName: temperature
+ reported:
+ metadata:
+ timestamp: '1550049403598'
+ type: int
+ value: '10'
+ desired:
+ metadata:
+ timestamp: '1550049403598'
+ type: int
+ value: '15'
+data: # 定义通过mappers上报到边缘端MQTT代理的一系列时序属性
+ dataTopic: "$ke/events/device/+/data/update"
+ dataProperties:
+ - propertyName: pressure
+ metadata:
+ type: int
+ - propertyName: temperature
+ metadata:
+ type: int
+```
+
+### Device Mapper
+
+是连接和控制设备的应用程序,包含功能:
+
+1) 扫描和连接设备
+
+2) 报告设备孪生属性( twin-attributes)的真实状态
+
+3) 转换预期状态到真实状态
+
+4) 采集遥感数据
+
+5) 将设备的读取转换成KubeEdge可以接受的格式
+
+6) 安排设备上的动作(schedule)
+
+7) 检查设备的健康状态
+
+![img](imgs/KubeEdge/mapper-design.png)
+
+### 创建步骤
+
+1. kubectl apply -f
+2. kubectl apply -f
+3. 执行基于指定协议的mapper程序
+4. 改变设备实例yaml中的状态段,应用改变将影响边缘端,通过设备控制和设备孪生组件(DeviceController和DeviceTwin)
+5. 边缘端的mapper进程上报设备孪生的数据,并通过DeviceController同步回云端。
+
+
+
+### Router Manager 路由管理
+
+通过CRDs和Router模块,基于mqtt,实现云边消息通信。 控制用户数据的传输,一次传输的大小不超过12M。
+
+使用场景:
+
++ 通过云端api发布自定义消息,最终到达终端mqtt代理
++ 边缘发布消息到mqtt代理,最终通过RESTApi返回云端
++ 通过云端api发布自定义消息,最终调用边缘rest api传送消息
+
+#### 规则的定义
+
+RuleEndpoint 和 Rule Definition:
+
++ RuleEndpoint 定义消息从哪里来的、或到哪里去,包括3中类型
+ + rest
+ + eventbus (MQTT)
+ + servicebus (边缘端的Rest Api应用)
++ Rule 定义从源Endpoint到目标Endpoint消息传输的方式,包含3中类型:
+ + rest->eventbus : cloud api --> edge mqtt
+ + eventbus->rest: edge mqtt --> cloud api
+ + rest->servicebus: cloud api --> user's app
+
+RuleEndpoint定义
+
+```yaml
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ name: ruleendpoints.rules.kubeedge.io
+spec:
+ group: rules.kubeedge.io
+ versions:
+ - name: v1
+ served: true
+ storage: true
+ schema:
+ openAPIV3Schema:
+ type: object
+ properties:
+ spec:
+ type: object
+ properties:
+ ruleEndpointType:
+ type: rest/eventbus/servicebus
+ required:
+ - ruleEndpointType
+ scope: Namespaced
+ names:
+ plural: ruleendpoints
+ singular: ruleendpoint
+ kind: RuleEndpoint
+ shortNames:
+ - re
+```
+
+Rule定义:
+
+```yaml
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ name: rules.rules.kubeedge.io
+spec:
+ group: rules.kubeedge.io
+ versions:
+ - name: v1
+ served: true
+ storage: true
+ schema:
+ openAPIV3Schema:
+ type: object
+ properties:
+ spec:
+ type: object
+ properties:
+ source:
+ type: string
+ value: my-rest
+ sourceResource:
+ description: {"path":"/a/b"} 或 {"topic":"","node_name":"edge-node"}
+ type: object
+ additionalProperties:
+ type: string
+ target:
+ type: string
+ value: my-eventbus
+ targetResource:
+ description: {"topic":"/test"}
+ type: object
+ additionalProperties:
+ type: string
+ required:
+ - source
+ - sourceResource
+ - target
+ - targetResource
+ status:
+ type: object
+ properties:
+ successMessages:
+ type: integer
+ failMessages:
+ type: integer
+ errors:
+ items:
+ type: string
+ type: array
+ scope: Namespaced
+ names:
+ plural: rules
+ singular: rule
+ kind: Rule
+```
+
+
+
+### [发消息的步骤](https://docs.kubeedge.io/en/docs/developer/custom_message_deliver/)
+
+以rest->eventbus 模式举例
+
+1. 云端配置 router模块使能
+
+2. 创建ruleEndpoint
+
+3. 创建rule
+
+ ```yaml
+ apiVersion: rules.kubeedge.io/v1
+ kind: Rule
+ metadata:
+ name: my-rule
+ labels:
+ description: test
+ spec:
+ source: "my-rest"
+ sourceResource: {"path":"/test"}
+ target: "my-eventbus"
+ targetResource: {"topic":"test"}
+ ```
+
+4. 云端调用api接口发送消息
+
+ ```shell
+ POST
+ http://{cloudcore_ip}:9443/{node_name}/{namespace}/{path}
+ ```
+
+
+
+5. 边缘订阅
+
+ ```shell
+ mosquitto_sub -t 'test' -d
+ ```
+
+
+
+MORE:
+
+人工智能、数字孪生、边缘计算、量子计算、沉浸式技术、区块链、智能空间、5G
\ No newline at end of file
diff --git a/预研项目/imgs/KubeEdge/avatar_hu6dd63758e9c8a7a1da773a2d4193fd13_641557_250x250_fill_box_center_2.png b/预研项目/imgs/KubeEdge/avatar_hu6dd63758e9c8a7a1da773a2d4193fd13_641557_250x250_fill_box_center_2.png
new file mode 100644
index 0000000..bcebbe5
Binary files /dev/null and b/预研项目/imgs/KubeEdge/avatar_hu6dd63758e9c8a7a1da773a2d4193fd13_641557_250x250_fill_box_center_2.png differ
diff --git a/预研项目/imgs/KubeEdge/image-20210709140821500.png b/预研项目/imgs/KubeEdge/image-20210709140821500.png
new file mode 100644
index 0000000..d1878fd
Binary files /dev/null and b/预研项目/imgs/KubeEdge/image-20210709140821500.png differ
diff --git a/预研项目/imgs/KubeEdge/image-20210713140207317.png b/预研项目/imgs/KubeEdge/image-20210713140207317.png
new file mode 100644
index 0000000..4a2ac87
Binary files /dev/null and b/预研项目/imgs/KubeEdge/image-20210713140207317.png differ
diff --git a/预研项目/imgs/KubeEdge/image-20210713171944426.png b/预研项目/imgs/KubeEdge/image-20210713171944426.png
new file mode 100644
index 0000000..ac367c6
Binary files /dev/null and b/预研项目/imgs/KubeEdge/image-20210713171944426.png differ
diff --git a/预研项目/imgs/KubeEdge/image-20210713174342754.png b/预研项目/imgs/KubeEdge/image-20210713174342754.png
new file mode 100644
index 0000000..7e2d4bc
Binary files /dev/null and b/预研项目/imgs/KubeEdge/image-20210713174342754.png differ
diff --git a/预研项目/imgs/KubeEdge/image-20210721161810471.png b/预研项目/imgs/KubeEdge/image-20210721161810471.png
new file mode 100644
index 0000000..40e77c2
Binary files /dev/null and b/预研项目/imgs/KubeEdge/image-20210721161810471.png differ
diff --git a/预研项目/imgs/边缘计算/kubeedge_arch.png b/预研项目/imgs/KubeEdge/kubeedge_arch.png
similarity index 100%
rename from 预研项目/imgs/边缘计算/kubeedge_arch.png
rename to 预研项目/imgs/KubeEdge/kubeedge_arch.png
diff --git a/预研项目/imgs/KubeEdge/mapper-design.png b/预研项目/imgs/KubeEdge/mapper-design.png
new file mode 100644
index 0000000..8b17c50
Binary files /dev/null and b/预研项目/imgs/KubeEdge/mapper-design.png differ
diff --git a/预研项目/imgs/KubeEdge/raspberry-pi-docker-portainer-featured-image.jpg b/预研项目/imgs/KubeEdge/raspberry-pi-docker-portainer-featured-image.jpg
new file mode 100644
index 0000000..3edf410
Binary files /dev/null and b/预研项目/imgs/KubeEdge/raspberry-pi-docker-portainer-featured-image.jpg differ
diff --git a/预研项目/imgs/电信/201909241439244.png b/预研项目/imgs/电信/201909241439244.png
deleted file mode 100644
index 9dbf3ee..0000000
Binary files a/预研项目/imgs/电信/201909241439244.png and /dev/null differ
diff --git a/预研项目/imgs/电信/20190924145122616.png b/预研项目/imgs/电信/20190924145122616.png
deleted file mode 100644
index 3bb1b23..0000000
Binary files a/预研项目/imgs/电信/20190924145122616.png and /dev/null differ
diff --git a/预研项目/imgs/电信/20190924172317914.png b/预研项目/imgs/电信/20190924172317914.png
deleted file mode 100644
index e4d403e..0000000
Binary files a/预研项目/imgs/电信/20190924172317914.png and /dev/null differ
diff --git a/预研项目/imgs/电信/20190924172357843.png b/预研项目/imgs/电信/20190924172357843.png
deleted file mode 100644
index a694112..0000000
Binary files a/预研项目/imgs/电信/20190924172357843.png and /dev/null differ
diff --git a/预研项目/imgs/电信/20190924172953170.png b/预研项目/imgs/电信/20190924172953170.png
deleted file mode 100644
index 5ad38e8..0000000
Binary files a/预研项目/imgs/电信/20190924172953170.png and /dev/null differ
diff --git a/预研项目/imgs/电信/20190924173058343.png b/预研项目/imgs/电信/20190924173058343.png
deleted file mode 100644
index 65a2abb..0000000
Binary files a/预研项目/imgs/电信/20190924173058343.png and /dev/null differ
diff --git a/预研项目/imgs/电信/20190924223557381.png b/预研项目/imgs/电信/20190924223557381.png
deleted file mode 100644
index b3d66a4..0000000
Binary files a/预研项目/imgs/电信/20190924223557381.png and /dev/null differ
diff --git a/预研项目/imgs/电信/20190924225150819.png b/预研项目/imgs/电信/20190924225150819.png
deleted file mode 100644
index bdaf2df..0000000
Binary files a/预研项目/imgs/电信/20190924225150819.png and /dev/null differ
diff --git a/预研项目/imgs/电信/2019092422554558.png b/预研项目/imgs/电信/2019092422554558.png
deleted file mode 100644
index a1a3bf6..0000000
Binary files a/预研项目/imgs/电信/2019092422554558.png and /dev/null differ
diff --git a/预研项目/imgs/电信/20190925161930203.png b/预研项目/imgs/电信/20190925161930203.png
deleted file mode 100644
index 0d7795e..0000000
Binary files a/预研项目/imgs/电信/20190925161930203.png and /dev/null differ
diff --git a/预研项目/imgs/电信/image-20210706092226285.png b/预研项目/imgs/电信/image-20210706092226285.png
deleted file mode 100644
index 066592a..0000000
Binary files a/预研项目/imgs/电信/image-20210706092226285.png and /dev/null differ
diff --git a/预研项目/imgs/电信/image-20210706092710328.png b/预研项目/imgs/电信/image-20210706092710328.png
deleted file mode 100644
index 162b344..0000000
Binary files a/预研项目/imgs/电信/image-20210706092710328.png and /dev/null differ
diff --git a/预研项目/imgs/边缘计算/150255_C2zj_4252687.png b/预研项目/imgs/边缘计算/150255_C2zj_4252687.png
deleted file mode 100644
index 5aeebfb..0000000
Binary files a/预研项目/imgs/边缘计算/150255_C2zj_4252687.png and /dev/null differ
diff --git a/预研项目/imgs/边缘计算/20190725205621760.png b/预研项目/imgs/边缘计算/20190725205621760.png
deleted file mode 100644
index c42bc16..0000000
Binary files a/预研项目/imgs/边缘计算/20190725205621760.png and /dev/null differ
diff --git a/预研项目/imgs/边缘计算/20190924221143436.png b/预研项目/imgs/边缘计算/20190924221143436.png
deleted file mode 100644
index 4fdc148..0000000
Binary files a/预研项目/imgs/边缘计算/20190924221143436.png and /dev/null differ
diff --git a/预研项目/imgs/边缘计算/20190924222418278.png b/预研项目/imgs/边缘计算/20190924222418278.png
deleted file mode 100644
index 264a9dc..0000000
Binary files a/预研项目/imgs/边缘计算/20190924222418278.png and /dev/null differ
diff --git a/预研项目/imgs/边缘计算/20190924222656416.png b/预研项目/imgs/边缘计算/20190924222656416.png
deleted file mode 100644
index 376d2a6..0000000
Binary files a/预研项目/imgs/边缘计算/20190924222656416.png and /dev/null differ
diff --git a/预研项目/imgs/边缘计算/20190924222722135.png b/预研项目/imgs/边缘计算/20190924222722135.png
deleted file mode 100644
index 3f2fe92..0000000
Binary files a/预研项目/imgs/边缘计算/20190924222722135.png and /dev/null differ
diff --git a/预研项目/imgs/边缘计算/20190925161930203.png b/预研项目/imgs/边缘计算/20190925161930203.png
deleted file mode 100644
index 0d7795e..0000000
Binary files a/预研项目/imgs/边缘计算/20190925161930203.png and /dev/null differ
diff --git a/预研项目/imgs/边缘计算/20191127104017475.png b/预研项目/imgs/边缘计算/20191127104017475.png
deleted file mode 100644
index 46488fc..0000000
Binary files a/预研项目/imgs/边缘计算/20191127104017475.png and /dev/null differ
diff --git a/预研项目/imgs/边缘计算/22151946_VNrY.png b/预研项目/imgs/边缘计算/22151946_VNrY.png
deleted file mode 100644
index 7c44cad..0000000
Binary files a/预研项目/imgs/边缘计算/22151946_VNrY.png and /dev/null differ
diff --git a/预研项目/imgs/边缘计算/305203772e4c8ce1593436aaa4d71c56.png b/预研项目/imgs/边缘计算/305203772e4c8ce1593436aaa4d71c56.png
deleted file mode 100644
index d87a52c..0000000
Binary files a/预研项目/imgs/边缘计算/305203772e4c8ce1593436aaa4d71c56.png and /dev/null differ
diff --git a/预研项目/imgs/边缘计算/31154627_k7Ii.png b/预研项目/imgs/边缘计算/31154627_k7Ii.png
deleted file mode 100644
index 2881e96..0000000
Binary files a/预研项目/imgs/边缘计算/31154627_k7Ii.png and /dev/null differ
diff --git a/预研项目/imgs/边缘计算/82778d252e384026ae04de63743a82c7.png b/预研项目/imgs/边缘计算/82778d252e384026ae04de63743a82c7.png
deleted file mode 100644
index a61bac9..0000000
Binary files a/预研项目/imgs/边缘计算/82778d252e384026ae04de63743a82c7.png and /dev/null differ
diff --git a/预研项目/imgs/边缘计算/Akranio-1-1.png b/预研项目/imgs/边缘计算/Akranio-1-1.png
deleted file mode 100644
index 7ad2976..0000000
Binary files a/预研项目/imgs/边缘计算/Akranio-1-1.png and /dev/null differ
diff --git a/预研项目/imgs/边缘计算/EdgeX_architecture.png b/预研项目/imgs/边缘计算/EdgeX_architecture.png
deleted file mode 100644
index f87eb65..0000000
Binary files a/预研项目/imgs/边缘计算/EdgeX_architecture.png and /dev/null differ
diff --git a/预研项目/imgs/边缘计算/EdgeX_octopus.png b/预研项目/imgs/边缘计算/EdgeX_octopus.png
deleted file mode 100644
index 7dc5e88..0000000
Binary files a/预研项目/imgs/边缘计算/EdgeX_octopus.png and /dev/null differ
diff --git a/预研项目/imgs/边缘计算/c65cb67aaf03cd7daa610097e19f05a2.png b/预研项目/imgs/边缘计算/c65cb67aaf03cd7daa610097e19f05a2.png
deleted file mode 100644
index 1320bb5..0000000
Binary files a/预研项目/imgs/边缘计算/c65cb67aaf03cd7daa610097e19f05a2.png and /dev/null differ
diff --git a/预研项目/imgs/边缘计算/how-it-works-k3s.svg b/预研项目/imgs/边缘计算/how-it-works-k3s.svg
deleted file mode 100644
index 5c7b77d..0000000
--- a/预研项目/imgs/边缘计算/how-it-works-k3s.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/预研项目/imgs/边缘计算/image-20210705170403630.png b/预研项目/imgs/边缘计算/image-20210705170403630.png
deleted file mode 100644
index 9dc009e..0000000
Binary files a/预研项目/imgs/边缘计算/image-20210705170403630.png and /dev/null differ
diff --git a/预研项目/imgs/边缘计算/image-20210706092226285.png b/预研项目/imgs/边缘计算/image-20210706092226285.png
deleted file mode 100644
index 066592a..0000000
Binary files a/预研项目/imgs/边缘计算/image-20210706092226285.png and /dev/null differ
diff --git a/预研项目/imgs/边缘计算/image-20210706154642416.png b/预研项目/imgs/边缘计算/image-20210706154642416.png
deleted file mode 100644
index f60f529..0000000
Binary files a/预研项目/imgs/边缘计算/image-20210706154642416.png and /dev/null differ
diff --git a/预研项目/imgs/边缘计算/v2-5f1c5796554660c2631724153cff8de2_720w.jpg b/预研项目/imgs/边缘计算/v2-5f1c5796554660c2631724153cff8de2_720w.jpg
deleted file mode 100644
index db2135c..0000000
Binary files a/预研项目/imgs/边缘计算/v2-5f1c5796554660c2631724153cff8de2_720w.jpg and /dev/null differ