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、博客园等国内外知名知识分享网站,最终成功部署,同时希望通过自己写下的部署过程的文档,帮助一些想要快速部署,但是苦于对框架完全陌生,又时间紧迫的朋友,希望可以帮助大家。
最后感谢创思边缘项目组中的其他六位成员,也感谢我们的指导老师和华为的工作人员的帮助,还有感谢在部署过程中认识的一些大佬。正是因为各位的开源精神和对技术分享的无私,我们才能在文档极具匮乏的条件下部署成功,我深知自己技术和能力比较差,该博客仅用于个人经验记录和分享。