在树莓派上构建你的专属K8S集群!

边缘计算k3s社区

共 4319字,需浏览 9分钟

 · 2021-10-02

在本文中,我们将在家庭WIFI网络中使用K3s在树莓派上设置私有Kubernetes集群。我们的设置几位简单:单个master节点和worker节点。当然,如果你愿意的话也可以添加更多节点。


下图是我们本文采用的大致架构:



简而言之,我们会借助K3s绑定两个树莓派并且将他们连接到本地WLAN。然后我们可以使用客户端(也就是你的笔记本)来部署我们的工作负载,该客户端将与Kubernetes API通信,就像其他K8S集群一样。


请注意,在本文中显示的本地地址可能会与你在自己的家庭网络中有所不同。


在闪存SD卡之前,你可以启动ssh、设置hostname和无线网络凭据。快捷键Cmd+Shift+X(Mac)或Ctrl+Shift+X(Windows)获取高级选项窗口。完成这项操作后,下文中的Step1、Step 3和Step 8都可以不用进行。以防你想手动设置他们,我在文中依旧保留这些步骤。



Step 0:初始设置


首先,我们需要设置树莓派以启动SSH,并进行一些配置以使用K3s。我使用的specs和OS版本已经列在下方:


  • 2个树莓派4 Model B- 4GB RAM

  • 2张128G 小型SD卡

  • Raspbian OS Lite 版本(基于Debian Buster)


下图是我构建完成的情况:



现在你可以使用树莓派Imager(https://www.raspberrypi.org/software/)来闪存小型SD卡。它可以更轻松地选择OS版本和闪存流程。


总而言之,我们会根据以下步骤进行操作:


  • 在两个树莓派上启用ssh

  • 启用cgroups

  • 设置无线

  • 在内核级别设置64位模式

  • 启动

  • 设置IP列表

  • 分配静态IP

  • 更改hostname

  • 在Master上安装K3s Server

  • 在Worker上安装K3s Agent


在启动之前,我们需要进行一些配置。


Step 1:启动SSH


打开你刚刚刷新的micro SD卡的根目录(这将被保存为boot)。在该文件夹的根部创建一个名为ssh的空白文件。


touch ssh


Step 2:启用cgroups


cgroups是内核层级的核心功能,这是对容器化技术的支持。它允许进程在隔离状态下运行,并为其分配一组特定的资源。


让我们打开你刚刚保存的micro SD卷的根目录(这将被保存为boot),并编辑cmdline.txt文件。



在文件末尾添加以下命令行:


cgroup_memory=1 cgroup_enable=memory


你可能在想为什么要这样操作。可以参考K3s文档:


标准的Raspbian Buster安装时不会启用cgroups。K3S需要cgroups来启动systemd服务。cgroup可以通过在 /boot/cmdline.txt 中添加cgroup_memory=1 cgroup_enable=memory来启用。



Step 3:设置无线模式


我没有随身携带树莓派设置,所以我选择使用家里的WiFi网络而不是以太网。


在/boot/卷的根目录中,创建一个名为wpa_supplicant.conf的新文件并添加以下命令行:


country=AUctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1network={    ssid="your-networks-SSID"    psk="your-networks-password"}


请注意country字段(你可以在链接中找到他们:https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements)并确保将其替换为适合你的相应国家/地区代码。ssid 和 psk 将分别是您的无线网络名称和密码。

 

Step 4:在64位模式中运行内核


接下来,我们将在64位模式中在Raspbian OS上运行内核。这对K3s来说是必要的。


打开config.txt文件并添加以下命令行到底部。


arm_64bit=1



告一段落了!现在将小型SD卡插入树莓派中并启动它。


Step 5:启动


当你首次启动树莓派时,它可能会花费数分钟的时候才出现在你的家庭网络中。


如果你登录到路由器面板,你会看到树莓派及其IP地址。你可以通过ssh登录他们,如下所示:


ssh pi@10.0.0.100


请注意pi是默认用户,raspberry是默认密码。


当你首次登录两个节点时,请使用passwd命令修改默认密码


Step 6:启动静态IP配置


当我们启动树莓派时,K3s通过使用工作节点的IP连接到工作节点。由于我们将使用WLAN,如果我们重新启动我们的节点,IP会不同,这种设置将无法工作。因此,我们需要添加一段配置,为它们分配静态IP。


有几种方式可以执行此类操作,但最好的选择是使用你的路由器的DHCP服务器功能,进行地址预订。你需要树莓派的设备名称和MAC地址。


如果没有,你可以编辑/etc/dhcpcd.conf文件,让树莓派知道要给自己分配哪个IP。我建议在 "静态IP配置示例 "部分下面加上这一点,这样将来就会更容易找到它。


interface wlan0static ip_address=10.0.0.100static routers=10.0.0.1static domain_name_servers=8.8.8.8


完成后,如下所示:



确保给每个树莓派更新了IP地址。


Step 7:设置IP列表


sudo iptables -Fsudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy


Step 8:更改hostname


sudo vi /etc/hostname


这一文件进包含一行命令,所以你可以将其任意命名。在master节点上我将我的重命名为controlplane,worker节点则是node01。接下来,把/etc/hosts文件中写着raspberrypi的地方改为你的节点名称。


sudo vi /etc/hosts


下面是node01节点的一个例子。



完成所有更改之后,需要重启树莓派。


Step 9:在Master节点上安装K3s


要在master节点上安装 K3s,请运行以下命令:


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


顺便说明一下,在安装任何东西之前我都会运行sudo apt update && sudo apt upgrade


Step 10:worker节点设置及agent注册


在设置worker节点之前,我们需要从server上获取token。你需要在master节点上运行以下命令,以便获得这个token:


sudo cat /var/lib/rancher/k3s/server/token


然后你需要在worker节点上运行以下命令。确保根据你的环境对他们进行更新:


curl -sfL https://get.k3s.io | K3S_NODE_NAME="node01" K3S_URL="https://10.0.0.100:6443" K3S_TOKEN="token from above step" sh -


变量解释:


  • K3S_NODE_NAME : 你要配置的工作节点的名称。记住,我们在第7步设置了hostname。

  • K3S_URL : master节点的IP地址,默认K3s server端口是6443,保持不变

  • K3S_TOKEN: 我们从K3S server接收到的Token。例如:K10141483xxxxxxxxxx::server:xxxxxxxxxxxx


你将会看到这样一条信息:[INFO] systemd: Starting k3s-agent,这意味着已经可以运行了!sudo su 之后即可主节点上运行命令。


kubectl get nodes



参考链接


  • https://docs.rancher.cn/docs/k3s/installation/install-options/server-config/_index

  • https://docs.rancher.cn/docs/k3s/installation/install-options/agent-config/_index

  • https://www.electrondust.com/2017/11/25/setting-raspberry-pi-wifi-static-ip-raspbian-stretch-lite/

  • https://thepihut.com/blogs/raspberry-pi-tutorials/19668676-renaming-your-raspberry-pi-the-hostname

  • https://www.tomshardware.com/how-to/fix-cannot-currently-show-desktop-error-raspberry-pi




About k3s


k3s 是首个进入 CNCF 沙箱项目的 K8S 发行版,同时也是当前全球用户量最大的 CNCF 认证轻量级 K8S 发行版。自2019年3月发布以来,备受全球开发者们关注,至今GitHub Star数已超过 17,000,成为了开源社区最受欢迎的边缘计算 K8S 解决方案。截至目前,K3s全球下载量超过100万次,每周平均被安装超过2万次,其中30%的下载量来自中国。


k3s 专为在资源有限的环境中运行 Kubernetes 的研发和运维人员设计,将满足日益增长的在边缘计算环境中运行在 x86、ARM64 和 ARMv7 处理器上的小型、易于管理的 Kubernetes 集群需求。k3s 的发布,为开发者们提供了以“Rancher 2.X + k3s”为核心的从数据中心到云到边到端的 K8S 即服务(Kubernetes-as-a-Service),推动 Kubernetes Everywhere。

扫码添加k3s中文社区助手

加入官方中文技术社区

官网:https://k3s.io

浏览 58
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报