树莓派部署K3S集群

痴心易碎 提交于 2019-11-30 01:41:05

官网参考:https://rancher.com/docs/k3s/latest/en/quick-start/

K8S非常消耗资源,在性能一般的机器上不适合部署。K8S的精简版K3S就是为了针对这种情况,将很多性能一般的机器(例如树莓派)加入到集群

1 安装raspberry操作系统

默认用户名/密码:pi/raspberry

1.1 修改主机名

sudo hostnamectl set-hostname node1

1.2 设置root密码

sudo passwd root

1.3 启用root进行远程连接

sudo  vi /etc/ssh/sshd_config     增加一行: PermitRootLogin yes

设置开启自启ssh+重启:systemctl enable ssh && systemctl restart ssh

1.4 调整主机时间为最新时间

集群的所有主机的时间必须保证不能差太多,否则https会出现证书错误等等异常

date -s "2019-11-25 15:21:21"

1.5 修改默认的vi配置(上下左右和backspace键混乱)

vi /etc/vim/vimrc.tiny   修改set compatible,将其改为set nocompatible     再添加一行:set backspace=2

1.6(可选)  以root用户登录

由于我是用HDMI和键盘连接了树莓派,开通ssh后可以远程连接控制

 

2 下载docker

注意不同的操作系统下载的方式不一样

2.1 下载

curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh

2.2 验证

docker run arm32v7/hello-world

 

3 下载k3s

需要注意:针对arm32位的,例如armv7l,需要查找对应的镜像,K3S是支持该架构的,但是很多镜像都没有arm版本,X86_64和arm64架构的镜像会多一点

3.1 下载k8s.gcr.io/pause镜像

我的树莓派是armv7l架构的,如何查看CPU架构:

uname -m

由于国内墙的问题,k3s依赖的该镜像无法pull下来,所以要提前准备该镜像:

docker pull mirrorgooglecontainers/pause-arm:3.1
docker tag mirrorgooglecontainers/pause-arm:3.1 k8s.gcr.io/pause:3.1

不同CPU架构对应的该镜像:https://hub.docker.com/search?q=mirrorgooglecontainers%2Fpause&type=image

3.2 搭建master端

注意需要用到6443端口

下载(没反应就重试一次):

curl -sfL https://get.k3s.io | sh -

修改默认容器引擎为docker : vi /etc/systemd/system/k3s.service     修改ExecStart的值:/usr/local/bin/k3s server --docker --no-deploy traefik  :

重启:

systemctl daemon-reload  &&  systemctl restart k3s

3.3 搭建node端

在master节点拿到K3S_TOKEN 和master的IP

下载:

curl -sfL https://get.k3s.io | K3S_URL=https://master的IP:6443 K3S_TOKEN=K10e44a6fae9ad713a5e76f2fa94a93d898c1fe24520156c9f471ceb17b14c203c3::server:bda159824648de58d84ad9b62b1d0062 sh -

最终IP和TOKEN的信息会在/etc/systemd/system/k3s-agent.service.env

修改默认容器引擎为docker:vi /etc/systemd/system/k3s-agent.service     修改ExecStart的值:/usr/local/bin/k3s server --docker

重启:

systemctl daemon-reload  &&  systemctl restart k3s-agent

3.4 在master上验证

kubectl get nodes -o wide

 

 

到这里K3S集群已经部署好,可以直接部署服务了

如果想集成到rancher(如何部署rancher),需要在master节点上(必须是X86或者arm64架构)执行rancher导入命令:

复制该命令,在master节点执行后,过一会rancher里就会有该集群的信息:

由于arm架构的没有对应的rancher-agent镜像,我们需要准备该镜像(例如我的rancher是2.3.2版本的):

docker pull ags131/rancher-agent:v2.0.4_arm 
docker tag ags131/rancher-agent:v2.0.4_arm  rancher/rancher-agent:v2.3.2

最终可以查看结果:

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!