Kubeedge 1.5 部署指南
本文介绍了如何在一台ubuntu18.04和一台装有ubuntu20.04的树莓派4B上部署kubeedge1.5的过程。
其中ubuntu作为cloud节点,树莓派4B作为edge节点。
1. 系统配置
1.1 集群环境
主机名
系统
ip
角色
负载
master-node
ubuntu18.04
10.112.55.6
cloud
k8s、docker、cloudcore
ly-desktop
rapsberry pi 4 +ubuntu20.04
10.112.139.139
edge
docker、edgecore
可以通过sudo hostnamectl set-hostname edge-node-1
改一下主机名。但是ly-desktop重启后自动变成了ly-desktop,目前还没发现原因
1.2 关闭防火墙和自启动
1 | sudo systemctl stop ufw |
1.3 禁用SELinux
编辑文件/etc/selinux/config,将SELINUX修改为disabled,如下:
官网1.3 上说这样能关,但是我的系统上没有这个文件,我就没管它,后面好像也没报错
1.4 关闭系统Swap
在 /etc/fstab 中将swap那一行注释掉
1 | sed -i 's/.*swap.*/#&/' /etc/fstab |
通过free -m
看到swap的确被关闭了
1.5 安装docker
卸载旧版本
1 | sudo apt-get remove docker docker-engine docker.io |
安装相关软件
1 | sudo apt-get update |
增加软件源GPG密钥
1 | curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add |
添加软件源(unbuntu 是amd、树莓派是arm)
1 | sudo add-apt-repository \ |
安装
1 | sudo apt-get update |
1 | sudo mkdir -p /etc/docker |
1.6 重启
1 | sudo reboot |
2. cloud节点部署k8s
2.1 安装kubeadm、kubeadm、kubectl
1 | sudo apt-get update && sudo apt-get install -y ca-certificates curl software-properties-common apt-transport-https curl |
2.2 配置内核参数
1 | sudo cat <<EOF > /etc/sysctl.d/k8s.conf |
2.3 初始化master
使用阿里云的镜像,然后使用了非默认的CIDR(与宿主机局域网CIDR不一样)
1 | sudo kubeadm init --pod-network-cidr 172.16.0.0/16 \ |
上面的命令执行成功后,会输出一条和kubeadm join相关的命令
1 | mkdir -p $HOME/.kube |
2.4 安装calico插件
1 | kubectl apply -f https://docs.projectcalico.org/v3.11/manifests/calico.yaml |
2.5 查看
1 | kubectl get nodes |
2.6 dashboard安装
2.6.1 创建recommended.yaml
在 ~目录下新建 recommended.yaml 文件,复制下面链接的文件进去
https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta5/aio/deploy/recommended.yaml
并且将其中部分内容进行修改
1 | #增加直接访问端口 |
2.6.2 创建证书
1 | mkdir dashboard-certs |
2.6.3 安装dashboard
1 | #安装 |
2.6.4 创建dashboard管理员
创建账号
1 | vi dashboard-admin.yaml |
1 | # 写入 |
1 | #保存退出后执行 |
为用户分配权限
1 | vi dashboard-admin-bind-cluster-role.yaml |
1 | apiVersion: rbac.authorization.k8s.io/v1 |
1 | #保存退出后执行 |
2.6.5 web访问
查看并复制token
1 | kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}') |
访问 https://10.112.55.6:30008,输入token即可
3. cloud节点部署cloudcore
3.1 安装golang
下载 https://golang.google.cn/dl/go1.15.6.linux-amd64.tar.gz 并上传到ubuntu上
1 | tar -zxvf go1.14.4.linux-amd64.tar.gz -C /usr/local |
3.2安装 make、gcc
1 | sudo apt-get install make gcc |
如果报错显示
1 | Depends: *** (= 4:9.3.0-1ubuntu2) but 4:10.2.0-1ubuntu1 is to be installed |
可以尝试通过 sudo apt purge ***
然后重新安装
如果sudo apt purge ***
不被允许,可以尝试将ubuntu换回原来的国外源,重新安装
3.3 部署cloudcore
3.3.1 下载源码
1 | git clone https://gitee.com/ly10208/kubeedge.git $GOPATH/src/github.com/kubeedge/kubeedge |
3.3.2 编译keadm
1 | cd $GOPATH/src/github.com/kubeedge/kubeedge |
3.3.3 创建cloud节点
1 | ./_output/local/bin/keadm init |
一般来说如果ubuntu不能科学上网的话,就会提示连接失败。
需要提前去 https://github.com/kubeedge/kubeedge/releases/tag/v1.5.0 下载 kubeedge-v1.5.0-linux-amd64.tar.gz 。
然后将其上传到 /etc/kubeedge/ 路径下
命令行提示什么下载不下来,手动去下载就行,并且上传到ubuntu的指定位置就行,当然需要一台能够科学上网的机器
最后./_output/local/bin/keadm init
执行成功,显示如下
1 | Kubernetes version verification passed, KubeEdge installation will start... |
3.4 查看cloudcore状态
systemctl status cloudcore
查看运行情况
journalctl -u cloudcore -n 100
查看最近100条日志
运行正常即可
3.5 获取token
1 | ./_output/local/bin/keadm gettoken |
4. edge节点部署edgecore
4.1. 安装golang
下载 https://golang.google.cn/dl/go1.15.6.linux-armd64.tar.gz 并上传到树莓派上,注意树莓派是arm架构的cpu,需要下载arm版本的压缩包
剩下的和 3.1 一模一样
4.2安装 make、gcc
与3.2一模一样
4.3 部署edgecore
4.3.1 下载源码,并编译
同上
4.3.2 创建edge节点
1 | cd $GOPATH/src/github.com/kubeedge/kubeedge |
需要提前去 https://github.com/kubeedge/kubeedge/releases/tag/v1.5.0 下载 kubeedge-v1.5.0-linux-arm64.tar.gz 。下载arm压缩包
然后将其上传到 /etc/kubeedge/ 路径下
依旧如上3.3.3一样缺啥补啥。
4.4 查看edgecore状态
systemctl status edgecore
查看运行情况
journalctl -u edgecore -n 100
查看日志
运行正常即可
5. 配置完成
去cloud节点查看
1 | ly@master-node:/$ kubectl get nodes |
可以发现edge-node-1节点已经加入了
但是edge节点的两个pod都有问题,目前还不知道解决方法,不过似乎不影响使用