使用k0sctl轻松构建家庭Kubernetes集群

最近很流行使用多台树莓派创建Kubernetes集群作为学习的材料。

尽管Docker Desktop等工具可以在单个机器上运行Kubernetes,但我认为只有在由多台物理机器构成的集群上运行时,才会真正提升对其理解的程度。

我家也有一個Raspberry Pi的Kubernetes集群,這裡是其中搭建時的過去文章。

 

从第一次使用Raspberry Pi 3B搭建集群已经过去了大约四年了。Kubernetes的情况也发生了很大变化。尤其是k0s工具的出现,使得集群的初始设置和节点的添加变得非常简单。

“k0s是什么意思?”

根据官方的步骤建立Kubernetes集群是非常困难的,我觉得这是一连串非常具有挑战性的步骤。作为一个希望快速启动容器并进行试验的人,这样的步骤对我来说是一道很高的门槛。而能够帮助我省去这样麻烦的工具就是k0s。

 

引用部分如下…

零摩擦
k0s大幅降低了安装和运行完全符合要求的Kubernetes分发的复杂性。新的kube集群可以在几分钟内启动。开发人员的摩擦力降低到零,使任何人,无需特殊的Kubernetes技能或专业知识,都能轻松入门。

翻译 yì)

k0s可以大大简化安装和运行符合完全兼容Kubernetes发行版的复杂性。您可以在几分钟内启动一个全新的Kube集群。开发者几乎没有任何障碍,并且任何人都可以轻松开始,无需特殊的Kubernetes技能或专业知识。

我认为对于那些想要尽快尝试Kubernetes的人来说,这可能是一个绝佳选择。此外,它宣称官方支持arm架构,同时对于工作节点所需的最低内存要求为0.5GB,这意味着它也考虑到了使用树莓派构建集群的需求。

k0sctl非常方便

另一个更方便的工具是k0sctl。使用它可以通过代码来管理Kubernetes集群的配置。

 

我认为,如果要在RaspberryPi上构建Kubernetes集群,那么我推荐使用k0sctl。由于它是一台小型机器,所以可能会遇到microSD卡等硬件故障的问题,并且经常需要重新进行操作系统的清洁安装和集群搭建。在这种情况下,使用k0sctl可以方便地一次性复制代码管理的集群配置,非常实用。

预先准备

要使用k0sctl,需要先进行以下预备工作。

    • 各RaspberryPiのIPアドレスを固定すること

 

    • k0sctlを実行するマシンからそれぞれのRaspberryPiへSSH接続できること

 

    cgroupを有効にすること

这个就足够了,以前的文章中有写着要禁用swap,因为开启了swap会导致工作节点无法启动,但是在最近的Kubernetes中已经不再需要这样做了。然而,从减少microSD卡的消耗的角度来看,禁用swap也是一个不错的选择。

执行k0sctl的机器不必是属于集群的机器。只要每个节点都能够进行SSH就可以了。如果可以使用brew,则可以使用以下命令进行安装。其他方法请参考官方的github页面。

brew install k0sproject/tap/k0sctl

撰写设置文件

我家的集群定义文件大致是这样的。在这个例子中,我们使用了4台树莓派来构建集群,控制平面(controller)节点同时也充当了工作节点(worker)。关于具体的记录方式,请参考官方文档。

apiVersion: k0sctl.k0sproject.io/v1beta1
kind: Cluster
metadata:
  name: k0s-pi
spec:
  k0s:
    version: v1.26.1+k0s.0
  hosts:
  - role: controller+worker
    os: debian
    ssh:
      address: 192.168.10.41
      user: commojun
      keyPath: ~/.ssh/id_rsa
  - role: worker
    os: debian
    ssh:
      address: 192.168.10.31
      user: commojun
      keyPath: ~/.ssh/id_rsa
  - role: worker
    os: debian
    ssh:
      address: 192.168.10.32
      user: commojun
      keyPath: ~/.ssh/id_rsa
  - role: worker
    os: debian
    ssh:
      address: 192.168.10.33
      user: commojun
      keyPath: ~/.ssh/id_rsa

有一个特殊的地方,对于我的情况来说,我安装的是RaspberryPi OS,所以必须在spec.hosts[*].os参数中指定debian。如果没有指定,系统会自动从/etc/os-release等文件中读取并判断Linux发行版,但RaspberryPi OS不在k0s支持的OS列表中,导致安装错误。因此,我指定了RaspberryPi OS的基础debian,成功完成了安装。

申请吧!

如果准备工作一切就绪,那么只需使用这个命令来执行,然后稍等片刻即可。相比手动从头构建,真是轻松得多。即使不小心搞砸了集群,也可以重新建立,这让人感到宽慰。

$ k0sctl apply --config ./k0sctl.yml

版本更新和集群更改也很方便。

如果想要使用Kubernetes的新版本,只需编辑配置文件中的 spec.k0s.version 字段并执行 apply 命令即可。似乎还可以进行更详细的集群配置。然而,根据设置项的不同,有些项可能需要先删除集群(k0sctl reset),然后重新安装才能生效。

总结

我觉得有了k0s和k0sctl的出现,构建Kubernetes集群变得相当容易了。虽然通过手动搭建可以增进理解,但我认为大部分实际操作Kubernetes的人都是作为使用Google或Amazon云平台上的Kubernetes的一方,所以能够快速使用家庭级Kubernetes是降低学习难度的好事情!

广告
将在 10 秒后关闭
bannerAds