云原生管理端设备
本文档主要讲述如何在已有的OpenYurt集群上使用PlatformAdmin部署EdgeX系统和YurtIoTDock组件。 在 OpenYurt v1.4 版本中,我们升级了原来的 yurt-edgex-manager 和 yurt-device-controller 组件。前者已经内置于 yurt-manager 中,用户可以通过编写 Yaml 文件来创建 PlatformAdmin 资源,简单几行配置就可以往节点池内构建一套完整的 EdgeX 系统;后者更名为 yurt-iot-dock ,会在 PlatformAdmin 创建时自动下发到边缘侧,实现帮助用户一键实现端设备托管的能力。
如果你还没有OpenYurt集群,你可以使用yurtadm工具来初始化一个OpenYurt集群或将一个Kubernetes集群转换为OpenYurt集群。
环境要求
-
OpenYurt v1.4.0+
-
安装了
yurt-manager
组件 -
与master不在同一局域网下的节点都需要部署coreDNS pod
-
将访问coreDNS service的流量改为节点池内闭环,参考教程
安装YurtIoTDock环境
如果想要使用PlatformAdmin来部署yurt-iot-dock,需要先将yurt-iot-dock相关的helm包安装到集群中。
helm install yurt-iot-dock ./charts/yurt-iot-dock
端设备平台管理
1. 创建节点池
首先创建两个节点池,一个是名为beijing的云端节点池,一个是名为hangzhou的边缘节点池。
# 创建beijing节点池
cat << EOF | kubectl apply -f -
apiVersion: apps.openyurt.io/v1beta1
kind: NodePool
metadata:
name: beijing
spec:
type: Cloud
EOF
# 创建hangzhou节点池
cat << EOF | kubectl apply -f -
apiVersion: apps.openyurt.io/v1beta1
kind: NodePool
metadata:
name: hangzhou
spec:
type: Edge
EOF
然后将指定的节点加入节点池,标记openyurt-worker节点为云端节点,标记openyurt-worker2节点为边缘节点
# 将openyurt-worker标记为云端节点
kubectl label node openyurt-worker apps.openyurt.io/nodepool=beijing
# 将openyurt-worker2标记为边缘节点
kubectl label node openyurt-worker2 apps.openyurt.io/nodepool=hangzhou
最后检查节点池状态,确保节点池状态正常
# 检查节点池状态
kubectl get np
NAME TYPE READYNODES NOTREADYNODES AGE
beijing Cloud 1 0 4d18h
hangzhou Edge 1 0 4d18h
2. 在节点池内创建IoT系统PlatformAdmin
配置好使用EdgeX版本,选择在hangzhou节点池中创建
# 在节点池hangzhou中创建minnesota版本的EdgeX
cat <<EOF | kubectl apply -f -
apiVersion: iot.openyurt.io/v1alpha2
kind: PlatformAdmin
metadata:
name: edgex-sample
spec:
version: minnesota
poolName: hangzhou
EOF
# 检查部署情况
kubectl get po
NAME READY STATUS RESTARTS AGE
edgex-core-command-hangzhou-4j6pz-8668ff94d7-hqw2r 1/1 Running 0 61s
edgex-core-common-config-bootstrapper-hangzhou-jnw2q-57bd99xr9p 1/1 Running 0 61s
edgex-core-consul-hangzhou-6p9tj-798489c647-6xz4m 1/1 Running 0 61s
edgex-core-metadata-hangzhou-6l7v5-6f964fc4f-67f9p 1/1 Running 0 61s
edgex-redis-hangzhou-cwgsw-5c7d7fc478-fsgp9 1/1 Running 0 61s
3. 部署可选组件
目前v1.4.0的PlatformAdmin支持通过components字段一键部署可选组件,下面是通过components字段部署yurt-iot-dock、edgex-device-virtual、edgex-device-rest的例子
可选组件的组件名参考Component文档
# 在刚才部署的PlatformAdmin之上增加components字段
cat <<EOF | kubectl apply -f -
apiVersion: iot.openyurt.io/v1alpha2
kind: PlatformAdmin
metadata:
name: edgex-sample
spec:
version: minnesota
poolName: hangzhou
components:
- name: yurt-iot-dock
- name: edgex-device-virtual
- name: edgex-device-rest
EOF
# 可以看到可选的components已经部署起来了
kubectl get po
NAME READY STATUS RESTARTS AGE
edgex-core-command-hangzhou-cwgs2-77bb5d9cdd-zp89r 1/1 Running 0 20m
edgex-core-common-config-bootstrapper-hangzhou-bqhnb-57bd9c4q5q 1/1 Running 0 20m
edgex-core-consul-hangzhou-5rl7c-66dbc9c7d7-dqvm8 1/1 Running 0 20m
edgex-core-metadata-hangzhou-srpff-dd6c6f9cb-2cj9k 1/1 Running 0 20m
edgex-device-rest-hangzhou-v7p99-7b8bb4f5d4-kz8sq 1/1 Running 0 7m49s
edgex-device-virtual-hangzhou-ssz59-796f948c69-5k4tc 1/1 Running 0 7m49s
edgex-redis-hangzhou-bk5g5-5fbdf6fffb-cmf6d 1/1 Running 0 20m
yurt-iot-dock-hangzhou-56f98-8549f848f5-v2pjn 1/1 Running 0 7m49s
4. 修改组件配置
PlatfromAdmin给高阶用户提供了自定义配置的入口,所有PlatformAdmin的配置都通过一个名为platformadmin-framework的configmap控制,通过修改这个configmap的值用户可以修改每个组件的配置,下面是platformadmin-framework的一个例子
apiVersion: v1
data:
framework: |
components:
- deployment:
selector:
matchLabels:
app: edgex-core-command
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: edgex-core-command
spec:
containers:
- env:
- name: SERVICE_HOST
value: edgex-core-command
- name: EXTERNALMQTT_URL
value: tcp://edgex-mqtt-broker:1883
envFrom:
- configMapRef:
name: common-variables
image: openyurt/core-command:3.0.0
imagePullPolicy: IfNotPresent
name: edgex-core-command
ports:
- containerPort: 59882
name: tcp-59882
protocol: TCP
resources: {}
hostname: edgex-core-command
name: edgex-core-command
service:
ports:
- name: tcp-59882
port: 59882
protocol: TCP
targetPort: 59882
selector:
app: edgex-core-command
...