赵帅@Kevin · 2020年09月23日

云芯一号测评:搭建Golang开发环境,测试Kubeedge

非常感谢极术社区的开发板,一直忙着内部项目,最近终于有时间搭建环境进行kubeedge的测试。

Kubeedge是云原生基金会(CNCF)下面的开源项目,旨在将Kubernetes的容器管理能力拓展到边缘侧的节点,目前是华为和很多公司共同开发和力挺的项目,用Golang开发。详细的项目信息可以参见:Kubeedge

我们这次的测试,主要设计Golang开发环境搭建,Kubeedge边缘侧EdgeCore在边缘侧进行部署,以及Kubeedge Cloud Core在数据中心的部署三部分。

Golang环境搭建

在Ubuntu1804上搭建Golang开发环境,可以参考golang官网下载对应的包,过程很简单。
tar -C /usr/local -xzf go1.15.2.linux-arm64.tar.gz
建立GOPATH,
mkdir $HOME/test/go
编辑$HOME/.profile,添加
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/test/go

设置GOPATH目录并下载Kubeedge:
cd $HOME/test/go
mdkir src bin pkg
mkdir -p src/github.com/kubeedge
cd src/github.com/kubeedge
git clone https://github.com/kubeedge/kubeedge
cd kubeedge

编译,首先解决依赖:
go mod tidy
ARCH=arm64 make

编辑完成后,在_output/目录下能够找到kubedge的二进制包

部署CloudCore

cloudcore组件需要运行在数据中心侧,唯一要求是需要事先部署好Kubernetes集群。可以选用Kubeadm的方式进行部署,参考链接
sudo kubeadm init --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers' --pod-network-cidr=10.244.0.0/16 --kubernetes-version v1.18.3 --apiserver-advertise-address ****
我们注意Kubernetes默认会从Google镜像仓库拉去image,众所周知的愿意,国内无法访问,因此可以设置国内的镜像仓库。
如果你的部署节点是多网卡,希望Kubernetes可以被某个网卡IP从外部访问,请设置:--apiserver-advertise-address

这部分可以选择在X86机器上进行,唯一要求是保证edgecore节点和cloudcore节点能够进行网络访问。

Kubernetes部署完成后,我们进行Cloudcore部署。cloudcore是运行在Kubernetes集群重点一个controller,用来与kubernetes进行交互,并与Edgecore进行交互管理edge侧节点的信息。

kubeedge提供了keadm工具,能够一键部署cloudcore组件
keadm组件可以自己编译,或者从Kubeedge下载.
sudo ./keadm init --kube-config=/home/test/.kube/config --kubeedge-version=1.4.0

一键部署过程中,keadm会下载部署kubeedge需要的package和配置文件,多数都存储在https://raw.githubusercontent...,可以Fan Qiang下载后事先保存在/etc/kubeedge/目录下
需要的文件如下所示:
/etc/kubeedge/
├── config
│   └── cloudcore.yaml
├── crds
│   ├── devices
│   │   ├── devices_v1alpha1_device.yaml
│   │   ├── devices_v1alpha1_devicemodel.yaml
│   │   ├── devices_v1alpha2_device.yaml
│   │   └── devices_v1alpha2_devicemodel.yaml
│   └── reliablesyncs
│   ├── cluster_objectsync_v1alpha1.yaml
│   └── objectsync_v1alpha1.yaml
├── kubeedge-v1.4.0-linux-amd64
│   ├── cloud
│   │   ├── admission
│   │   │   └── admission
│   │   ├── cloudcore
│   │   │   └── cloudcore
│   │   └── csidriver
│   │   └── csidriver
│   ├── edge
│   │   └── edgecore
│   └── version
└── kubeedge-v1.4.0-linux-amd64.tar.gz

或者Token,edgecore需要:
sudo ./keadm gettoken --kube-config /home/test/.kube/config

部署Edgecore

首先我们需要安装Docker,非常简单
apt install docker.io即可
docker ps查看是否可以运行。

此后,在云芯一号一侧,我们同样需要keadm工具。
运行命令:
sudo ~/keadm join --cloudcore-ipport=<Cloud-Core-IP>:10000 --token=4e3c418168b3c04dc64775677e74c2caecee0c20a9aaa1d4dd53042a50dcf99a.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDA5NDQxNDZ9.1luDapHaK4fBSgDRgpCejdcKyzO7kgPAWbgi3n2fQes

部署过程中同样要下载一些必要组件,会出现网络问题。
kevin@kevin-rk3399:~$ tree /etc/kubeedge
/etc/kubeedge
├── checksum_kubeedge-v1.4.0-linux-arm64.tar.gz.txt
├── config
│   ├── cloudcore.yaml
│   └── edgecore.yaml
├── crds
│   ├── devices
│   │   ├── devices_v1alpha1_devicemodel.yaml
│   │   ├── devices_v1alpha1_device.yaml
│   │   ├── devices_v1alpha2_devicemodel.yaml
│   │   └── devices_v1alpha2_device.yaml
│   └── reliablesyncs
│   ├── cluster_objectsync_v1alpha1.yaml
│   └── objectsync_v1alpha1.yaml
├── edgecore
├── edgecore.service
├── kubeedge-v1.4.0-linux-arm64
│   ├── cloud
│   │   ├── admission
│   │   │   └── admission
│   │   ├── cloudcore
│   │   │   └── cloudcore
│   │   └── csidriver
│   │   └── csidriver
│   ├── edge
│   │   └── edgecore
│   └── version
└── kubeedge-v1.4.0-linux-arm64.tar.gz

简单验证

edgecore一侧,可以查节点相关log
sudo journalctl -u edgecore.service -f

CloudCore一次,/var/log/kubeedge/cloudcore.log 也有相关显示。

暂时分享到这里,后面会加入新的功能,通过Kubeedge对边缘侧的IOT功能进行测试和验证,丰富Kubeedge的可用性。

推荐阅读
关注数
4278
内容数
71
低成本Arm微服务器开发平台“云芯1号”教程及应用,欢迎关注
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息