玩着k3s树莓派集群指南

Kubernetes 作为当前云计算基础设施的 De Facto 标杆,已经炙手可热。因为其是谷歌家开放的源码库,一直成为全球技术社区的模仿参照物。在它的技术光芒之下,大量的技术人员跳入此坑无法自拔。但是因为工程复杂度如此之高,组件非常复杂,分布式系统的概念如此之新,大家还是经常会在安装部署,做试验的过程中碰一鼻子灰。这不,Rancher 的架构师看着不爽,一人之力撸了一个 all-in-one binary 的 k8s 单体程序,这个东西好阿。把容器集群需要的所以组件都打包成一个二进制文件了,爽。并且这个东西小到只有 40MB,在 512M 内存的树莓派就能跑。爽。本文就是帮助中国的技术爱好者,把手上的树莓派积累的灰扫一扫,跟着我一起玩转 k3s 集群。

在本场 Chat 中,会讲到如下内容:

  • k3s 安装,排错

毕竟树莓派是资深技术玩家的工具,相信并不是所有读者都摸过这个工具。所以我需要和读者在简单回顾一下树莓派在容器圈的玩法。

首先,树莓派是一个嵌入式 arm cpu 的开发版本,一般会配置一个 SD 卡作为驱动。我们开发者一般最常用的技能就是如何刷这个 SD 卡,然后登录系统各种操作。这里,我们需要知道原生的树莓派 OS 是 debian 裁剪的,可不管什么 overlay 驱动啥的,所以你在原生的系统上安装 Docker 那是很费劲的。这不,业界黑客看着不爽,就自己裁剪了一份内置 Docker 的 OS: hypriotOS,海盗系统。下载地址在 github 上,自己搜索即可。

其次,树莓派的硬件装备很全,我们需要自己攒一份自己的套件。比如电源,最好是 6 口 USB 驱动的。SD 卡,必须是高速的,32G 以上。树莓派现在是 Pi4 版本,1G 内存了,内置无线网卡。很爽,就不用在赘述。那么读者会问了,这些东西从那里买呢?淘宝。我的装备如下图,参考:

玩着k3s树莓派集群指南_第1张图片

好了,现在硬件基础条件有了,我们就要熟练掌握刷盘技术。工具是 flash。一个命令行工具。https://github.com/hypriot/flash 。最新版本支持 could-init 配置文件。参考 sample 目录的代码即可,有详细的说明。命令参数是

flash -u wifi-user-data.yml ~/Downloads/hypriotos-rpi-v1.11.4.img.zip

注意:为什么需要 wifi-user-data.yml,主要我有 2 个诉求,一个是改 hostname,一个是配置 wifi 密码。

上电之后,1 分钟之内就可以用终端连上。hypriot 默认配置的密码,每次输入挺麻烦,可以考虑 ssh-copy-id 把自己的公钥放到 Pi 板中也可以。安装 k3s 正式开始,没啥特别技巧:

curl -sfL https://get.k3s.io | sh -  # Check for Ready node,   takes maybe 30 seconds  k3s kubectl get node

虽然简单,因为 k3s 毕竟是开源软件,对于适配的测试用例并不能保证你每次成功。

$ curl -sfL https://get.k3s.io | sh -[INFO]  Finding latest release[INFO]  Using v0.10.2 as release[INFO]  Downloading hash https://github.com/rancher/k3s/releases/download/v0.10.2/sha256sum-arm.txt[INFO]  Downloading binary https://github.com/rancher/k3s/releases/download/v0.10.2/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]  Skipping /usr/local/bin/ctr symlink to k3s, command exists in PATH at /usr/bin/ctr[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 k3sJob for k3s.service failed because the control process exited with error code.See "systemctl status k3s.service" and "journalctl -xe" for details.

比如这里就是一个失败的安装日志。这个时候,看一下启动日志:journalctl -xe > k3s.log

因为 Hypriotos 没有安装 rngtools,需要手工安装一下。

apt updateapt install rng-tools

然后 vi /etc/default/rng-tools ,开启硬件随机:HRNGDEVICE=/dev/hwrng

然后重启 rng-tools 服务:

systemctl restart rng-tools

配置完毕后,k8s 服务启动就可以问题了。另外,我们还需要改掉默认 parse 镜像的地址,方便网络拉取:

vi /etc/systemd/system/k3s.serviceExecStart=/usr/local/bin/k3s server --pause-image=gcr.azk8s.cn/google_containers/pause-arm:3.1systemctl restart k3s

再次重启 k3s 服务

systemctl restart k3s

基本上就 OK 了。如果还出现问题,可以尝试安装最新版本的 k3s 文件,看是否能启动成功,开源软件没有人力物力做细粒度的测试,请包含。下载的文件名是:

  • k3s-airgap-images-arm64.tar
  • k3s-armhf对于 k3s-armhf,就是 all-in-one 的启动文件,记得改成 k3s,放在/usr/local/bin 下面。对于 k3s-airgap-images-arm64.tar 是 k8s 计算节点需要的默认镜像下载包,这样可以无需上网就可以快速部署 k8s 计算节点。master 节点其实不需要。rancher 还特意配置了一个页面介绍使用方法:https://rancher.com/docs/k3s/latest/en/advanced/
sudo mkdir -p /var/lib/rancher/k3s/agent/images/sudo cp ./k3s-airgap-images-arm64.tar /var/lib/rancher/k3s/agent/images/

这样 master 节点就部署完毕。

HypriotOS/armv7: root@k3s-master in ~# sudo kubectl config get-clusters NAMEdefaultHypriotOS/armv7: root@k3s-master in ~# sudo kubectl cluster-info Kubernetes master is running at https://127.0.0.1:6443CoreDNS is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxyMetrics-server is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxyTo further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

计算节点的安装,可以参考如下脚本:

k3s_url="https://k3s-master.local:6443"k3s_token="K1042e2f8e353b9409472c1e0cca8457abe184dc7be3f0805109e92c50c193ceb42::node:c83acbf89a7de7026d6f6928dc270028"curl -sfL https://get.k3s.io | K3S_URL=${k3s_url} K3S_TOKEN=${k3s_token} sh -

注意:k3s_token 可以在 master 节点上复制一下,路径在这里:

cat /var/lib/rancher/k3s/server/node-token

等计算节点安装完成之后,就可以部署服务了。如果想远程管理这套树莓派集群,需要把管理配置文件下载到本地。管理配置文件放在 master 节点上:

cat /etc/rancher/k3s/k3s.yaml

复制到本地开发机器,包含有 k8s 管理工具 kubectl 即可。

$ KUBECONFIG=./k3s.yaml kubectl get nodeNAME         STATUS   ROLES    AGE   VERSIONk3s-master   Ready    master   90m   v1.16.2-k3s.1

总结

经过以上的实战演练,相信你对 k3s 部署到树莓派有了更深入的了解。这个单体的 k3s 执行文件,在不同版本的树莓派中,都会有很多问题出现,但是大量网友的测试,基本上让它可以很顺利的完全安装。做一些试验或者安装一套轻量级的开发测试环境,还是很得力的工具。请大家多方体验。


本文首发于 GitChat,未经授权不得转载,转载需与 GitChat 联系。

阅读全文: http://gitbook.cn/gitchat/activity/5dc8cde3cce67d602c5aacae

您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

FtooAtPSkEJwnW-9xkCLqSTRpBKX

你可能感兴趣的:(运维,测试,嵌入式)