部署边缘云工具
4.云端节点部署kubeedge-dashboard
4.1 Kubeedge dashboard部署
使用命令执行创建kubeedge-dashboard.yaml文件,命令如下:
[root@master kubeedge]# vi /opt/kubeedge-counter-demo/crds/kubeedge-dashboard.yaml
......
location ^~ /api/ {
proxy_pass #修改此处地址为虚拟私有IP
}
location ^~ /apis/ {
proxy_pass #修改此处地址
}
[root@master kubeedge]# kubectl create -f kubeedge-dashboard.yaml
namespace/kubeedge-dashboard created
configmap/nginx-config created
service/kdashboard-service created
[root@master kubeedge]# kubectl get pod -n kubeedge-dashboard
NAME READY STATUS RESTARTS AGE
pod/kdashboard-deploy-64556c67ff-crvf6 1/1 Running 0 9m52s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kdashboard-service NodePort 192.111.3.90 <none> 30086:30086/TCP 9m52s
在云端master节点执行,获取登录token:
[root@master ~]# kubectl create serviceaccount curl-user -n kube-system
[root@master ~]# kubectl create clusterrolebinding curl-user-binding --clusterrole=cluster-admin --serviceaccount=kube-system:curl-user -n kube-system
[root@master ~]# kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep curl-user | awk '{print $1}')
4.2 页面展示与使用
浏览器访问云端http://master节点公网IP:30086(安全组需放开30086端口入方向规则),
5.kubeedge-counter-demo部署
5.1 部署Device Model和Device
利用搭建好的边缘计算平台,部署计数器应用。
首先要部署Device Model和Device,它们是Kubernetes CRD自定义的两个资源类型,用来描述设备的元数据和状态,利用提供的yaml文件部署设备模型,命令如下:
[root@master kubeedge]# cd /opt/kubeedge-counter-demo/crds/
[root@master crds]# cat kubeedge-counter-model.yaml
apiVersion: devices.kubeedge.io/v1alpha2
kind: DeviceModel
metadata:
name: counter-model
namespace: default
spec:
properties:
- name: status
description: counter status
type:
string:
accessMode: ReadWrite
defaultValue: ''
#该文件定义了一个名为“counter-model的计数器模型”,并描述了计数器的状态为可读写的字符串类型,默认为空
[root@master crds]# kubectl apply -f kubeedge-counter-model.yaml
devicemodel.devices.kubeedge.io/counter-model created
[root@master crds]# kubectl get devicemodel -A #获取模型列表
NAMESPACE NAME AGE
default counter-model 60s
接下来部署设备实例,命令如下:
[root@master crds]# cat kubeedge-counter-instance.yaml
apiVersion: devices.kubeedge.io/v1alpha2
kind: Device
metadata:
name: counter
labels:
description: 'counter'
spec:
deviceModelRef:
name: counter-model
nodeSelector:
nodeSelectorTerms:
- matchExpressions:
- key: ' kubernetes.io/hostname '
operator: In
values:
- kubeedge-node
status:
twins:
- propertyName: status
desired:
metadata:
type: string
value: 'OFF'
reported:
metadata:
type: string
value: '0'
#该文件定义了一个“counter”的设备实例,配置引用了上面创建的“counter-model ”,并定义了状态的属性分别为“OFF”和“0”
[root@master crds]# kubectl apply -f kubeedge-counter-instance.yaml
device.devices.kubeedge.io/counter created
[root@master crds]# kubectl get device -A #获取设备实例列表
NAMESPACE NAME AGE
default counter 8s
5.2部署云端应用控制器
该控制器是一个通用的 Web 控制器应用,可以管理和监控多种类型的设备和应用程序,这里可以利用该控制器来管理创建的计数器设备和模型。
使用提供的yaml文件部署云端应用控制器,命令如下:
[root@master crds]# cat kubeedge-web-controller-app.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
k8s-app: kubeedge-counter-app
name: kubeedge-counter-app
namespace: default
spec:
selector:
matchLabels:
k8s-app: kubeedge-counter-app
template:
metadata:
labels:
k8s-app: kubeedge-counter-app
spec:
hostNetwork: true
nodeSelector:
node-role.kubernetes.io/master: ""
containers:
- name: kubeedge-counter-app
image: 172.16.2.34/k8s/kubeedge-counter-app:v1.0.0 #地址修改为云端服务器内网IP
imagePullPolicy: IfNotPresent
tolerations:
- key: node-role.kubernetes.io/master
operator: Exists
effect: NoSchedule
- key: node-role.kubernetes.io/control-plane
operator: Exists
effect: NoSchedule
restartPolicy: Always
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: kubeedge-counter
namespace: default
rules:
- apiGroups: ["devices.kubeedge.io"]
resources: ["devices"]
verbs: ["get", "patch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: kubeedge-counter-rbac
namespace: default
subjects:
- kind: ServiceAccount
name: default
roleRef:
kind: Role
name: kubeedge-counter
apiGroup: rbac.authorization.k8s.io
[root@master crds]# kubectl apply -f kubeedge-web-controller-app.yaml
deployment.apps/kubeedge-counter-app unchanged
role.rbac.authorization.k8s.io/kubeedge-counter unchanged
rolebinding.rbac.authorization.k8s.io/kubeedge-counter-rbac created
[root@master crds]# kubectl get pod -A |grep counter
default kubeedge-counter-app-7f4dc5bfc6-zbkjs 1/1 Running 0 8m52s
查看是否存在8089端口,也可以浏览器访问云端master节点公网IP:8089(需要在华为云安全组中放开入方向8089端口),如图5-1所示。
[root@master crds]# netstat -ntpl |grep 8089
tcp6 0 0 :::8089 :::* LISTEN 16234/kubeedge-coun
图5-1 访问Web Controller
5.3部署边端计数器
边缘端的pi-counter-app应用受云端应用控制,主要与mqtt服务器通信,进行简单的计数功能。
利用提供的yaml文件部署边端计数器,命令如下:
[root@master crds]# scp /opt/k8simage/edgepause.tar kubeedge-node:/root/
[root@kubeedge-node ~]# docker load -i /root/edgepause.tar
#边端kubeedge-node节点导入镜像
[root@kubeedge-node kubeedge]# docker login -u admin -p Harbor12345 master
#首先在边端kubeedge-node节点登录仓库
[root@master crds]# cat kubeedge-pi-counter-app.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
k8s-app: kubeedge-pi-counter
name: kubeedge-pi-counter
namespace: default
spec:
selector:
matchLabels:
k8s-app: kubeedge-pi-counter
template:
metadata:
labels:
k8s-app: kubeedge-pi-counter
spec:
nodeSelector:
node-role.kubernetes.io/master: ""
hostNetwork: true
containers:
- name: kubeedge-pi-counter
image: 172.16.2.34/k8s/kubeedge-pi-counter:v1.0.0
#地址为实际的镜像地址
imagePullPolicy: IfNotPresent
nodeSelector:
node-role.kubernetes.io/edge: ""
restartPolicy: Always
#为了避免云端节点服务和边端节点服务在通信时报错,导致pod运行失败,所以先重启两个节点的核心服务
[root@master ~]# systemctl restart cloudcore
[root@kubeedge-node ~]# systemctl restart edgecore.service
[root@master crds]# kubectl apply -f kubeedge-pi-counter-app.yaml
[root@master crds]# kubectl get pod -o wide |grep pi-counter
kubeedge-pi-counter-54dc4b94f4-49vdg 1/1 Running 0 12m 172.128.11.202 kubeedge-node <none> <none>
5.4 测试应用
在边缘端节点查看kubeedge-pi容器,并查看日志,命令如下:
[root@kubeedge-node ~]# docker ps #容器名称为k8s_kubeedge-pi-counter_kubeedge-开头
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
13e73ff1864f 172.16.2.34/k8s/kubeedge-pi-counter "/pi-counter-app pi-…" 18 seconds ago Up 18 seconds k8s_kubeedge-pi-counter_kubeedge-pi-counter-6446d778f8-sl2h2_default_7be252ae-1d66-4372-ab68-3d8646f66318_0
26c5ffaa0574 kubeedge/pause:3.1 "/pause" 20 seconds ago Up 20 seconds k8s_POD_kubeedge-pi-counter-6446d778f8-sl2h2_default_7be252ae-1d66-4372-ab68-3d8646f66318_0
[root@kubeedge-node ~]# docker logs 13e73ff1864f -f
#查询容器日志,可以看到反馈结果首先为空,还没有日志数据
[root@kubeedge-node ~]# docker logs 820a0e10830e -f
turn on counter.
Counter value: 1
Counter value: 2
Counter value: 3
Counter value: 4
Counter value: 5
Counter value: 6
Counter value: 7
Counter value: 8
turn off counter.
- 点赞
- 收藏
- 关注作者
评论(0)