此文案仅是本人在参加相关比赛过程中的总结感悟,作为本人学习所用,不具有其他任何行为
任务一:环境构建
模块说明:
部署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-proxy
的ConfigMap
资源,保存文件并重启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
的云端节点池;另外两个分别是名为hangzhou01
、hangzhou02
的边缘节点池,查看节点状态。
创建三个节点池,一个是名为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-framework
的cm
配置文件,更新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-framework
的cm
配置文件,用于自定义组件edgex-device-modbus
、edgex-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
此时可以回到平台进行验证了