保姆级实操教程,如何在树莓派上玩转k3s!

过去一年间,企业对于在边缘设备上管理Kubernetes集群的需求明显增长。但是运行一个成熟的Kubernetes平台需要投入大量资源,并且对于边缘计算的场景而言过于复杂。因此,在今年年初Rancher Labs推出了一款轻量级Kubernetes发行版——k3s。它经过CNCF官方认证,可用于生产环境,发布8个月以来已在Github上拥有超9000颗Star。


k3s大小只有40MB,仅需512MB RAM即可运行,可以满足在边缘计算环境中运行在x86、ARM64和ARMv7处理器上的小型、易于管理的Kubernetes集群的需求。


K3s之所以仅需512MB的运存,是因为它具有以下四个方面的变化:


  • 删除旧的、非必须的代码:K3s不包括任何默认禁用的Alpha功能或者过时的功能,原有的API组件目前仍运行于标准部署当中。除此之外,Rancher还删除了所有非默认许可控制器,in- tree云提供商和存储驱动程序,但允许用户添加任何他们需要的驱动程序。


  • 整合正在运行的打包进程:为了节省RAM,Rancher将通常在Kubernetes管理服务器上运行的多流程合并为单个流程。Rancher还将在工作节点上运行的kubelet、kubeproxy和flannel代理进程组合成一个进程。


  • 使用containerd代替Docker作为运行时的容器引擎:通过用containderd替换Docker,Rancher能够显著减少运行时占用空间,删除libnetwork、swarm、Docker存储驱动程序和其他插件等功能。


  • 除了 etcd 之外,引入 SQLite 作为可选的数据存储:Rancher在k3s中添加了SQLite作为可选的数据存储,从而为etcd提供了一个轻量级的替代方案。该方案不仅占用了较少的内存,而且大幅简化了操作。


保姆级实操教程,如何在树莓派上玩转k3s!

在树莓派上安装k3s


现在,我们开始试一下在树莓派上安装k3s。在本例中使用的是树莓派4(4GB的版本),此外还需要准备一个可用于树莓派的SD卡。


1、 下载Raspbian


下载链接:

https://www.raspberrypi.org/downloads/raspbian/


通过上面的链接下载你选择的ISO,我下载的是Raspbian Buster Lite:



下载完成之后,在你的下载目录里会有一个压缩文件。


2、 Flash你的树莓派


我将使用Etcher来flash我的树莓派,但你可以根据自己的喜好来选择其他的工具。


如果你需要了解更多关于安装镜像的信息,请参阅官方文档:

https://www.raspberrypi.org/documentation/installation/installing-images/README.md


使用Etcher十分简单,你可以选择镜像以及你想要flash的SD卡,然后选择Flash:


保姆级实操教程,如何在树莓派上玩转k3s!


3、 配置SSH和WiFi


完成flash之后,重新插入你的flash驱动,使用以下命令,你应该会看到使用df-h挂载了你的SD卡。


我用的是mac,所以我的SD卡应该挂载在/Volumes/boot这一目录下。为了可以SSH,我们需要在根目录下创建一个ssh文件,里面不包含任何内容:


touch /Volumes/boot/ssh


如果你使用的是Linux系统,它应该是:

touch /media/${USER}/boot/ssh


为了配置你的树莓派以连接到你的无线网络中,我们需要在SD卡的根目录中提供wpa_supplicant.conf


创建配置文件:


vim /Volumes/boot/wpa_supplicant.conf


然后提供你的SSID和PSK:


ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev  update_config=1  country=ZA
network={      ssid="your-wifi-name"    psk="your-wifi-password"    key_mgmt=WPA-PSK}


弹出SD卡,并将其插入你的树莓派中并启动它。


4、 寻找你的IP


你可以使用nmap来寻找IP地址,但是在本例中,我已经登录到路由器,所以看一看DHCP列表,我能够在那里找到我的树莓派IP地址。


保姆级实操教程,如何在树莓派上玩转k3s!


默认状态下,用户名为pi,密码是raspberry:


$ ssh pi@192.168.0.111Warning: Permanently added '192.168.0.111' (ECDSA) to the list of known hosts.pi@192.168.0.111's password:Linux raspberrypi 4.19.57-v7l+ #1244 SMP Thu Jul 4 18:48:07 BST 2019 armv7l

The programs included with the Debian GNU/Linux system are free software;the exact distribution terms for each program are described in theindividual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extentpermitted by applicable law.
SSH is enabled and the default password for the 'pi' user has not been changed.This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

pi@raspberrypi:~ $


此时,应该重置默认密码


$ passwdChanging password for pi.Current password: New password: Retype new password: passwd: password updated successfully


5、安装k3s


Rancher Labs发布的最轻量且经过CNCF认证的Kubernetes发行版——k3s,针对ARM进行了优化,并且超级易于安装。


仔细看一下官方文档,以获取更多的配置选项和细节:

https://github.com/rancher/k3s/blob/master/README.md


安装k3s,超简单!


$ sudo su$ curl -sfL https://get.k3s.io | sh -[INFO]  Finding latest release[INFO]  Using v0.8.0 as release[INFO]  Downloading hash https://github.com/rancher/k3s/releases/download/v0.8.0/sha256sum-arm.txt[INFO]  Downloading binary https://github.com/rancher/k3s/releases/download/v0.8.0/k3s-armhf[INFO]  Verifying binary download[INFO]  Installing k3s to /usr/local/bin/k3s[INFO]  Creating /usr/local/bin/kubectl symlink to k3s[INFO]  Creating /usr/local/bin/crictl symlink to k3s[INFO]  Creating /usr/local/bin/ctr symlink to k3s[INFO]  Creating killall script /usr/local/bin/k3s-killall.sh[INFO]  Creating uninstall script /usr/local/bin/k3s-uninstall.sh[INFO]  env: Creating environment file /etc/systemd/system/k3s.service.env[INFO]  systemd: Creating service file /etc/systemd/system/k3s.service[INFO]  systemd: Enabling k3s unitCreated symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.[INFO]  systemd: Starting k3s


Boom!大约1分钟之后,Kubernetes就已经在我的树莓派上运行:


$ kubectl get nodesNAME          STATUS   ROLES    AGE   VERSIONraspberrypi   Ready    master   27s   v1.14.5-k3s.1


默认情况下,在k3s中,Traefik开箱即用,为了确认这一点,我们来看看我们的部署:


$ kubectl get deployments --all-namespacesNAMESPACE     NAME      READY   UP-TO-DATE   AVAILABLE   AGEkube-system   coredns   1/1     1            1           3m29skube-system   traefik   1/1     1            1           89s


在我们所有的命名空间中查看pod:


$ kubectl get pods --all-namespacesNAMESPACE     NAME                         READY   STATUS      RESTARTS   AGEkube-system   coredns-b7464766c-8mgzr      1/1     Running     0          3m12skube-system   helm-install-traefik-tqh92   0/1     Completed   0          3m12skube-system   svclb-traefik-t6jvz          2/2     Running     0          93skube-system   traefik-56688c4464-zvfxc     1/1     Running     0          92s


然后看一下我们的服务:


$ kubectl get service --all-namespacesNAMESPACE     NAME         TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                      AGEdefault       kubernetes   ClusterIP      10.43.0.1      <none>          443/TCP                      4m4skube-system   kube-dns     ClusterIP      10.43.0.10     <none>          53/UDP,53/TCP,9153/TCP       4m5skube-system   traefik      LoadBalancer   10.43.133.86   192.168.0.100   80:32543/TCP,443:30200/TCP   2m5s


现在我们已经在树莓派上完成k3s的安装啦!


保姆级实操教程,如何在树莓派上玩转k3s!

一起来探索k3s更多玩法吧


仅仅在树莓派上成功运行k3s当然不够,我们在之前的文章里还介绍了如何在mac上运行k3s如何将k3s与Rancher进行集成以及如何将k3s集成到Gitlab项目中,从这些文章里我们看到了k3s的种种可能。那么,除此之外,k3s是否还有其他玩法呢?本周六,到现场来和我们一起来探索吧!


10月26号(本周六)下午,坐标深圳南山区,首次线下k3s workshop将和大家见面啦!现场将会有Rancher Labs资深工程师,和你一起玩转k3s!以下是workshop议程:


一、 k3s概览

  • 为什么做k3s

  • k3s架构

  • k3s应用场景

二、 现场demo k3s

  • 在树莓派3b+上运行k3s

  • 使用Rancher管理k3s集群

三、 一起workshop!

  • 在x86机器上运行k3s


上一篇:K8s 还是 k3s?This is a question


下一篇:Just 5分钟!使用k3s部署轻量Kubernetes集群快速教程