最近在学习云边协同,需要搭建一个云边协同的实验环境,kubernetes+KubeEdge+sedna,安装过程中遇到了一系列的问题,特此记录总结。
kubernetes 的安装与部署:
实验环境
云端:Centos7+ kubernetes 1.23.8 + Docker
这里我们的centos使用的是 centos7.9, 不同版本的系统对k8s影响较大,具体看实际情况而定。 有的还需要更新系统内核。
部署教程
前置需求
了解image、container、pod等概念
基础指令:容器运行时工具基本用法
能耐心读容器日志
能耐心读大量文档
部署k8s环境,但k8s本身是一个相当前沿的项目而且架构仍然在改变,所以网上的教程会有很多旧版本的坑,加之官方文档比较晦涩难懂,因此下面这篇文章给出了一个详细而又准确的安装部署教程,
参考地址: kubernetes 的安装与部署:https://blog.csdn.net/feiyuchuixue/article/details/126373118
这篇博客面向环境搭建,你不会学到太多K8S具体内容和工作原理,但你能知道自己一条命令下去做了什么,如何从log中获取有用信息并贴出一些官方文档链接,文章中提到了主节点master和从节点node的安装和配置,但是本文安装kubeedge只需要单节点 kubernetes就可以,从节点可选择性安装。
关于kubernetes的安装与部署有一篇文章已经讲解很详细了,并且我也是全程参考该文档实验kubernetes的主备节点的安装,该文章把其中可能遇到的问题都描述清楚了,根据该文档可以傻瓜式操作完成,本文就不再叙述kubernetes的安装与部署。
kubeedge的安装部署
1、部署要求
请确保已经在云端部署好k8s集群。
KubeEdge部署要求
机器配置:
云端: CPU2核+,内存2GB+,硬盘30GB+
边缘: CPU1核+,内存256MB+
网络要求:
云端: 外网访问权限,开放 10000-10004 端口
边缘:外网访问权限
操作系统: ubuntu、 centos等
CPU架构: x86 64、arm64、arm32
版本兼容
参考地址:https://github.com/kubeedge/kubeedge#kubernetes-compatibility
由于上文我们按照的k8s版本是1.23.8,所以kubeedge的版本应该是1.13以上,这里版本一定要对应上,不对应会出现很多莫名其妙的问题。
2、安装
2.1 下载keadm并解压
使用命令下载
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
,如果能输出版本信息,说明安装成功。如下图所示:
2.2 设置云端
注意:默认情况下需要开放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 类似这种报错都是文件没有下载下来...
用红框标记的文件可以提前从gitHub上下载好,
kubeedge-v1.13.0-linux-amd64.tar.gz文件位置:https://github.com/kubeedge/kubeedge/releases/
cloudcore.service在源码目录,先选择对应版本下载源码
下载好之后放到/etc/kubeedge目录下
此刻,相信到现在再执行上面的那个init命令应该会很快顺利完成,如果还有什么问题,可以参考我其他博客中遇到的问题解决办法。
2.3 获取token
边缘节点加入云端节点需要通过token认证方式,使用如下命令获取边缘节点加入集群的token:
keadm gettoken
至此云端节点部分已经安装完毕。
3 设置边缘端
3.1 同理先下载keadm,解压,
为方便再重复一遍
# 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/ #将其配置进入环境变量,方便使用
3.2 使用如下命令加入到集群
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云边端环境的安装和部署以及使用问题等。
参考资料
首先推荐几个写的很好的参考链接:
kubernetes 的安装与部署:https://blog.csdn.net/feiyuchuixue/article/details/126373118
keadm安装KubeEdge:https://blog.csdn.net/qq_46618998/article/details/120549346
KubeEdge-Sedna搭建指南–从零开始搭建边云协同应用:https://zhuanlan.zhihu.com/p/572681911
(https://docs.kubeedge.io/zh/docs/setup/keadm_zh/)
小白的边缘计算初探:kubeedge1.7使用keadm安装(半手动安装):https://www.codeleading.com/article/42775790842/
kubeEdge官网:[https://docs.kubeedge.io/zh/docs/setup/keadm_zh/]