【青椒课堂】工业物联网环境构建

在这里插入图片描述


此文案仅是本人在参加相关比赛过程中的总结感悟,作为本人学习所用,不具有其他任何行为

任务一:环境构建

模块说明:
部署OpenYurt,构建边缘计算云原生基础设施,实现边缘节点的自动发现与管理,使用命令检查部署状态,确保云边协同正常运行。

注意:主机名分别为k8s-master01、yurt-edge01、yurt-edge02

操作环境:
IoT5G-master01、IoT5G-edge01、IoT5G-edge02

在这里插入图片描述
配置环境前需要将各节点的虚拟环境全部启动,配合MobaXterm进行SSH的连接,
在这里插入图片描述
在这里插入图片描述
公网IP、内网IP和密码均可在虚拟机中查找到
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
连接成功后分别对应master01、edge01、edge02
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
一切准备就绪即可开始配置操作

1、配置hosts文件

设置云、边节点的/etc/hosts文件;
1.1配置各节点hosts文件,更新对应节点IP及主机名信息(分别为k8s-master01、yurt-edge01、yurt-edge02),查看节点之间通信情况

首先分别在k8s-master01、yurt-edge01、yurt-edge02中输入下面命令查看结点第一行内容

tail -n 1 /etc/hosts

并用记事本将内容保存下来
在这里插入图片描述
以master01为例,接着输入以下命令

vim /etc/hosts

进入各个节点中添加另外两个节点的内容
在这里插入图片描述
在这里插入图片描述
同理,在edge01和edge02中进行相同的操作,配置完节点后点击立即验证,结束后进入下一个模块继续操作
在这里插入图片描述


任务二、初始化OpenYurt集群

1、安装k8s control plane

使用脚本安装k8s control plane

1.1云节点上已内置脚本自动安装k8s control plane,查看脚本运行情况

云节点开机后,会自动运行脚本,在云节点上自动安装k8s control plane,直接查看脚本是否运行完成。

操作环境:
IoT5G-master01

1.2云节点查看node状态

查看云节点k8s-master01状态

操作环境:
IoT5G-master01

1.3云节点查看所有的pods状态

云节点查看所有的pods状态

操作环境:
IoT5G-master01、IoT5G-master01、IoT5G-master01

这里使用以下命令使用内置的脚本文件

tail -f /root/init_phase.txt

显示结果
在这里插入图片描述
接着直接点击立即验证即可直接完成,因为内置的脚本文件里面封装了很多步骤,已经帮我们完成了工作
在这里插入图片描述

2、安装yurt-manager

云节点上安装OpenYurt管控组件yurt-manager
2.1在云节点基于k8s control plane安装yurt-manager,并将安装过程的日志写入文件install_openyurt_manager.log

脚本文件:/data/script/install_openyurt_manager_.sh (注意脚本版本号信息可能会有不同,以实际名称为准)
日志文件:/data/logs/install_openyurt_manager.log
安装命令:nohup ./install_openyurt_manager_
.sh > /data/logs/install_openyurt_manager.log 2>&1 &
时间参考:脚本运行时间大概三四分钟(为后台执行,可继续进行后续工作)

其他参考:

# 进入/data/script/目录下
cd /data/script/
# 查看当前文件
ls 
# 或者查找文件名 ,具体以实际为准
ls  | grep install_openyurt_manager*

操作环境:
IoT5G-master01

2.2后台自动监控执行脚本运行进度

后台自动监控执行脚本运行进度

操作环境:
IoT5G-master01

2.3云节点查看所有的pods状态
查看k8s-master01上pods状态,重点pod参考如下:

root@k8s-master01:~# kubectl get pods -A
NAMESPACE      NAME                                   READY   STATUS    RESTARTS      AGE
kube-system    yurt-manager-5c7b9ff946-jk7kk          1/1     Running   3 (57m ago)   59m
......

操作环境:
IoT5G-master01、IoT5G-master01、IoT5G-master01


此时在在master01的窗口上方复制一个新的窗口进行操作
在这里插入图片描述
使用以下命令可以查看当前的节点状态

kubectl get nodes

显示结果
在这里插入图片描述
也可以使用下面命令查看pod的状态

kubectl get pods -A

显示结果
在这里插入图片描述
然后接下来进行yurt-manager的安装,使用下面命令进入/data/script/的脚本里面

cd /data/script/

在这里插入图片描述
可以先查看这个脚本里面的内容,可以看到有install_openyurt_manager_v5.sh*这样的一个脚本

在这里插入图片描述
然后执行下面的命令把install_openyurt_manager_v5.sh这个脚本的执行信息写入到/data/logs/install_openyurt_manager.log文件中

./install_openyurt_manager_v5.sh > /data/logs/install_openyurt_manager.log

在这里插入图片描述
这个脚本会持续保持运行状态不用管它,然后回到第一个窗口,发现新增了一个执行信息,然后等待结束运行的脚本信息出现后就可以了
在这里插入图片描述
在这里插入图片描述
好的,此时结束运行的脚本信息已经出现,表示执行完成了,然后再复制一个master01的窗口,使用kubectl get pods -A查看pod状态
在这里插入图片描述
查看完状态即可回到平台来进行验证
在这里插入图片描述

3、OpenYurt边节点加入集群

将2个边节点加入到OpenYurt集群

  • 注意:边1 边2执行脚本时,需要传入master主机密码(以实际密码为准),用于边节点访问云节点
  • 运行脚本后,当前窗口不要再做任何操作;包括提示输入密码时,脚本也会自动填充密码,不要人工输入密码。
  • 以边1操作为例,代码参考如下:
# 进入脚本目录
root@yurt-edge01:~# cd /data/script

# 查看k8s-master01节点的root密码随机,此处以密码为此演示:VCtYS9aA#dB (以实际密码为准)
# 运行脚本,将边1节点作为边加入到`OpenYurt`集群中;同时,日志打印到文件yurtadm_join.log
# k8s-master01节点的root密码作为脚本的唯一参数
root@yurt-edge01:/data/script# ./yurtadm_join_edge01_*.sh VCtYS9aA#dB > /data/logs/yurtadm_join.log

3.1在边1节点edge01上运行脚本,将其作为"边"加入到OpenYurt集群中,并将运行日志打印到文件yurtadm_join.log

脚本文件:/data/script/yurtadm_join_edge01_*.sh (注意以实际文件名为准)
日志文件:/data/logs/yurtadm_join.log
命令参考:nohup ./yurtadm_join_edge01_v4.sh ‘eJU1758k@pD’ > /data/logs/yurtadm_join.log 2>&1 & (注意脚本执行路径)
注意事项:执行脚本时,需要传入master主机密码(这里示例为 eJU1758k@pD,以实际密码为准),用于边节点访问云节点。
时间参考:脚本运行时间大概1-2分钟

操作环境:
IoT5G-edge01

3.2边1节点edge01后台自动监控执行脚本运行进度

边1节点edge01后台自动监控执行脚本运行进度

操作环境:
IoT5G-edge01

3.3云节点上查看所有的节点状态(检查边1是否正常加入集群)

云节点上查看所有的节点状态(检查边1是否正常加入集群)

操作环境:
IoT5G-master01

3.4云节点查看所有的pods状态

云节点查看所有的pods状态

# 边1节点部分pod参考
kube-system    raven-agent-ds-wcnz6                   1/1     Running   0             8m34s
kube-system    yurt-hub-yurt-edge01                   1/1     Running   1             7m16s

操作环境:
IoT5G-master01、IoT5G-master01、IoT5G-master01

3.5在边2节点edge02上运行脚本,将其作为"边"加入到OpenYurt集群中,并将运行日志打印到文件yurtadm_join.log

脚本文件:/data/script/yurtadm_join_edge02_*.sh (注意以实际文件名为准)
日志文件:/data/logs/yurtadm_join.log
命令参考:nohup ./yurtadm_join_edge02_v5.sh ‘eJU1758k@pD’ > /data/logs/yurtadm_join.log 2>&1 & (注意脚本执行路径)
注意事项:执行脚本时,需要传入master主机密码(这里示例为 eJU1758k@pD,以实际密码为准),用于边节点访问云节点。
时间参考:脚本运行时间大概1-2分钟

操作环境:
IoT5G-edge02

3.6后台自动监控执行脚本运行进度

在边2节点edge02后台自动监控执行脚本运行进度

操作环境:
IoT5G-edge02

3.7云节点上查看所有的节点状态(检查边2是否正常加入集群)

云节点上查看所有的节点状态(检查边2是否正常加入集群)

操作环境:
IoT5G-master01

3.8云节点查看所有的pods状态

云节点查看所有的pods状态

# 查看节点上pods状态
root@k8s-master01:~# kubectl get pods -A -o wide 
NAMESPACE      NAME                                   READY   STATUS    RESTARTS       AGE     IP              NODE           NOMINATED NODE   READINESS GATES
kube-system    yurt-hub-yurt-edge02                   1/1     Running   1              4m24s   172.18.6.127    yurt-edge02    <none>           <none>
...

操作环境:
IoT5G-master01、IoT5G-master01


此次任务需要把两个边节点加入到master01中,先进入到edge01的窗口中
在这里插入图片描述
执行cd /data/script/进入到script的脚本中
在这里插入图片描述
输入以下命令实现边1节点加入集群,在这个脚本中需要一个参数即master的密码,密码需要根据实际情况去修改

./yurtadm_join_edge01_v4.sh kmAWEjoT!qJ > /data/logs/yurtadm_join.log

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
执行回车后此界面无需再管,复制一个新的窗口进行监控,使用以下命令查看监控信息,等待,结束运行的脚本信息出现表示完成

tail -f /root/init_phase.txt

在这里插入图片描述
现在可以回到没有执行监控的云节点上执行kubectl get nodes查看节点信息
在这里插入图片描述
除了查看node也可以使用kubectl get pods -A查看节点的pod的状态,有些pod虽然已经被重启了几次,但现在都已经稳定
在这里插入图片描述
此时可以先验证edge01节点加入集群是否成功
在这里插入图片描述
可以看到,涉及到edge01的任务均已完成,接下来进行edge02节点的相关操作,进入到edge02窗口,同样先进入/data/script/的目录下
在这里插入图片描述
然后执行下面命令并修改密码,保持执行状态

./yurtadm_join_edge02_v5.sh kmAWEjoT\!qJ > /data/logs/yurtadm_join.log

在这里插入图片描述
跟刚刚一样,使用tail -f /root/init_phase.txt复制一个窗口监控脚本的执行状态
在这里插入图片描述
执行完毕后再次回到master01窗口查看节点的状态,可以发现此时edge02也是加入到了集群
在这里插入图片描述
然后再查看pod的状态
在这里插入图片描述
现在可以回到平台验证edge02是否加入集群
在这里插入图片描述


任务三、ServiceTopology服务拓扑

模块说明:
服务拓扑(Service Topology)可以让一个服务根据集群的节点拓扑进行流量路由。 例如,一个服务可以指定流量被优先路由到和客户端pod所在的节点或者节点池上。

1、安装ServiceTopology服务拓扑

真实的边缘计算场景下,边节点与云节点一般不在同一个局域网中,与master不在同一局域网下的节点都需要部署coreDNS pod。

# 查看CoreDNS的Pods
root@k8s-master01:~# kubectl get pods -A -owide | grep coredns
kube-system    coredns-4qw2c                          1/1     Running   0               122m    10.244.1.29     yurt-edge01    <none>           <none>
kube-system    coredns-ljdgz                          1/1     Running   0               3h16m   10.244.0.15     k8s-master01   <none>           <none>
kube-system    coredns-s58rh                          1/1     Running   0               93m     10.244.2.3      yurt-edge02    <none>           <none>

服务拓扑(Service Topology)可以让一个服务根据集群的节点拓扑进行流量路由。 例如,一个服务可以指定流量被优先路由到和客户端pod所在的节点或者节点池上。
目标:将访问coreDNS service的流量改为节点池内闭环。

1.1配置kube-proxy,编辑kube-system名称空间下的名为kube-proxyConfigMap资源,保存文件并重启kube-proxy pod。

1)在打开的cm文件中,搜索kubeconfig:所在行,注释本行,从而实现配置kube-proxy连接Yurthub,注意文件保存。(注意只添加#进行注释,不删除此行内容)
命令参考:kubectl edit cm -n kube-system kube-proxy

# 15行
      #kubeconfig: /var/lib/kube-proxy/kubeconfig.conf

2)通过selector k8s-app=kube-proxy删除kube-proxy pod
命令参考:kubectl delete pod --selector k8s-app=kube-proxy -n kube-system
3) 对应kube-proxypod删除后,会自动重启,确认所有的kube-proxy pod重启成功(对应运行时间相对较短,需要自行验证)
命令参考:kubectl get pods -A -owide | grep kube-proxy

操作环境:
IoT5G-master01

1.2设置coreDNS service节点池内流量闭环,实现节点池内流量拓扑的功能。

一个service是否实现节点池内流量闭环,主要是通过在k8s原生的Service 上添加Annotation 实现流量的拓扑配置。
在这里插入图片描述
本任务只需要给coreDNS service增加openyurt.io/topologyKeys=openyurt.io/nodepool的annotation即可。

# 查看方式
root@k8s-master01:~# kubectl get svc kube-dns -n kube-system -o yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
    openyurt.io/topologyKeys: openyurt.io/nodepool # 实现节点池内流量拓扑的annotation
    prometheus.io/port: "9153"
    ....

环境中已经存在,这里无需再次操作。如果没用上述annotation实现节点池内流量拓扑,可按如下命令给svc(coreDNS service)添加annotation即可
参考命令:kubectl annotate svc kube-dns -n kube-system openyurt.io/topologyKeys=‘openyurt.io/nodepool’

操作环境:
IoT5G-master01


需要先用get pods确定yurt-manager的状态,可以使用下面的命令单独查看

kubectl get pods -A | grep yurt-manager

在这里插入图片描述
使用下面命令查看策略

kubectl edit cm -n kube-system kube-proxy

在这里插入图片描述
在这里插入图片描述
注释完成保存退出
在这里插入图片描述
重启kube-proxy pod
使用下面命令将所有的kube-proxy pod全部删除,删除后,kube-proxy pod是可以自动重启的

kubectl delete pod --selector k8s-app=kube-proxy -n kube-system

删除后使用下面命令查看状态

kubectl get pods -A -owide | grep kube-proxy

在这里插入图片描述
使用下面命令设置节点池内流量闭环,实现节点池内流量拓扑的功能

kubectl get svc kube-dns -n kube-system -o yaml

在这里插入图片描述
回车后可以发现会打印相应的信息
在这里插入图片描述
打印的结果说明svc已经配置了节点池内流量拓扑的功能了,这里只是一个确认的操作,不需要执行任何的修改操作,直接回到平台点击验证
在这里插入图片描述


任务四、安装YurtIoTDock环境

模块说明:
前边提及过 在PlatformAdmin 创建时,yurt-iot-dock会自动下发到边缘侧,实现帮助用户一键实现端设备托管的能力。
如果想要使用PlatformAdmin来部署yurt-iot-dock,需要先将yurt-iot-dock相关的helm包安装到集群中。

1、安装YurtIoTDock环境

1.1安装YurtIoTDock环境,将yurt-iot-dock相关的helm包安装到集群中,查看对应生成的crd资源

对应安装配置文件:/data/soft/openyurt/openyurt-helm-main (若文件为解压,需自行解压)
将yurt-iot-dock相关的helm包安装到集群中,命令参考:

# 进入配置文件
cd /data/soft/openyurt/openyurt-helm-main
# 安装部署   (注意文件相对路径)
helm install yurt-iot-dock ./charts/yurt-iot-dock
# 查看生成的CRD资源
kubectl get crds -A

操作环境:
IoT5G-master01、IoT5G-master01


进入到/data/soft/openyurt/目录下找到openyurt-helm-main文件

cd /data/soft/openyurt/

在这里插入图片描述此处文件已经解压无需解压操作,如未解压,使用下面指令进行解压

unzip openyurt-helm-main.zip

进入到openyurt-helm-main目录下

cd openyurt-helm-main

在这里插入图片描述
执行命令进行yurtiotdock的安装

helm install yurt-iot-dock ./charts/yurt-iot-dock

在这里插入图片描述
使用下面命令查看CRD资源

# 查看生成的CRD资源
kubectl get crds -A

在这里插入图片描述
执行完成后回到平台进行验证
在这里插入图片描述


任务五、端设备管理平台edgex foundry

模块说明:
1.EdgeX Foundry 简称edgex,是一款由生态系统提供强力支持的边缘物联网平台。它具有高度灵活和可扩展性,可以大大的降低应用与边缘设备,传感器等硬件互操作的复杂性。
2.OpenYurt与 EdgeX Foundry社区合作,在1.4.0版本完成了深度集成,可使用PlatformAdmin这个CRD以简化edgex foundry在边缘场景下的部署工作。
3.通过编写PlatformAdmin这个CRD的yaml片段,实现在指定的节点池安装指定版本的edgex,并选择部署edgex的哪些功能组件。

OpenYurt上部署如下组件(10个):

components:
# 默认部署 5个
   - name: edgex-core-command
   - name: edgex-core-consul
   - name: edgex-core-metadata
   - name: edgex-redis 
   - name: edgex-core-common-config-bootstrapper(仅minnesota版本)

# 默认自带 3个
   - name: yurt-iot-dock
   - name: edgex-core-data
   - name: edgex-ui-go 

# 自定义组件 2个
   - name: edgex-device-modbus
   - name: edgex-nodered

部分组件之间依赖关系如下:
在这里插入图片描述
自定义组件配置片段,参考如下:

# modubs的yaml片段(增加方式上边已提及,不再赘述)
    - deployment:
        selector:
          matchLabels:
            app: edgex-device-modbus
        strategy: {}
        template:
          metadata:
            creationTimestamp: null
            labels:
              app: edgex-device-modbus
          spec:
            containers:
            - env:
              - name: SERVICE_HOST
                value: edgex-device-modbus
              envFrom:
              - configMapRef:
                  name: common-variables
              image: edgexfoundry/device-modbus:3.0.0
              imagePullPolicy: IfNotPresent
              name: edgex-device-modbus
              ports:
              - containerPort: 59901
                name: tcp-59901
                protocol: TCP
              resources: {}
            hostname: edgex-device-modbus
      name: edgex-device-modbus
      service:
        ports:
        - name: tcp-59901
          port: 59901
          protocol: TCP
          targetPort: 59901
        selector:
          app: edgex-device-modbus



# nodered的yaml片段
    - deployment:
        selector:
          matchLabels:
            app: edgex-nodered
        strategy: {}
        template:
          metadata:
            creationTimestamp: null
            labels:
              app: edgex-nodered
          spec:
            containers:
            - env:
              - name: SERVICE_HOST
                value: edgex-nodered
              envFrom:
              - configMapRef:
                  name: common-variables
              image: nodered/node-red:3.1.9
              imagePullPolicy: IfNotPresent
              name: edgex-nodered
              ports:
              - containerPort: 1880
                name: tcp-1880
                protocol: TCP
              resources: {}
            hostname: edgex-nodered
      name: edgex-nodered
      service:
        ports:
        - name: tcp-1880
          port: 1880
          protocol: TCP
          targetPort: 1880
        selector:
          app: edgex-nodered

1、创建节点池

创建三个节点池,一个是名为beijing的云端节点池;另外两个分别是名为hangzhou01、hangzhou02的边缘节点池。
在这里插入图片描述
目标:3个节点池各有1个节点。

# 查看节点池状态
root@k8s-master01:~# kubectl get np
NAME         TYPE    READYNODES   NOTREADYNODES   AGE
beijing      Cloud   1            0               21h
hangzhou01   Edge    1            0               21h
hangzhou02   Edge    1            0               21h

1.1创建三个节点池,一个是名为beijing的云端节点池;另外两个分别是名为hangzhou01hangzhou02的边缘节点池,查看节点状态。

创建三个节点池,一个是名为beijing的云端节点池;另外两个分别是名为hangzhou01、hangzhou02的边缘节点池,查看节点状态。

创建节点池命令参考:

cat << EOF | kubectl apply -f -
apiVersion: apps.openyurt.io/v1beta1
kind: NodePool
metadata:
  name: beijing               # 节点名称 (以实际为准)
spec:
  type: Cloud/Edge        # 云节点池/边节点池(以实际为准)
EOF

操作环境:
IoT5G-master01、IoT5G-master01、IoT5G-master01

1.2将集群的节点加入各自所属节点池内
部分命令参考如下:

# 通过label实现
# `k8s-master01`加入到`beijing`节点池
root@k8s-master01:~# kubectl label node k8s-master01 apps.openyurt.io/nodepool=beijing

操作环境:
IoT5G-master01、IoT5G-master01


使用下面命令创建云节点池

cat << EOF | kubectl apply -f -
apiVersion: apps.openyurt.io/v1beta1
kind: NodePool
metadata:
  name: beijing               # 节点名称 (以实际为准)
spec:
  type: Cloud        # 云节点池/边节点池(以实际为准)
EOF

在这里插入图片描述
使用下面命令创建边1节点池

cat << EOF | kubectl apply -f -
apiVersion: apps.openyurt.io/v1beta1
kind: NodePool
metadata:
  name: hangzhou01 
spec:
  type: Edge 
EOF

在这里插入图片描述
使用下面命令创建边2节点池

cat << EOF | kubectl apply -f -
apiVersion: apps.openyurt.io/v1beta1
kind: NodePool
metadata:
  name: hangzhou02 
spec:
  type: Edge 
EOF

在这里插入图片描述
三个节点池创建完成后,可以使用下面命令进行查看

kubectl get np

在这里插入图片描述
把集群的节点加入到各自的节点池内
使用下面命令将云节点加入到beijing节点池内

kubectl label node k8s-master01 apps.openyurt.io/nodepool=beijing

使用下面命令将edge01节点加入到hangzhou01节点池内

kubectl label node yurt-edge01 apps.openyurt.io/nodepool=hangzhou01

使用下面命令将edge02节点加入到hangzhou02节点池内

kubectl label node yurt-edge02 apps.openyurt.io/nodepool=hangzhou02

在这里插入图片描述
再次查看节点池的状态
在这里插入图片描述
此时回到平台进行验证
在这里插入图片描述


2、每个边节点池内创建IoT系统PlatformAdmin

每个边节点池内创建IoT系统PlatformAdmin
OpenYurt上部署如下组件(10个):

components:
# 默认部署 5个(第一步)
   - name: edgex-core-command
   - name: edgex-core-consul
   - name: edgex-core-metadata
   - name: edgex-redis 
   - name: edgex-core-common-config-bootstrapper(仅minnesota版本)

# 默认自带 3个(第二步)
   - name: yurt-iot-dock
   - name: edgex-core-data
   - name: edgex-ui-go 

# 自定义组件 2个(第三步)
   - name: edgex-device-modbus
   - name: edgex-nodered

2.1在节点池hangzhou01中创建minnesota版本的EdgeX

1)OpenYurt上部署edgex是,默认部署如下5个组件:edgex-core-command、edgex-core-consul、edgex-core-metadata、edgex-redis 、edgex-core-common-config-bootstrapper(仅minnesota版本);

cat <<EOF | kubectl apply -f -
apiVersion: iot.openyurt.io/v1alpha2
kind: PlatformAdmin
metadata:
  name: edgex-edge01
spec:
  version: minnesota
  poolName: hangzhou01
  #components:
  #- name: yurt-iot-dock
  #- name: edgex-device-modbus
  #- name: edgex-core-data
  #- name: edgex-ui-go
  #- name: edgex-nodered
EOF

注意:另开一个k8s-master01终端连接,用于运行pod自检脚本,以确保pod正常运行。

root@k8s-master01:~# nohup /data/script/edgex_pod_ok.sh > /root/edgex_pod_ok.log 2>&1 &

当edgex上在连续n轮确保所有pod正常后,脚本自动退出执行。

操作环境:
IoT5G-master01、IoT5G-master01、IoT5G-master01、IoT5G-master01、IoT5G-master01

2.2当5个核心pod正常运行后,通过components关键字指定要部署的5个edgex组件
命令参考:

cat <<EOF | kubectl apply -f -
apiVersion: iot.openyurt.io/v1alpha2
kind: PlatformAdmin
metadata:
  name: edgex-edge01
spec:
  version: minnesota
  poolName: hangzhou01
  components:
  - name: yurt-iot-dock
  - name: edgex-device-modbus
  - name: edgex-core-data
  - name: edgex-ui-go
  - name: edgex-nodered
EOF

查看部署情况:

root@k8s-master01:~# kubectl get pa
NAME           READY   READYCOMPONENTNUM   UNREADYCOMPONENTNUM
edgex-edge01   true    7                   1

操作环境:
IoT5G-master01、IoT5G-master01

2.3编辑platformadmin-frameworkcm配置文件,更新yurt-iot-dock组件信息,查看对应组件状态
查看yurt-iot-dock组件状态:

root@k8s-master01:~# kubectl get po -owide
yurt-iot-dock-hangzhou01-hmqpd-6d57698fb-zgw5x       0/1     ImagePullBackOff ...

编辑对应cm配置文件:

root@k8s-master01:~# kubectl edit cm platformadmin-framework

配置内容:将imagePullPolicy修改成IfNotPresent,image镜像版本修改为v1.4.1(约290行)

              image: openyurt/yurt-iot-dock:v1.4.1
              imagePullPolicy: IfNotPresent

操作环境:
IoT5G-master01

2.4编辑platformadmin-frameworkcm配置文件,用于自定义组件edgex-device-modbusedgex-nodered,并查看对应组件状态
在这里插入图片描述
操作环境:
IoT5G-master01、IoT5G-master01、IoT5G-master01

2.5在节点池hangzhou02中创建PlatformAdmin并添加组件,并查看10个组件状态

部署方式方式与hangzhou01类似。

cat <<EOF | kubectl apply -f -
apiVersion: iot.openyurt.io/v1alpha2
kind: PlatformAdmin
metadata:
  name: edgex-edge02
spec:
  version: minnesota
  poolName: hangzhou02
  components:
  - name: yurt-iot-dock
  - name: edgex-device-modbus
  - name: edgex-core-data
  - name: edgex-ui-go
  - name: edgex-nodered
EOF

查看此节点池edgex相关pod:

root@k8s-master01:~# kubectl get po -owide -w | grep yurt-edge02

操作环境:
IoT5G-master01、IoT5G-master01


执行下面命令,执行以后,会启动EdgeX默认的五个相关核心组件,需要确保这五个组件的pod正常运行再继续

cat <<EOF | kubectl apply -f -
apiVersion: iot.openyurt.io/v1alpha2
kind: PlatformAdmin
metadata:
  name: edgex-edge01
spec:
  version: minnesota
  poolName: hangzhou01
  #components:
  #- name: yurt-iot-dock
  #- name: edgex-device-modbus
  #- name: edgex-core-data
  #- name: edgex-ui-go
  #- name: edgex-nodered
EOF

在这里插入图片描述
再复制一个master01窗口用来执行下面命令,执行完后不需要再管

/data/script/edgex_pod_ok.sh

在这里插入图片描述
回到上一个窗口执行下面命令

kubectl get po -w -owide | grep yurt-edge01

在这里插入图片描述
然后ctrl+c终止它无需监控了
在这里插入图片描述
然后执行下面指令添加额外部署EdgeX的五个组件

cat <<EOF | kubectl apply -f -
apiVersion: iot.openyurt.io/v1alpha2
kind: PlatformAdmin
metadata:
  name: edgex-edge01
spec:
  version: minnesota
  poolName: hangzhou01
  components:
  - name: yurt-iot-dock
  - name: edgex-device-modbus
  - name: edgex-core-data
  - name: edgex-ui-go
  - name: edgex-nodered
EOF

在这里插入图片描述
配置完成后,使用kubectl get pa去检查部署的情况
在这里插入图片描述
使用下面命令接着配置文件

kubectl edit cm platformadmin-framework

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改完这两部分后,还需要插入自定义的组件片段

先回到最上面去,来到components:的后面
在这里插入图片描述
在这里插入图片描述
插入成功后保存退出
再次使用kubectl get pa去检查状态
在这里插入图片描述
使用kubectl get po再次检查一遍状态
在这里插入图片描述
回到平台进行验证
在这里插入图片描述
此时可以看出关于edge01的都已经完成,紧接着在edge02里进行相关操作
执行下面命令对edge02进行部署

cat <<EOF | kubectl apply -f -
apiVersion: iot.openyurt.io/v1alpha2
kind: PlatformAdmin
metadata:
  name: edgex-edge02
spec:
  version: minnesota
  poolName: hangzhou02
  components:
  - name: yurt-iot-dock
  - name: edgex-device-modbus
  - name: edgex-core-data
  - name: edgex-ui-go
  - name: edgex-nodered
EOF

在这里插入图片描述
然后使用下面命令查看此节点池edgex相关pod

kubectl get po -owide -w | grep yurt-edge02

在这里插入图片描述
此时再回到平台进行验证
在这里插入图片描述


任务六、k8s安装其它相关容器

模块说明:
需要在云上部署FUXA、MQTT的容器;

1、云-MQTT部署

1.1为节点k8s-master01添加一个名为megagame,值为cloud的标签

节点打标签: kubectl label nodes <节点名称> =
查看节点标签: kubectl get node --show-labels

操作环境:
IoT5G-master01

1.2在云节点上部署MQTT容器,查看节点上对应pod

资源路径:/data/yaml/mqtt/mqtt_*.yaml (以实际文件名为准)
部署资源命令参考:kubectl apply -f yaml文件

操作环境:
IoT5G-master01


执行下面命令为节点打上标签

kubectl label nodes k8s-master01 megagame=cloud

在这里插入图片描述
查看节点标签

kubectl get node k8s-master01 --show-labels

在这里插入图片描述
使用cd /data/yaml/mqtt/命令进入mqtt
配置资源
在这里插入图片描述
配置完成后使用下面命令查看状态

kubectl get pods -A -owide | grep mqtt

在这里插入图片描述
可以回到平台进行验证
在这里插入图片描述


2、云-FUXA部署

云-FUXA部署
2.1在云节点上部署FUXA容器,查看节点上对应pod

对应安装配置文件:/data/yaml/fuxa/fuxa.yaml (以实际文件名为准)
部署资源命令参考:kubectl apply -f yaml文件
为节点k8s-master01添加一个名为megagame,值为cloud的标签(若上一步已经完成,这里不再重复)

操作环境:
IoT5G-master01


首先使用cd /data/yaml/fuxa/命令进入到fuxa的目录下
在这里插入图片描述
部署资源命令

kubectl apply -f fuxa.yaml

查看

kubectl get pods -A -owide | grep fuxa

在这里插入图片描述
此时可以回到平台进行验证了
在这里插入图片描述


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值