1.系统配置与部署
1.1环境信息
| 角色 | IP | 服务部署 |
|---|---|---|
| 云端 | 10.10.102.20 | k8s 的 master,docker,cloudcore |
| 边缘端 | 10.10.102.94 | docker,edgecore |
以上机器都要安装 docker ,由于云端是 k8s 的 master ,而我已经装好了,所以不需再去执行,只需边缘端执行以下操作就可以!如果你没有现成的 k8s 集群,就需要所有的机器都要执行,且云端需要部署一套 k8s 集群。
1.2关闭防火墙及selinux(边缘端)
#关闭防火墙systemctl stop firewalldsystemctl disable firewalld#禁用 selinuxsetenforce 0sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux#关闭 swap (边缘端)sed -i 's/.*swap.*/#&/' /etc/fstabecho vm.swappiness=0 >> /etc/sysctl.conf#设置主机名 (边缘端)hostnamectl set-hostname edge1 #设置成对应的主机名#安装 docker (边缘端)yum install -y yum-utils device-mapper-persistent-data lvm2yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum makecache fastyum -y install docker-cesystemctl enable dockersystemctl start docker#重启机器 (边缘端)reboot
2.KubeEdge安装与配置
2.1云端配置
云端主要是负责编译 kubeEdge 的相关组件与运行 cloudcore,所以需要准备 golang 环境,以及需要去官方 github 上拉取源码,进行编译
#配置 golang 环境
wget https://golang.google.cn/dl/go1.14.4.linux-amd64.tar.gz
tar -zxvf go1.14.4.linux-amd64.tar.gz -C /usr/local
#配置 golang 环境变量
vim /etc/profile
#文件末尾追加
# golang env
export GOROOT=/usr/local/go
export GOPATH=/data/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
# source /etc/profile
# mkdir -p /data/gopath && cd /data/gopath
# mkdir -p src pkg bin
#配置 cloudcore
#下载 kubeEdge 源码
git clone https://github.com/kubeedge/kubeedge.git $GOPATH/src/github.com/kubeedge/kubeedge
#编译 keadm
cd $GOPATH/src/github.com/kubeedge/kubeedge
make all WHAT=keadm
#说明:编译后的二进制文件在./_output/local/bin下,单独编译cloudcore与edgecore的方式如下:
make all WHAT=cloudcore
yum -y install gcc
make all WHAT=edgecore
#将编译好的二进制文件 copy 到/usr/local/bin 中
cp _output/local/bin/* /usr/local/bin/
创建 cloudcore 节点
keadm init --advertise-address="10.10.102.20"
期间会远程拉取一些yaml文件,耐心等待即可,最后出现如下输出表示成功
Kubernetes version verification passed, KubeEdge installation will start...
......
KubeEdge cloudcore is running, For logs visit: /var/log/kubeedge/cloudcore.log
CloudCore started
2.2Edge端配置
Edge 端也通过 keadm 进行配置,可以将 cloud 端编译生成的二进制文件 scp 到 Edge 端
scp -rp _output/local/bin/* root@10.10.102.94:/usr/local/bin/
#从云端获取令牌 token (云端)
#获取的令牌用于边缘节点加入时使用,类似于 k8s 的节点加入集群中
keadm gettoken
8684deb4b3273edeb2af5f22e91b17ded18a9f2bc18b9ddd9000ba2f5ef580b2.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDQ0ODg2NzR9.4mRutBzfKLLqu4-oM_IvZrbmXPdQB5QeQawB7cXjcDU
#加入边缘节点
#两台机器分别执行以下命令
keadm join --cloudcore-ipport=10.10.102.20:10000 --token=8684deb4b3273edeb2af5f22e91b17ded18a9f2bc18b9ddd9000ba2f5ef580b2.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDQ0ODg2NzR9.4mRutBzfKLLqu4-oM_IvZrbmXPdQB5QeQawB7cXjcDU
#出现以下输出表示安装成功
KubeEdge edgecore is running, For logs visit: journalctl -u edgecore.service -b
可能期间会遇到报错,可以参考下面的问题记录
3.清理KubeEdge
#从集群中清理该节点
kubectl drain edge01 --delete-local-data --force --ignore-daemonsets
kubectl delete node edge1
kubeedge运行文件:
1、/etc/kubeedge/: 证书、配置文件(云边均有)。
2、/var/lib/kubeedge/: 云端有socket文件kubeedge.sock ,边缘端有数据库文件edgecore.db。
如果要完全清理kubeedge环境,上述目录需要删除。
4.问题记录
问题1


这个两个文件下载不到,原因是DNS服务器解析地址解析到了一个不太好连接的IP地址
问题解决
我们可以在ipaddress查看这个地址的IP地址
先尝试是否能够ping通,可以的话就将其添加到/etc/hosts,即可成功下载该文件
问题2
edgecore成功运行
但是master上找不到新加入的节点
使用journalctl -u edgecore.service -b查看日志发现下面这个问题
问题解决
这台机器原来是Kubernetets的一个node节点,我是直接删除node后开始部署KubeEdge,由于Kubelet和edgecore不能共存,初步猜测是Kubelet没有卸载干净,研究了很久怎么将kubelet卸载完全,都没成功,于是重装大法好,联系公司的运维重装系统
