sudo passwd root
//[acc]root [password]root
## 注意,如果你想全程在root用户下进行操作,请把所有的
## 相关文件全部放到/root/目录下,否则若有config地址错误
## 需要加相关的指令,可能会踩坑
#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
# 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
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
## 注意所在用户名和根目录
echo "export KUBECOnFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
cat ~/.bash_profile
source ~/.bash_profile
# 网卡配置文件
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
###防火墙###
##关闭防火墙
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 ,然后重启。
#暂时关闭
swapoff -a
free -h
#永久生效
sudo vi /etc/fstab
#在其中注释掉swap行
#永久修改
sudo vim /etc/hostname
#暂时修改
hostname master
##所有设备保持处在上海区
sudo timedatectl set-timezone Asia/Shanghai
##日志时间戳生效
sudo systemctl restart rsyslog
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
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
##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命令了
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官网的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
### 下载源码
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 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
keadm reset
kubeadm reset
#重置完后需要自己删除/root/.kube,否则会出现authorize错误
https://my.oschina.net/tianshl/blog/3040859
#生成公钥私钥
ssh-keygen
#拷贝秘钥
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.102
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
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 -
略
此处有一个问题,也是我部署的最后一个bug
我是用VMware启动的Ubuntu云端,但是默认设置的网络连接可能是NAT而不是桥接,如果没有调过来的话树莓派将连不到Ubuntu的Kubeedge系统,也ping不通。
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
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