ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Ubuntu20.04+树莓派部署Kubeedge v1.6.1

2021-03-26 16:58:17  阅读:641  来源: 互联网

标签:Ubuntu20.04 树莓 Kubeedge ## sudo apt https kubeedge com


文章目录

PC - Ubuntu 192.168.0.103

Ubuntu进入root

sudo passwd root
//[acc]root [password]root
## 注意,如果你想全程在root用户下进行操作,请把所有的
## 相关文件全部放到/root/目录下,否则若有config地址错误
## 需要加相关的指令,可能会踩坑

Ubuntu修改软件源

#1.备份源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

#2.修改源
sudo vim /etc/apt/sources.list
#添加阿里源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

#添加清华源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse multiverse
#3.更新源
sudo apt-get update

#4.软件更新
sudo apt-get upgrade

开启SSH

# 1.安装ssh
sudo apt update
sudo apt install openssh-server # 自动启动

安装基础软件

sudo apt-get install -y \
     apt-transport-https \
     ca-certificates \
     curl \
     gnupg2 \
     lsb-release \
     software-properties-common

开机选项:Ubuntu20.04自动休眠禁止

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

开机选项:localhost:8080 was refused(常见坑)

## 注意所在用户名和根目录
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
cat ~/.bash_profile
source ~/.bash_profile

设置静态IP地址(可选,最好用有线网路由器DHCP分配,用Wifi可能踩坑,有时候树莓派自动变更ip地址)

# 网卡配置文件
cd /etc/netplan
ls

vim 01-network-manager-all.yaml

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
  ethernets:
     ens33: #配置的网卡名称,使用ifconfig -a查看得到
       dhcp4: no #dhcp4关闭
       addresses: [192.168.1.134/24] #设置本机IP及掩码
       gateway4: 192.168.1.1 #设置网关
       nameservers:
         addresses: [192.168.1.1] #设置DNS
         
# 静态ip生效
sudo netplan apply

云端关闭防火墙和SELinux

###防火墙###
##关闭防火墙 
sudo ufw disable
sudo ufw status
##查看开放了哪些端口
sudo ufw status numbered
##开放端口
sudo ufw allow xxx

###SELinux###
#临时关闭SELinux 
setenforce 0
#临时打开SELinux 
setenforce 1
#查看SELinux状态 
getenforce
#开机关闭SELinux 
vim /etc/selinux/config
SELINUX="" 为 disabled ,然后重启。

云端:部署K8s + Kubeedge v1.6.1 + Docker

Ubuntu20.04 安装部署Kubernetes-v1.20.x

开机选项:关闭swap,不然无法启用kubelet

#暂时关闭
swapoff -a
free -h

#永久生效
sudo vi /etc/fstab
#在其中注释掉swap行

修改hostname:云端master,边缘节点edge-node-n

#永久修改
sudo vim /etc/hostname

#暂时修改
hostname master

确保时区正确(常见坑)

##所有设备保持处在上海区
sudo timedatectl set-timezone Asia/Shanghai
##日志时间戳生效
sudo systemctl restart rsyslog

安装Docker以及修改CGROUP_ARGS = cgroup(常见坑)

sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
##添加软件源
#amd64
sudo add-apt-repository \
    "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
    $(lsb_release -cs) \
    stable"
#arm64
sudo add-apt-repository \
    "deb [arch=arm] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
    $(lsb_release -cs) \
    stable"
##docker换阿里云源
##注意树莓派默认系统是cgroup的,且不支持systemd,如果不匹配的话可能会出现边缘节点连接上但master看不到
##此处如果docker默认是systemd要改成cgroup或直接将有systemd的那行删除
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://fmrhlw3f.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

安装kubeadm kubeadm kubectl

sudo apt-get update && sudo apt-get install -y ca-certificates curl software-properties-common apt-transport-https curl
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
sudo tee /etc/apt/sources.list.d/kubernetes.list <<EOF 
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

初始化master

##cidr的地址可以不和本地主机完全一致,设置完后两者都可以连接
sudo kubeadm init --pod-network-cidr 172.16.0.0/16 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--ignore-preflight-errors=NumCPU
##初始化完后会有一个kubernetes的join token,如果你是单纯部署kubeedge可以不管。

##token例子   
kubeadm join 192.168.157.128:6443 --token kholaf.mvgnel2b21mxl14w \
    --discovery-token-ca-cert-hash sha256:299c99e2fabfc6f35680472d90b0331d0844d7635e8d438f644fd772108964ff

##把必要的config复制到根目录下
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config   
## 如果worker是从k8s加入
##get secret
##N2M1YTY0NzkxZmM3ZjE0YjUyN2I2MTU5NTM5MjYwYTAxZGE4MzdmNmQ5ZDMxNjlkZTU5NGRmMDUwZTE3MzZiMi5leUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKbGVIQWlPakUyTVRZMU56TXlNelo5LkFLR1Bkd05XWnEwTmZIcld2RDI1T2JyQ1c2X2N2V2ctVWNnMUNJbzN1VHM=
##解码后7c5a64791fc7f14b527b6159539260a01da837f6d9d3169de594df050e1736b2.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTY1NzMyMzZ9.AKGPdwNWZq0NfHrWvD25ObrCW6_cvWg-U
###加入worker node的时候需要用到
#另外,给自己的非sudo的常规身份拷贝一个token,这样就可以执行kubectl命令了

安装calico网络插件

wget https://docs.projectcalico.org/v3.11/manifests/calico.yaml
vim calico.yaml
##修改CALICO_IPV4POOL_CIDR=172.16.0.0/16
kubectl apply -f calico.yaml

##此时你的master节点至少应该是Ready状态

安装GO语言环境

###强烈建议用解压的方式自己下载go官网的tar包,树莓派的go-lang有可能有些许bug
go官网:https://studygolang.com/dl
选择自己需要的版本下载,我的树莓派4需要的是linux-arm64

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YMqNS2o4-1616748664870)(C:\Users\Ysy\AppData\Roaming\Typora\typora-user-images\image-20210326161907538.png)]

#下载到/home/pi/* 下后解压
tar -zxvf go1.14.4.linux-arm64.tar.gz 
#可以在/etc/profile里加入环境变量,以便一次部署失败不用再次source

#GO
export PATH=$PATH:/home/pi/go/bin
#GOPATH
export GOPATH=/home/pi/kubeedge
export PATH=$PATH:$GOPATH/bin

部署cloudcore

### 下载源码
git clone https://gitee.com/ly10208/kubeedge.git $GOPATH/src/github.com/kubeedge/kubeedge

###编译keadm
###此处注意,自从v1.5.0以来单独编译cloudcore、edgecore,自己写service再添加节点的
###方法已经过时了,现在可以完全通过keadm以及kubectl的命令来管理部署kubeedge的边缘节点
###千万不要编译之后混用二进制文件,不然会踩大坑,因为v1.5.0以前的文档在reset后有不少文件
###都不会随着设置重置而自动删除,留下的文件会和keadm执行的许多命令有重名等等bug,如果不小心
###使用了编译出来的cloudcore,建议直接重装系统

cd $GOPATH/src/github.com/kubeedge/kubeedge
sudo make all WHAT=keadm
##以上操作最好都在root用户下进行,以防出现根目录记忆错误。而且不用加sudo
##创建cloud节点
##将keadm加入到系统变量里方便操作
cd keadm-v1.6.1-linux-amd64/keadm && chmod  x keadm && mv keadm /usr/local/bin

#keadm init初始化环节

###如果ubuntu不能break wall的话,会提示连接不到raw.gitxxxxxx.com网站,解决办法如下。
##①如果是tar包,将显示的网址贴到浏览器中下载
##如https://github.com/kubeedge/kubeedge/releases/tag/v1.6.1
##再用xftp传到ubuntu报错的文件夹中(不用解压)。
##②如果是service
##本地vim一个同名文件,将网页上显示的字符串复制到文件中保存即可
##云端大约需要如上操作6个文件
##然后将其上传到 /etc/kubeedge/ 路径下
##当然,如果你不能科学上网,建议换个课题

##一切文件都已经保存并可以运行了之后
keadm init --advertise-address=192.168.0.103 --kubeedge-version=1.6.1 --kube-config=/home/ysy/.kube/config
###初始化成功后显示
Kubernetes version verification passed, KubeEdge installation will start...
...
KubeEdge cloudcore is running, For logs visit:  /var/log/kubeedge/cloudcore.log
CloudCore started

###查看cloudcore是否正常运行
ps aux | grep cloudcore
#如果显示出有两个cloudcore的进程就是正常运行

#查看最近100条日志
journalctl -u cloudcore -n 100 

#从keadm获取kubeedge join的token
keadm gettoken
#输出例子
93fc5ef46596b60019009205bb6c33f98c7eef74f4e3edbfb4bdc29ea8baa71b.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDc3OTU3ODV9.8fIHabQ2jqY4SJL9fziKXYeqwmTY0-F9rPtXyWRFYiE

keadm

keadm init --advertise-address=192.168.0.103 --kubeedge-version=1.6.1 --kube-config=/home/ysy/.kube/config
token=5355eb1f157ff966a604b1d044df259ddd73c608f3c88725e4e4c7fed3a042cb.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTY4Mjk2NjV9.GWVpVDlrBXJtOkq65L8Ar1q-0Bks95C518hdGLLsH_Y

master 状态重置

keadm reset
kubeadm reset
#重置完后需要自己删除/root/.kube,否则会出现authorize错误

Raspberry默认OS 192.168.0.102

系统重做

https://my.oschina.net/tianshl/blog/3040859

ssh免密

#生成公钥私钥
ssh-keygen

#拷贝秘钥
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.102

启用root

sudo passwd root  # 设置root用户密码
sudo passwd --unlock root # 启用root用户
sudo sed -i "s/^#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config  # 设置允许root用户登录
sudo systemctl restart ssh #重启ssh
sudo cp ~/.bashrc /root/.bashrc # 为root用户应用于当前用户相同的bash配置

换国内源

# 先备份软件源
sudo cp /etc/apt/sources.list /etc/apt/sources.list_bak
sudo cp /etc/apt/sources.list_bak /etc/apt/sources.list

#替换软件源地址 
sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list

# 更新索引
sudo apt-get update

公钥问题 PUBLIC_KEY

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 3B4FE6ACC0B21F32
sudo gpg --export --armor 3B4FE6ACC0B21F32 | sudo apt-key add -

同样是安装Docker和Go环境,以及编译keadm环节都和云端一样

此处有一个问题,也是我部署的最后一个bug

我是用VMware启动的Ubuntu云端,但是默认设置的网络连接可能是NAT而不是桥接,如果没有调过来的话树莓派将连不到Ubuntu的Kubeedge系统,也ping不通。

边缘节点创建edge

chmod +x keadm && cp keadm /usr/local/bin

cd $GOPATH/src/github.com/kubeedge/kubeedge


#keadm
keadm join --cloudcore-ipport=192.168.0.103:10000 --edgenode-name=edge-node-1 --token=5355eb1f157ff966a604b1d044df259ddd73c608f3c88725e4e4c7fed3a042cb.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTY4Mjk2NjV9.GWVpVDlrBXJtOkq65L8Ar1q-0Bks95C518hdGLLsH_Y
##把kubeedge-v1.6.1-linux-arm64.tar.gz和service放在好进的目录,为前期部署失败reset做准备
##cd /home/pi
cp kubeedge-v1.6.1-linux-arm64.tar.gz /etc/kubeedge
cp edgecore.service /etc/kubeedge

##vim /etc/kubeedge/edgecore.service内容
##其中edgecore可以是你自己make all WHAT=edgecore编译出来的
##也可以是官网下载的再用xftp传进去,个人推荐下载官网的
[Unit]
Description=edgecore.service

[Service]
Type=simple
ExecStart=/home/pi/kubeedge/edgecore
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

边缘节点kubeedge重置

keadm reset
###很可能systemd里的服务没有自动删除
###且会将/etc/kubeedge里的文件全部删除
rm /etc/systemd/system/edgecore.service

参考安装文档

https://zhuanlan.zhihu.com/p/138554103

https://www.cnblogs.com/Rousseau/p/14180502.html

https://www.cnblogs.com/kkbill/p/12600541.html

https://www.latelee.org/kubeedge/kubeedge-deploy-v1.3.0.html

kubeedge v1.5.0 一:https://blog.csdn.net/weixin_42142364/article/details/111084493

kubeedge v1.5.0 二:http://www.360doc.com/content/21/0211/14/13328254_961682923.shtml

keadm reset
###很可能systemd里的服务没有自动删除
###且会将/etc/kubeedge里的文件全部删除
rm /etc/systemd/system/edgecore.service

参考安装文档

https://zhuanlan.zhihu.com/p/138554103

https://www.cnblogs.com/Rousseau/p/14180502.html

https://www.cnblogs.com/kkbill/p/12600541.html

https://www.latelee.org/kubeedge/kubeedge-deploy-v1.3.0.html

kubeedge v1.5.0 一:https://blog.csdn.net/weixin_42142364/article/details/111084493

kubeedge v1.5.0 二:http://www.360doc.com/content/21/0211/14/13328254_961682923.shtml

k8s:https://www.cnblogs.com/tttlv/p/14395810.html

标签:Ubuntu20.04,树莓,Kubeedge,##,sudo,apt,https,kubeedge,com
来源: https://blog.csdn.net/qq_40955261/article/details/115250383

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有