安装有两种方式,一种源码编译手动安装,还有一种是使用kubeedge提供的工具-keadm,网上讲的源码编译方式会遇到很多困难,这里先采用keadm工具安装
1、安装cloudcore
我这里有一个节点部署了k8smaster,cloudcore需要能访问到api server,因此cloudcore安装在了master节点上,网上也是这样建议的
以下是网上搜到的版本对应关系
我的k8s是1.23版本,因此选择的1.13的kubeedge
(1)下载keadm(这里我下载的1.19版本keadm,后面解释理由)
https://github.com/kubeedge/kubeedge/releases
解压安装
tar -zxvf keadm-v1.19.2-linux-arm64.tar.gz
cp keadm-1.19.2-linux-arm64/keadm/keadm /usr/sbin/keadm
keadm version 可以查到版本号证明安装完成
(2)初始化安装cloudcore
将~/.kube/config复制到/root/.kube/config
sudo cp ~/.kube/config /root/.kube/config
删除master节点上污点
查看污点 kubectl describe node | grep Taints
删除污点 kubectl taint node master <污点>-
示例:
keadm init --advertise-address=192.168.137.128 --kubeedge-version=v1.13.0,完成初始化,通过kubectl get pods -n kubeedge 可以看到一个cloudcore的pod
--advertise-address是cloud节点IP
获得token
keadm gettoken
(3)安装edgecore
cloudcore节点安装好cloudcore后,我将keadm版本改回了1.13版本,和kubeedge保持一致
edge节点同样安装keadm1.13版本,执行keadm join --runtimetype=docker --cloudcore-ipport=192.168.137.128 --token=<在cloudcore中获得的token>
【问题】
1、安装了keadm 1.13版本,初始化cloudcore时,即使指定了版本,也会自动安装最新版,这里升级到1.19版本解决了问题
2、初始化cloudcore时,提示execute keadm command failed: timed out waiting for the condition,这是由于master节点加了污点不允许有pod调度到此节点上,按照上面步骤删除污点