KubeEdge边缘计算框架,小白也能部署了!

KubeEdge边缘计算框架,小白也能部署了!

KubeEdge是华为开发的一个适用于边缘计算应用环境的开源框架,该框架基于Google公司的云计算K8s框架,通过实现将Node端安装的组件轻量化,从而实现了在相对硬件条件较差的边缘处理器上的容器化应用的部署,以及边缘设备状态的监控和管理。
此文档专门为给对基础知识薄弱,想要快速部署上手的朋友。

以下所有操作都是在root用户权限下

一、前期部署条件

1.部署环境的介绍

在部署云端的Master节点时,一定要保障处理器为两核以上
边缘节点部署过程中,需要在设备里进行编译,该过程所需内存要大于2G,对处理器核数没有限制。

硬件条件:

两台2核4G的云服务器(CentOS 7.5)
分别修改主机名,框架云端管理服务器可以叫 master,充当边缘节点的服务器叫edge1

2.云端Master环境部署

所有操作都是在root用户权限下

⑴ Golang环境部署
下载golang适用于Linux系统的环境压缩包。
百度网盘下载:链接: https://pan.baidu.com/s/1u6RA8FplCmRt2zyQb54cFg
提取码: 6ty5

压缩包拉到CentOS系统的当前目录下,将文件解压到相应位置

tar -xzf  go1.12.16.linux-amd64.tar.gz   -C  /usr/lib
tar -xzf  go1.12.16.linux-amd64.tar.gz   -C  /usr/local

修改环境变量

vim /etc/profile

在文件最后添加以下内容

export HOME=/root
export GOROOT=/usr/lib/go
export GOPATH=/usr/local/go
export PATH=$PATH:$GOPATH/bin

让环境变量生效

source /etc/profile

查看是否成功

go version

⑵ Docker应用部署
下载一个库

yum install -y yum-utils device-mapper-persistent-data lvm2

添加yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

下载Docker 18.06.3版本

yum -y install docker-ce-18.06.3.ce

启动Docker容器

systemctl enable docker && systemctl start docker

检测Docker是否安装成功,如果现实两个版本号,就算成功并已经启动

docker version

⑶ K8s集群构建
K8s部署请大家直接参考,大佬的文档吧,简单易懂,快速部署,克服国内网络问题。我们仅需要参考该博客部署完Master,不需要部署和加入Node节点等后续过程。
CSDN网址:https://blog.csdn.net/weixin_37555975/article/details/89245568?utm_source=app
Master部署完成后,我们可以查看集群

kubectl get nodes

显示存在一个master节点,处于Ready状态,表示k8s部署成功。

3.边缘端edge环境部署

⑴ Golang环境部署
同云端部署过程一样
⑵ Docker应用部署
同云端部署过程一样
⑶ Mosquitto应用安装
更新yum源

yum -y update

添加EPEL软件库

yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

下载mosquitto

yum -y install mosquitto

⑷ 关闭防火墙等软件
关闭防火墙

systemctl disable firewalld && systemctl stop firewalld

关闭SELINUX

vim /etc/selinux/config

将里面的内容修改成如下

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
#SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

保存后,继续按一下操作

setenforce 0
swapoff -a
vim /etc/fstab

注释了里面和swap相关的一行


二、KubeEdge云端master部署

1.克隆kubeedge源码包并生成证书

安装git软件

yum install -y git

在码云上克隆源码包

git clone https://gitee.com/liu_hu_wei/kubeedge.git $GOPATH/src/github.com/kubeedge/kubeedge

切换到 Kubeedge V1.2正式版

cd $GOPATH/src/github.com/kubeedge/kubeedge
git checkout -b v1.2.0 v1.2.0

生成证书

$GOPATH/src/github.com/kubeedge/kubeedge/build/tools/certgen.sh genCertAndKey edge

证书生成后,会在/etc/kubeedge下生成两个文件夹,这两个文件夹里的内容作为云和边端的连接的凭证。之后会拷贝到边端的相应位置。

2.云端Cloudcore部署

编译cloudcore源码

yum -y install gcc
cd $GOPATH/src/github.com/kubeedge/kubeedge/
make all WHAT=cloudcore

创建DeviceModel和设备CRD

cd $GOPATH/src/github.com/kubeedge/kubeedge/build/crds/devices
kubectl create -f devices_v1alpha1_devicemodel.yaml
kubectl create -f devices_v1alpha1_device.yaml

创建用于可靠消息传递的ClusterObjectSync和ObjectSync CRD

cd $GOPATH/src/github.com/kubeedge/kubeedge/build/crds/reliablesyncs
kubectl create -f cluster_objectsync_v1alpha1.yaml
kubectl create -f objectsync_v1alpha1.yaml

复制cloudcore二进制文件

cd $GOPATH/src/github.com/kubeedge/kubeedge/cloud
mkdir -p ~/cmd
cp cloudcore ~/cmd/

创建并配置

mkdir -p /etc/kubeedge/config/ 
~/cmd/cloudcore --minconfig > /etc/kubeedge/config/cloudcore.yaml 
vim /etc/kubeedge/config/cloudcore.yaml          #里面的内容基本无需修改

运行cloudcore

cd ~/cmd/
./cloudcore               #如果运行时没有报错,可以放到后台运行
nohup ./cloudcore &       #这一步为后台运行cloudcore       

前台运行cloudcore时,如果出现address报错,输入以下命令即可

mkdir -p /var/lib/kubeedge

查看是否在运行cloudcore

ps aux          #查找是否存在cloudcore线程

三、KubeEdge边端edge1部署

1.克隆kubeedge源码包

安装git软件

yum install -y git

在码云上克隆源码包

git clone https://gitee.com/liu_hu_wei/kubeedge.git $GOPATH/src/github.com/kubeedge/kubeedge

切换到 Kubeedge V1.2正式版

cd $GOPATH/src/github.com/kubeedge/kubeedge
git checkout -b v1.2.0 v1.2.0

2.边端edgecore部署

编译edgecore源码(要求设备内存大于2G)

cd $GOPATH/src/github.com/kubeedge/kubeedge
make all WHAT=edgecore

复制edgecore二进制文件

cd $GOPATH/src/github.com/kubeedge/kubeedge/edge
mkdir -p ~/cmd
cp edgecore ~/cmd/

创建edgecore配置文件并配置

mkdir -p /etc/kubeedge/config/
~/cmd/edgecore --minconfig > /etc/kubeedge/config/edgecore.yaml
vim /etc/kubeedge/config/edgecore.yaml 

modules.edged.nodeIP修改成你边缘设备的IP地址(要求云端计算机可以Ping通)。
modules.edged.podSandboxImage服从以下规定
如果为X86架构填写: kubeedge/pause:3.1
如果为ARM架构填写:kubeedge/pause-arm:3.1
如果为ARM64架构填写:kubeedge/pause-arm64
modules.edgehub.websocket.server云端的IP地址加上:10000。例如127.0.0.1:10000

将云端生成的证书(两个文件夹)拷贝到边端
将两个文件夹拷贝到/etc/kubeedge,文件位置和云端的一样。
启动edgecore

mosquitto -d -p 1883
cd ~/cmd
./edgecore

之后就可以在云端输入命令查看edge节点是否添加进集群中。

kubectl get nodes          #此操作在云端进行,显示存在edge节点,表示KubeEdge框架部署成功。

四、KubeEdge框架应用部署实例

官方文档上给了一个实例:在边端设备上部署一个nginx的服务器。
在云端服务器上操作

kubectl apply -f $GOPATH/src/github.com/kubeedge/kubeedge/build/deployment.yaml

等待一定的时间过后,可以查看pods状态

kubectl get pods          #显示Running表示部署成功,可以在浏览器中输入https://边端的IP地址,查看

五、结语

本人2020年前对kubeedge和k8s从来没有了解,甚至对Docker只是听说过,因为项目需要,从2020年1月2日开始查阅相关资料,入手尝试部署kubeedge框架,经过从kubeedge官方网站查阅文档,还有浏览github、CSDN、博客园等国内外知名知识分享网站,最终成功部署,同时希望通过自己写下的部署过程的文档,帮助一些想要快速部署,但是苦于对框架完全陌生,又时间紧迫的朋友,希望可以帮助大家。
最后感谢创思边缘项目组中的其他六位成员,也感谢我们的指导老师和华为的工作人员的帮助,还有感谢在部署过程中认识的一些大佬。正是因为各位的开源精神和对技术分享的无私,我们才能在文档极具匮乏的条件下部署成功,我深知自己技术和能力比较差,该博客仅用于个人经验记录和分享。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值