「连载」边缘计算(三)01-17:边缘计算系统(基础篇)

115 阅读5分钟

(接上篇)

部署 KubeEdge

在Kubernetes已经安装成功的基础上安装KubeEdge1.1.0,使用Kubernetes的master节点作为其云控制节点。

(1)安装Cloud部分

1)修改Kubernetes master节点配置。

cloud端是KubeEdge中与kube-apiserver交互的组件,在该教程中cloud端与kube-apiserver交互使用的是非安全端口,需要在Kubernetes master节点上做如下修改:

#vi /etc/Kubernetes/manifests/kube-apiserver.yaml

  • --insecure-port=8080

  • --insecure-bind-address=0.0.0.0

2)下载安装包。

可以通过两种方式下载安装包:通过curl直接下载;在KubeEdge的release仓库中下载。

第一种方式:通过curl直接下载。

VERSION="v1.0.0"

OS="linux"

ARCH="amd64"

curl -L "GitHub.com/KubeEdge/Ku…" --output KubeEdge-VERSION{VERSION}-{OS}-{ARCH}.tar.gz && tar -xf KubeEdge-{VERSION}-OS{OS}-{ARCH}.tar.gz  -C /etc

注意:通过curl直接下载,由于网速问题一般需要时间比较久,失败的可能较大。

第二种方式:在KubeEdge的release仓库中下载。

进入KubeEdge的GitHub仓库中的KubeEdge v1.0.0 release,下载KubeEdge-v1.0.0-linux-amd64.tar.gz,将下载的安装包上传到Kubernetes master节点的/root目录下,进行如下操作:

#tar -zxvf KubeEdge-v1.0.0-linux-amd64.tar.gz

mv KubeEdge-v1.0.0-linux-amd64 /etc/KubeEdge

3)在Kubernetes master节点生成证书。

生成的证书用来在KubeEdge的edge与cloud端加密通信。证书生成命令如下: 

#wget -L raw.GitHubusercontent.com/KubeEdge/Ku…

#chmod +x certgen.sh bash -x ./certgen.sh genCertAndKey edge

注意:上述步骤执行成功之后,会在/etc/KubeEdge下生成ca和certs两个目录。

4)创建device model 和 device CRDs。

在Kubernetes master节点上创建KubeEdge所需的device model和device CRD。创建步骤如下:

#wget -L raw.GitHubusercontent.com/KubeEdge/Ku…

#chmod +x devices_v1alpha1_devicemodel.yaml

#kubectl create -f devices_v1alpha1_devicemodel.yaml

#wget -L raw.GitHubusercontent.com/KubeEdge/Ku…

#chmod +x devices_v1alpha1_device.yaml

#kubectl create -f devices_v1alpha1_device.yaml

5)运行cloud端。

在Kubernetes master节点上运行KubeEdge的cloud端,命令如下:

#cd /etc/KubeEdge/cloud

#./CloudCore

注意:本节为了方便查看进程输出采用了前台驻留进程的方式,除了上述方式外,还可以通过systemd来查看。

(2)安装Edge部分

edge端是KubeEdge运行在边缘设备上的部分,在edge端运行之前需要安装合适的容器运行时,包括docker、containerd和cri-o。本节采用的容器运行时是docker,具体安装步骤可以参考“ 部署docker”小节。

1)准备edge端安装包。

因为证书问题,可以将Kubernetes master节点上的/etc/KubeEdge直接复制到edge节点的/etc下,命令如下:

#scp -r /etc/KubeEdge root@{ edge节点ip }:/etc

2)在Kubernetes master节点上创建edge节点的node资源对象,命令如下:

vi node.json

 

{

    "kind": "Node",

    "apiVersion": "v1",

    "metadata": {

     "name": "edge-node",

    "labels": {

    "name": "edge-node",

     "node-role.Kubernetes.io/edge": ""

    }

    }

}

 

kubectl create -f node.json

3)修改edge部分的配置.

修改两部分内容:edge端连接cloud端的ip;edge端的name与在Kubernetes master上创建的node相对应。

● edge端连接cloud端的IP

edgehub.websocket.url:IP修改成Kubernetes master IP端口不变。

edgehub.quic.url:IP修改成Kubernetes master IP端口不变。

 

● edge端的name与在Kubernetes master上创建的node相对应。

 

controller:node-id与在Kubernetes master上创建的node的name保持一致。edged:hostname-override与在Kubernetes master上创建的node的name保持一致。

4)运行edge端,命令如下:

#cd /etc/KubeEdge/edge

#./EdgeCore

注意:本节为了方便查看进程输出采用了前台驻留进程的方式,除了上述方式外,还可以通过systemd来查看。

(3)验证KubeEdge是否正常运行。

KubeEdge部署成功后,在Kubernetes master节点通过kubectl工具查看其运行状态,具体如图1-15所示。

1-15.png

图1-15集群节点运行状态

5.部署 E dgeX Foundry

EdgeX Foundry是一套可以用KubeEdge部署到边缘上的IoT SaaS平台。它可以采集、存储IoT设备的数据并将其导出到云数据中心,同时通过向终端设备下发指令对终端设备进行控制。

(1)准备镜像

本节以容器的形式部署EdgeX Foundry,需要在KubeEdge管理的边缘计算节点上准备edgex-ui-go、edgex-vault、edgex-mongo、support-scheduler-go、support-notifications-go、support-logging-go、core-command-go、core-metadata-go、core-data-go、export-distro-go、export-client-go、edgex-vault-worker-go、edgex-vault和edgex-volume共14个镜像。

有两种方法获取这些镜像:

1)直接在dockerhub上下载这些镜像;

2)根据EdgeX Foundry源码仓库中的Makefile文件构建这些镜像。

(2)准备部署EdgeXFdoundry组件所需的yaml文件

需要在前面部署的Kubernetes的master节点上准备与每个镜像对应的yaml文件对其进行部署。绝大多数镜像需要通过deployment进行部署,个别镜像需要Job进行部署,有些镜像还需要service对外暴露服务,这些yaml文件没有固定的标准。目前,EdgeX Foundry官方还没有提供相关yaml文件,建议根据具体场景进行编写。

(3)通过yaml文件部署EdgeX Foundry。

至此,我们已经拥有了Kubernetes的master节点,并将master节点作为云端控制节点,KubeEdge管理的节点作为边缘计算节点的云、边协同的集群。同时,在KubeEdge管理的节点上准备好了部署EdgeX Foundry所需的镜像,在Kubernetes的master节点上准备好了运行EdgeX Foundry镜像所需的yaml文件。接下来,只需在Kubernetes的master节点上通过kubectl命令创建yaml文件中描述的资源对象即可,具体命令如下:

#kubectl create -f {文件名}.yaml

yaml文件中描述的资源对象都创建好,意味着EdgeX Foundry的部署结束。至于,EdgeX Foundry是否部署成功,可以通过如下命令进行验证:

#kubectl get pods –all-namespace

从图1-16可知,部署的EdgeX Foundry相关组件都已正常运行。

1-16.png

图1-16 EdgeXFoundry组件运行状态

最后,通过在浏览器里访问edgex-ui-go(即在浏览器访问http://{EdgeX Foundry所运行主机的ip}:4000)进入EdgeX Foundry的登录页面,具体如图1-17所示。

1-17.png

图1-17 EdgeX Foundry的登录页面

在图1-17中输入对应的Name/Password,就可以成功进入EdgeX Foundry的控制台,具体如图1-18所示。

1-18.png

图1-18 EdgeX Foundry控制台

至此,我们已经拥有了由两个节点组成的,包含云、边、端的完整边缘计算系统。接下来介绍边缘计算系统的管理和在该边缘计算系统上部署应用。

未完待续……」 点击下方标题可阅读技术文章

「连载」边缘计算(一)01-16:边缘计算系统(基础篇)

juejin.cn/post/732453…

「连载」边缘计算(二)01-16:边缘计算系统(基础篇)

juejin.cn/post/732452…