非常感谢极术社区的开发板,一直忙着内部项目,最近终于有时间搭建环境进行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一侧,可以查节点相关logsudo journalctl -u edgecore.service -f
CloudCore一次,/var/log/kubeedge/cloudcore.log
也有相关显示。
暂时分享到这里,后面会加入新的功能,通过Kubeedge对边缘侧的IOT功能进行测试和验证,丰富Kubeedge的可用性。