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 内存了,内置无线网卡。很爽,就不用在赘述。那么读者会问了,这些东西从那里买呢?淘宝。我的装备如下图,参考:

好了,现在硬件基础条件有了,我们就要熟练掌握刷盘技术。工具是 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 专享技术内容哦。

玩着k3s树莓派集群指南相关推荐

  1. 自建28核树莓派集群,顺便学学docker,这里有一个500美元的搭建方案

    机器之心编译 机器之心编辑部 撸代码.写博客.动手做点好玩的东西是一个码农常见的进阶方式.很多大牛都有写博客的习惯,动手能力更是不在话下.今天介绍的这位机器学习爱好者 WILL HO 也喜欢写博客,他 ...

  2. 树莓派 mysql集群_多树莓派集群服务器

    树莓派使用实例之:2 Pi R 第二篇:Web服务器 在我的上一篇文章中讲过如何做一个高可用系统:两个树莓派布署上 GlusterFS 集群文件系统,就变成一个容错文件服务器了.在这篇文章中我们会基于 ...

  3. Rabbit 集群指南

    本指南涵盖与RabbitMQ群集相关的基本主题: 群集配置要求 群集节点之间复制了哪些数据 集群对客户端来说意味着什么 如何构建集群 节点如何相互验证(以及使用CLI工具) 节点重新启动以及节点如何重 ...

  4. 《k3s 源码解析3 ---- k3s集群搭建》

    一.安装说明: 主机名 要求主机名不能一样,如果主机名一 样,可以通过参数--with-node-id添加一个随机后缀, 或者通过参数--node-name或者环境变量$K3S_NODE_NAME指定 ...

  5. K3s集群部署+rancher部署并导入K3s集群

    centos系统自动部署docker: curl -fsSL get.docker.com | sh 运用国内的资源安装 K3s: K3s server安装(脚本安装): curl –sfL \ ht ...

  6. RKE部署Rancher v2.5.8 HA高可用集群 以及常见错误解决

    此博客,是根据Rancher官网文档,使用RKE测试部署最新发布版 Rancher v2.5.8 高可用集群的总结文档.Rancher文档 | K8S文档 | Rancher | Rancher文档 ...

  7. 使用RKE部署Rancher v2.5.8 HA高可用集群

    文章目录 一 了解 Rancher 1 关于Helm 2 关于RKE 3 关于K3S 4 Rancher 名词解释 4.1 仪表盘 4.2 项目 4.3 多集群应用 4.4 应用商店 4.5 Ranc ...

  8. 集群中几种session同步解决方案的比较[转]

    集群中session安全和同步是个最大的问题,下面是我收集到的几种session同步的方案,希望能通过分析其各自的优劣找出其适应的场景. 1. 客户端cookie加密 这是我以前采用的方式,简单,高效 ...

  9. RabbitMQ 高可用集群搭建

    RabbitMQ 高可用集群搭建 1 集群简介 1.1 集群架构 ​ 当单台 RabbitMQ 服务器的处理消息的能力达到瓶颈时,此时可以通过 RabbitMQ 集群来进行扩展,从而达到提升吞吐量的目 ...

最新文章

  1. Bootstrap-table学习笔记(二)——前后端分页模糊查询
  2. PHP中常用的正则表达式函数
  3. python中return返回值为函数名_Python函数返回值
  4. 设计模式在Netty 中的应用-策略模式源码举例
  5. 决策树(CART算法)针对中文文本分类
  6. 访问量大如何增加服务器,服务器流量过大原因及解决方法
  7. FMS3系列(三):创建基于FMS的流媒体播放程序
  8. 计算机二级考试考不考二进制,如何通过计算机一、二级考试?方法很重要,过来人的经验告诉你...
  9. Android 自动化测试框架简介
  10. php取mysql某列的值,php – 获取MYSQL中某些列为null的表中的值
  11. ajax分页效果、分类联动、搜索功能
  12. 【MATLAB】MATLAB应用手册(1):高等数学的MATLAB应用
  13. loadrunner11破解技巧
  14. 炫界 (392) -(持法延迟)_火爆手游必不可少低延迟蓝牙耳机,双11精品优质蓝牙耳机推荐...
  15. 20155218 《Java程序设计》实验二(Java面向对象程序设计)实验报告
  16. 混凝土塔吊浇筑怎么计算机械费,秒懂塔吊和施工电梯费用的摊销成本测算~
  17. 关于神舟笔记本电脑结束睡眠后耳机没声音的解决方法
  18. win 2008R2启用TLS 1.2 Windows 2008/2008R2手动启用TLS1_2协议教程
  19. 排错的时候不要“想当然”
  20. Python 画樱花树(樱花树下的约定)

热门文章

  1. 神仙项目!狗屁不通 Python 文章生成器
  2. EMC | 电磁兼容基础简介
  3. 基于Java+SpringBoot大学生实习管理系统 大学生实习兼职网站
  4. 华为认证值得考吗?考到工资一般多少钱
  5. 刷题神器小程序【飞刀帮刷题】,从此学习考试无忧虑
  6. CELLS方式引用单元格
  7. Linux下使用U盘
  8. Python-批量修改Excel内的内容并保留原始格式
  9. 202106裁判文书网采集思路 理论无视更新
  10. 作团队感悟(10)----培养务实的精神