部署边缘云工具

举报
yd_1314 发表于 2025/03/19 13:34:14 2025/03/19
【摘要】 4.云端节点部署kubeedge-dashboard4.1 Kubeedge dashboard部署使用命令执行创建kubeedge-dashboard.yaml文件,命令如下:[root@master kubeedge]#  vi /opt/kubeedge-counter-demo/crds/kubeedge-dashboard.yaml ......        location ^...


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 ModelDevice

利用搭建好的边缘计算平台,部署计数器应用。

首先要部署Device ModelDevice,它们是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.

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: [email protected]
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。