在树莓派和jeston nano上搭建自己的k8s集群

822 views

一个树莓派、两个树莓派、三个树莓派、四个树莓派,还有一个jeston nano。我已经拥有五台设备了,但是似乎这五台设备一直英雄无用武之地。突然想起有段时间k8s挺火的,但是我能用树莓派搭建一个k8s集群吗?


四台树莓派及一台jeston nano


本文可能有点长,将会从k8s集群的好处、搭建过程、测试和总结四个方面进行阐述。同时本文为德彪嘻嘻的博客原创,转载请说明出处并标注原文网页链接。

derfei

k8s的好处

k8s,全名kubernetes,和所有牛逼轰轰的开源项目一样,它来源于希腊语,表示舵手和飞行员的意思。k8s起源于谷歌搞了十多年的Borg系统。说起k8s的好处,则首先要讲讲容器。


沙箱


容器,顾明思意,就是装东西的,把需要的东西装进去。与虚拟机通过操作系统级隔离不一样的是,容器采用的是进程级别的隔离,因此,前者采用Hypervisor隔离策略, 而后者采用Cgroup隔离策略。打个比方,虚拟机就相当于你在你的房子里面又建了一个房子,不过这个房子只有当你需要使用的才打开,而容器,就相当于你在沙箱里面用橡皮泥捏出来一个房子,这个橡皮泥捏出来的房子五脏俱全,你要的东西都在里面。


从传统的部署到虚拟机技术,再到容器部署的技术发展过程

使用容器技术构建应用有个好处,就像你盖房子一样。你盖的时候把所有的依赖和环境变量都弄好了,盖成了房子,下次你要搬走的时候,就可以把整个房子直接搬走,不需要再重新盖了。这样你就可以来一场说走就走的迁移和扩展。容器虽好,但是后来人们在实际应用中使用的时候发现,当你有个多个服务器的时候,怎么编排、管理和调度这些个容器是个问题。一开始小作坊式的想走就走,的确很好。但是如果人多了,就像春运一样,你不好好安排的话就乱套了。

这个时候,救世主k8s出现了。这个活k8s干了,所以k8s就是用来编排、监控和调度容器的。说的更实用一点,就是让你在多台服务器上部署容器应用的时候更加的简单了。同时,k8s还自带有负载均衡器,可以让多个请求平均的分到多个容器上面。k8s还自带有监控,当一个容器挂掉的时候,就会在另外的服务器上开启一个新的。同时,一个容器应用通常往往不只包含一个容器,因此k8s会自动调度这些容器到不同的机器上,同时你还可以对这些容器设置相应的副本数量。


搭建过程

每个开源产品都有无数个版本,就像hadoop一样。当一个开源项目火起来的时候,各个巨头就会分别入局,然后对这个开源项目进行自己想要的修改,然后发行。这也就出现了开源项目版本就像诸子百家一样的现象。现在Kubernetes分别有Redhat的Openshift版本、Platform9版本、Tectonic版本、StackKube版本,还有一个比较有名的Rancher平台,在这个平台上有很多的k8s版本。在对比了定价、应用场景之后,我发现Rancher平台的k3s比较适合我的安装环境。


选用k3s的原因,是因为它由如下图所示的好处。首先,它针对ARM进行了优化,可以适用于X86_64、ARMv7、ARM64。树莓派是ARMv7平台,而Jeston nano是ARM64平台。第二,它的安装很简单,因为它被打包成了二进制文件。第三,适用于边缘计算,这估计是我以后要入坑的地方。


选用k3s的原因


搭建过程很简单,主要分为两步,第一步为安装docker,毕竟你要有容器给你管理才行。第二步为安装k3s,安装k3s的过程是我见过所有k8s安装版本最简单的。

安装docker

首先,我们需要安装docker。在每个树莓派上和jeston nano上运行下面的命令就好了:curl -sSL get.docker.com | sh等待安装完之后,会出现如下所示的界面。你可以运行安装成功提示里面的 sudo usermode -aG docker 用户名 这个命令,这个命令可以让我们以非root用户运行docker。


docker安装成功之后的界面


安装k3s

k3s的工作原理如下图所示,主要包括两个角色:一个为k3s server,一个为k3s agent。两个角色之间通过Tunnel Proxy进行通信。k3s server主要负责调度、监控。k3s agent则运行容器应用。


k3s工作原理

修改cgroup

在安装k3s之前,你需要修改你的Cgroup策略。运行下面的脚本命令,就可以了。orig="$(head -n1 /boot/cmdline.txt) cgroup_enable=cpuset cgroup_memory=memory"echo $orig | sudo tee /boot/cmdline.txt


安装Server

安装主服务器的过程中,非常平滑。首先我们安装master服务器。使用下面一行命令就搞定了。curl -sfL https://get.k3s.io | sh -


一行命令之后,就会出现下面的结果,非常顺滑。


k3s主机服务器安装成功


安装agent

安装agent也是一行命令,不过在安装之前,我们要先查看Server的/var/lib/rancher/k3s/server/node-token文件,这个文件里面的内容就是Server的token,比如我的token就是K106f68ccd857434da1a63e0ec080fcb40cbf6e244779ebc663a843b9259a8a2aa8::server:fb2a911cbb993d2a1cf178aa26b0d8c1。对于服务器的IP,你在安装了Server的主机上运行ifconfig就可以看到了。

curl -sfL https://get.k3s.io | K3S_TOKEN=<Server的token> K3S_URL=https://服务器IP:6443 sh -


 测试方法

安装完成之后,运行kubectl get nodes就可以看到集群了。


查看集群


总结

总的来说,安装k3s集群是不困难的,但是后期怎么构建容器应用,并且将容易应用放再集群里面才是难点。怎么构建容器应用,怎么将容器应用放入集群中进行自动更新?这是真正的难点。后期我会根据我的实验项目,构建一个容器应用,没有写代码,就没有发言权。

Rating: 5.0/5. From 2 votes.
Please wait...