最近在学习云边协同,需要搭建一个云边协同的实验环境,kubernetes+KubeEdge+sedna,安装过程中遇到了一系列的问题,特此记录总结。
云端:Centos7+ kubernetes 1.23.8 + Docker
这里我们的centos使用的是 centos7.9, 不同版本的系统对k8s影响较大,具体看实际情况而定。 有的还需要更新系统内核。
前置需求
部署k8s环境,但k8s本身是一个相当前沿的项目而且架构仍然在改变,所以网上的教程会有很多旧版本的坑,加之官方文档比较晦涩难懂,因此下面这篇文章给出了一个详细而又准确的安装部署教程,
参考地址: kubernetes 的安装与部署:https://blog.csdn.net/feiyuchuixue/article/details/126373118
这篇博客面向环境搭建,你不会学到太多K8S具体内容和工作原理,但你能知道自己一条命令下去做了什么,如何从log中获取有用信息并贴出一些官方文档链接,文章中提到了主节点master和从节点node的安装和配置,但是本文安装kubeedge只需要单节点 kubernetes就可以,从节点可选择性安装。
关于kubernetes的安装与部署有一篇文章已经讲解很详细了,并且我也是全程参考该文档实验kubernetes的主备节点的安装,该文章把其中可能遇到的问题都描述清楚了,根据该文档可以傻瓜式操作完成,本文就不再叙述kubernetes的安装与部署。
请确保已经在云端部署好k8s集群。
KubeEdge部署要求
参考地址:https://github.com/kubeedge/kubeedge#kubernetes-compatibility
由于上文我们按照的k8s版本是1.23.8,所以kubeedge的版本应该是1.13以上,这里版本一定要对应上,不对应会出现很多莫名其妙的问题。
使用命令下载
wget https://github.com/kubeedge/kubeedge/releases/download/v1.13.0/keadm-v1.13.0-linux-amd64.tar.gz
如果网络状况不好,可提前下载好,下载地址:https://github.com/kubeedge/kubeedge/releases/,下载请确保一定要和k8s版本对应。
我选择的版本是1.13,如下图所示,标注的两个要下载下来备用。
下载好之后通过rz命令或者其他工具上传到云端服务器中,
然后解压缩
tar -zxvf keadm-v1.13.0-linux-amd64.tar.gz
将其配置进入环境变量,方便使用
cd keadm-v1.13.0-linux-amd64/keadm/
cp keadm /usr/sbin/ #将其配置进入环境变量,方便使用
输入keadm version
,如果能输出版本信息,说明安装成功。如下图所示:
注意:默认情况下需要开放10000,10002端口
在集群云端节点使用如下命令,将安装cloudcore,生成证书并安装CRD,–advertise-address指定云端的公开地址(边缘端可ping通的内网地址也可)
keadm init --advertise-address=172.23.70.235 --kube-config=$HOME/.kube/config --kubeedge-version=1.13.0
使用此命令会从gitHub上下载很多文件,网络有问题的用户,建议提前下载好,放置/etc/kubeedge
目录下。
F0608 11:40:15.689702 5530 keadm.go:27] failed to exec 'bash -c cd /etc/kubeedge/crds/devices && wget -k --no-check-certificate --progress=bar:force https://raw.githubusercontent.com/kubeedge/kubeedge/release-1.7/build/crds/devices/devices_v1alpha2_device.yaml', err: --2021-06-08 11:39:54-- https://raw.githubusercontent.com/kubeedge/kubeedge/release-1.7/build/crds/devices/devices_v1alpha2_device.yaml
类似这种报错都是文件没有下载下来...
kubeedge-v1.13.0-linux-amd64.tar.gz文件位置:https://github.com/kubeedge/kubeedge/releases/
cloudcore.service在源码目录,先选择对应版本下载源码
下载好之后放到/etc/kubeedge
目录下
此刻,相信到现在再执行上面的那个init命令应该会很快顺利完成,如果还有什么问题,可以参考我其他博客中遇到的问题解决办法。
边缘节点加入云端节点需要通过token认证方式,使用如下命令获取边缘节点加入集群的token:
keadm gettoken
为方便再重复一遍
# 1、下载
wget https://github.com/kubeedge/kubeedge/releases/download/v1.13.0/keadm-v1.13.0-linux-amd64.tar.gz
# 2、解压
tar -zxvf keadm-v1.13.0-linux-amd64.tar.gz
# 3、将其配置进入环境变量,方便使用
cd keadm-v1.13.0-linux-amd64/keadm/
cp keadm /usr/sbin/ #将其配置进入环境变量,方便使用
keadm join --cloudcore-ipport=172.23.70.235(云端ip):10000 --kubeedge-version=1.13.0 --token=步骤2.3云端生成的token
这里也可能会因为网络原因下载失败,可以将文件提前下载好,创建/etc/kubeedge目录,将提前准备好的文件放入即可,边缘端所需文件如下,其余文件会自动生成。
这一步用到的edgecore.service 就是上面说提到的让都下载下来的。
在边缘节点使用如下命令,查看节点状态,
kubectl get nodes
输出如下图所示表示顺利安装完成。
如遇其他问题可参考本文其他博客查看有无同样的问题和解决方案!
之后有时间再整理kubeedge+sedna云边端环境的安装和部署以及使用问题等。
首先推荐几个写的很好的参考链接: