虚拟机:Ubuntu
Jetson Nano
本文用的ubuntu系统是18.04.5
(关于系统版本是否需要一致这个问题还没有验证,不过架构是可以不一样的,硬件不影响kubeedge部署)
虚拟机与开发板之间的部署不同于虚拟机与虚拟机之间的部署,我们必须要确保虚拟机与开发板与主机之间能够互相ping通!所以三台机子必须在同一局域网!
所以这里我们需要将虚拟机设置为桥接模式:(这一步需要在安装ubuntu系统的时候就要做好(看第二张图)不然进入系统再改可能会产生不必要的问题)
1.以管理员身份打开VM
2.工具栏中的 编辑 ->虚拟网络编辑器
“已桥接至”选择自己的网卡,我这里选的宽带网卡(因为在学校所以网络限制捣鼓了很久的linux版本锐捷校园客户端怎么用,如果也有校园网客户端登录的问题可以私信问我)
3.把笔记本的防火墙全都关掉
命令安装与更新
sudo apt-get update
sudo apt-get upgrade
#输入ifconfig会提示安装net-tool根据他的提示安装
#安装好后再次输入ifconfig获取ip地址,连的wifi一般就是在wlan那一行,宽带就是ens那一行
sudo apt-get install wget
sudo apt-get install vim
sudo apt-get install ssh
#这些做完应该就不会有提示命令安装了
#然后要设置root身份,这样后面就免去很多权限的事情
sudo passwd root
#然后提示输入密码并设置成功
su root
#以root全兴登录,su XXX,XXX是最开始的用户名,su XXX即回到原始用户
本文用XSHELL链接两台系统
XSHELL使用时需要注意输入ip地址后跳出来要你输入的用户名就是你设置ubuntu的名字
关闭防火墙
sudo ufw disable
#防火墙在系统启动时自动禁用
//查看防火墙状态
sudo ufw status
#状态:不活动
关闭交换分区
//临时关闭
sudo swapoff -a
//永久关闭
sudo sed -i 's/.*swap.*/#&/' /etc/fstab
修改主机名
//修改XXX部分即可
hostnamectl set-hostname XXX
// 同时在/etc/host中将原来主机名替换,否则用sudo命令时会报错
hostname
//查看当前主机名字
**golang安装**
这里要注意的是,最好是自己去官网下载go的tar包,链接就是下面这个链接,然后通过xshell的文件传输放到自己熟悉的文件夹位置
```c
https://studygolang.com/dl
还有一点要注意的是:不同架构要下载不同版本的tar包,比如nano就是aarch64架构,就需要下载arm64位的,虚拟机的是x86_64就要下载amd64的
具体自己什么架构查看方法: uname -m
不一定要下这个版本,可以下最新版本的go,具体参数自己改
//下载安装包
sudo wget https://dl.google.com/go/go1.15.3.linux-amd64.tar.gz
//解压到/usr/local/文件下
sudo tar -zxvf go1.15.3.linux-amd64.tar.gz -C /usr/local/
// 将go添加至环境变量
sudo cp /usr/local/go/bin/go /usr/local/bin/go
// 查看go是否安装成功
go version
#go version go1.15.3 linux/amd64
#如果重启节点后有问题可以更改环境变量(这里面的具体问题我也不太明白,就放一张我的笔记仅供参考)
**docker安装**
// step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
// step 2: 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
// Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
//step4下载docker
sudo apt-get -y update
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
//查看docker版本
docker version
//修改镜像源
sudo vi /etc/docker/daemon.json
//打开后输入以下内容 注意exec-opt这步不要改成systemd,还是写为cgroupfs
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com",
"https://quay-mirror.qiniu.com"
],
"exec-opts": [ "native.cgroupdriver=systemd" ]
}
//重启
sudo systemctl daemon-reload
sudo systemctl restart docker
//查看修改后的 docker cgroup 状态,发现变为systemd即为修改成功
docker info | grep Cgroup
//使得 apt 支持 ssl 传输
apt-get update && apt-get install -y apt-transport-https
//下载 gpg 密钥
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
//添加 k8s 镜像源
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
//更新源列表
apt-get update
**下载 kubectl,kubeadm以及 kubelet**
apt-get install -y kubelet=1.19.4-00 kubeadm=1.19.4-00 kubectl=1.19.4-00
**初始化 master 节点**
kubeadm init \
--apiserver-advertise-address=192.168.213.129 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.19.4 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
#注意第一条命令要把ip地址改成master的ip地址,k8s version如果报错就按照他的要求改版本
#其他指令的ip地址只要不和master的地址冲突即可
#并且要把每句指令后的\删除掉并以一行的形式现在文本文档中改好,再全部复制到xshell中执行
成功后会出现下图,再把标白部分一句一句的复制并输出!
网络部署
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
//查看拉取情况
kubectl get pods -n kube-system
//等待一段时间后(多次输出上面这条语句可以查看下载状况,等的时间依网速而定)
kubectl get nodes
//好了以后输出上面这句(ready就是成功了,name是master的名字)
如果出现The connection to the server localhost:8080 was refused - did you specify the right host or port? 需要输入 su root 在root用户权限下重新再试一次
//添加源
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
//下载并安装
sudo apt-get install mosquitto
一、master端
去github上手动下载keadm的tar包,这里用的是1.5.0的版本,这里同样要注意arm和amd的版本问题。和golang一样放在自己找的到的地方
https://github.com/kubeedge/kubeedge/releases
//解压
tar -zxvf keadm-v1.5.0-linux-amd64.tar.gz
//进入keadm位置(这一步很重要,因为./keadm init必须在这个位置执行)
cd keadm-v1.5.0-linux-amd64/keadm
//首先登录websites.ipaddress.com
//然后搜索github和raw.githubusercontent的域名解析
//将域名添加在hosts中,如下图
sudo vi /etc/hosts
//执行,如果一直访问拒绝一定是网络的问题,多试,多试,再多试
./keadm init
//获取token值,稍后会用到
./keadm gettoken
二、edge端
前面操作和master端一致,直到执行./keadm init 这一步
需要改成
//这里可以不加版本号
./keadm join --cloudcore-ipport='master端所在的ip':10000 --edgenode-name='edge名字(自己取)' --kubeedge-version=1.5.0 --token='前面获取的token值'
出现下图即成功
在master端输入指令查看节点状态
kubectl get nodes
//近100条日志查询
journalctl -u edgecore.service -r
//查看各类信息状态
ps aux|grep mosquitto
//查看edgecore是否开机自启
systemctl is-enabled mosquitto
#查看cloudcore启动情况
ps aux|grep cloudcore
#输出如下表示启动:
root 23498 0.1 0.3 1012544 48640 ? Ssl May12 13:11 /usr/local/bin/cloudcore
#查看端口 10000 10002 端口都有了
#没有netstat命令,安装:yum install net-tools -y
netstat -tpnl
#如下:
tcp6 0 0 :::10000 :::* LISTEN 23498/cloudcore
tcp6 0 0 :::10002 :::* LISTEN 23498/cloudcore
#查看cloudcore启动状态
systemctl status cloudcore
#如果没有设置开机启动服务则设置 复制开启自启动服务文件
cp /etc/kubeedge/cloudcore.service /etc/systemd/system/cloudcore.service
#添加文件权限
chmod +x /etc/systemd/system/cloudcore.service
#重新加载配置文件
systemctl daemon-reload
#查看cloudcore启动的进程id,然后杀掉
ps aux|grep cloudcore
#输出如下:
root 23498 0.1 0.3 1012544 48640 ? Ssl May12 13:12 /usr/local/bin/cloudcore
#杀掉
kill -9 23498
#启动cloudcore
systemctl start cloudcore
#设置开机自启动
systemctl enable cloudcore.service
#查看cloudcore开机启动状态 enabled:开启, disabled:关闭
systemctl is-enabled cloudcore.service
#查看edgecore是否开机启动
systemctl is-enabled edgecore
#如果没有设置则设置 开启自启动
如果没有设置则设置 开启自启动
vim /etc/systemd/system/edgecore.service
[Unit]
Description=edgecore.service
[Service]
Type=simple
ExecStart=/usr/local/bin/edgecore
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
#添加文件权限并启动edgecore
chmod +x /etc/systemd/system/edgecore.service
#重新加载配置文件
systemctl daemon-reload
#启动edgecore
systemctl start edgecore
#设置开机自启
systemctl enable edgecore.service
#查看edgecore开机启动状态 enabled:开启, disabled:关闭
systemctl is-enabled edgecore
#查看状态
systemctl status edgecore
解决方法
注意要做这两步
rm -rf $HOME/.kube
rm -rf /etc/cni/net.d/
虚拟机上的单纯部署和板子与虚拟机之间的部署还是有很多差异的,还是要有自己实践的一个过程才会学到东西,一定要有自己摸索的一个过程,这是自己技术成长的关键,坚持下来在你眼前的必然是一片花海。如果有疑问可以私信或者评论。
Kubeedge1.4.0安装
解决GitHub的raw.githubusercontent.com无法连接问题
kubeedge1.3.0 安装过程
ubuntu 安装 k8s