本教程已过时,请看最新版本

https://blog.csdn.net/weixin_43168190/article/details/127422527

本教程已过时,请看最新版本

https://blog.csdn.net/weixin_43168190/article/details/127422527

本教程已过时,请看最新版本

https://blog.csdn.net/weixin_43168190/article/details/127422527

本教程已过时,请看最新版本

https://blog.csdn.net/weixin_43168190/article/details/127422527

本教程已过时,请看最新版本

https://blog.csdn.net/weixin_43168190/article/details/127422527

本教程已过时,请看最新版本

https://blog.csdn.net/weixin_43168190/article/details/127422527

准备工作

首先要配置好Kubernetes集群
使用VMware虚拟机搭建Kubernetes的Master和Worker节点 最全教程(1)准备工作

在Master节点要启动Kubernetes集群,即使用kubeadm init命令,可以看上面教程(2)中的前半部分,在worker节点上不要加入集群,不要使用kubeadm join命令,因为我们要用kubeedge来加入。

Cloud节点配置

进入GitHub的release页面复制keadm的下载地址,使用wget命令下载:(注意自己去GitHub找地址,我这里用的是1.11.2的arm版,跟一般amd64的机器不一样,不要完全复制我的)

wget https://github.com/kubeedge/kubeedge/releases/download/v1.11.2/keadm-v1.11.2-linux-arm64.tar.gz

解压下载好的文件

 tar -zxvf keadm-v1.11.2-linux-arm64.tar.gz

然后进入解压后的目录

cd keadm-v1.11.2-linux-arm64/keadm

然后运行

./keadm init

我这里出现了这样的错误:

等待条件超时
等待条件超时
参考另一个老哥说的是因为cloudcore的部署文件里没有写污点容忍,而主节点是有一个“我是主节点”这样一个污点,所以cloudcore就无法部署。但这个配置文件应该是内置在keadm里的,不能改,即使按那个老哥的方法改了,手动改了,但是继续运行keadm后续步骤时,他会让你重置keadm,就很不合理。我用的办法是去除master节点的污点

kubectl taint nodes --all node-role.kubernetes.io/master-

然后重置一下keadm

./keadm reset 

这次就正常了,等待下载完成后,结果如下:
cloudcore成功

CloudCore成功启动。
使用

./keadm gettoken

获取token
token

Edge节点配置

下载keadm,与上面Master的下载方法相同

wget https://github.com/kubeedge/kubeedge/releases/download/v1.11.2/keadm-v1.11.2-linux-arm64.tar.gz

解压下载好的文件

 tar -zxvf keadm-v1.11.2-linux-arm64.tar.gz

然后进入解压后的目录

cd keadm-v1.11.2-linux-arm64/keadm

然后这里就和CloudCore不一样了,首先要获取token,在Cloudcore执行

./keadm gettoken

输出:

root@master:/home/default/keadm-v1.11.2-linux-arm64/keadm# ./keadm gettoken
9dcc80989de5d5e20d0280120127aec1d45751ba07e2405de877e573fec4d804.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2NjYzMjM0MzR9.t-yGshvDHLAcKdjVIBW6ZaKz8IGtLl9qMWrqEC8jSAQroot@master:/home/default/keadm-v1.11.2-linux-arm64/keadm# 

注意这里它没有换行,token的结尾是在用户名前面,也就是我这里第二行的root前面,复制出来。

在边缘端执行:

#<ip>是master的ip,<token>就是上面获取的token
./keadm join --cloudcore-ipport=<ip>:10000 --token=<token>

我这里是:

./keadm join --cloudcore-ipport=192.168.224.128:10000 --token=d1d954a9f2e6a326124c4b4c1fa06106dd889705cdaac8d473ddae5e9cdb1894.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1OTQ5NjUwMTF9.luIKz7WTaaYkA9OKxHaBkU7QmH1MeJzquI1iiwsJY4o

启动成功

在Master上验证是否成功,使用

kubectl get nodes -owide

如果出现版本中带有kubeedge的node,则说明部署成功。如果没有,可以去看edgecore的日志,在上面运行结果中提到:

journalctl -u edgecore.service -xe

错误日志

我第一次失败的原因是Docker中Cgroup Driver的问题,因为kubeedge的默认驱动为cgroupfs,而我的docker以前把默认驱动改成了systemd,所以无法启动。解决方法是修改/etc/docker/daemon.json,把 "exec-opts": ["native.cgroupdriver=systemd"]删掉,注意不要把大括号删了。

重启一下docker

systemctl restart docker

然后主节点再去

kubectl get nodes

部署成功

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐