玩着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 内存了,内置无线网卡。很爽,就不用在赘述。那么读者会问了,这些东西从那里买呢?淘宝。我的装备如下图,参考:
好了,现在硬件基础条件有了,我们就要熟练掌握刷盘技术。工具是 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树莓派集群指南相关推荐
- 自建28核树莓派集群,顺便学学docker,这里有一个500美元的搭建方案
机器之心编译 机器之心编辑部 撸代码.写博客.动手做点好玩的东西是一个码农常见的进阶方式.很多大牛都有写博客的习惯,动手能力更是不在话下.今天介绍的这位机器学习爱好者 WILL HO 也喜欢写博客,他 ...
- 树莓派 mysql集群_多树莓派集群服务器
树莓派使用实例之:2 Pi R 第二篇:Web服务器 在我的上一篇文章中讲过如何做一个高可用系统:两个树莓派布署上 GlusterFS 集群文件系统,就变成一个容错文件服务器了.在这篇文章中我们会基于 ...
- Rabbit 集群指南
本指南涵盖与RabbitMQ群集相关的基本主题: 群集配置要求 群集节点之间复制了哪些数据 集群对客户端来说意味着什么 如何构建集群 节点如何相互验证(以及使用CLI工具) 节点重新启动以及节点如何重 ...
- 《k3s 源码解析3 ---- k3s集群搭建》
一.安装说明: 主机名 要求主机名不能一样,如果主机名一 样,可以通过参数--with-node-id添加一个随机后缀, 或者通过参数--node-name或者环境变量$K3S_NODE_NAME指定 ...
- K3s集群部署+rancher部署并导入K3s集群
centos系统自动部署docker: curl -fsSL get.docker.com | sh 运用国内的资源安装 K3s: K3s server安装(脚本安装): curl –sfL \ ht ...
- RKE部署Rancher v2.5.8 HA高可用集群 以及常见错误解决
此博客,是根据Rancher官网文档,使用RKE测试部署最新发布版 Rancher v2.5.8 高可用集群的总结文档.Rancher文档 | K8S文档 | Rancher | Rancher文档 ...
- 使用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 ...
- 集群中几种session同步解决方案的比较[转]
集群中session安全和同步是个最大的问题,下面是我收集到的几种session同步的方案,希望能通过分析其各自的优劣找出其适应的场景. 1. 客户端cookie加密 这是我以前采用的方式,简单,高效 ...
- RabbitMQ 高可用集群搭建
RabbitMQ 高可用集群搭建 1 集群简介 1.1 集群架构 当单台 RabbitMQ 服务器的处理消息的能力达到瓶颈时,此时可以通过 RabbitMQ 集群来进行扩展,从而达到提升吞吐量的目 ...
最新文章
- Bootstrap-table学习笔记(二)——前后端分页模糊查询
- PHP中常用的正则表达式函数
- python中return返回值为函数名_Python函数返回值
- 设计模式在Netty 中的应用-策略模式源码举例
- 决策树(CART算法)针对中文文本分类
- 访问量大如何增加服务器,服务器流量过大原因及解决方法
- FMS3系列(三):创建基于FMS的流媒体播放程序
- 计算机二级考试考不考二进制,如何通过计算机一、二级考试?方法很重要,过来人的经验告诉你...
- Android 自动化测试框架简介
- php取mysql某列的值,php – 获取MYSQL中某些列为null的表中的值
- ajax分页效果、分类联动、搜索功能
- 【MATLAB】MATLAB应用手册(1):高等数学的MATLAB应用
- loadrunner11破解技巧
- 炫界 (392) -(持法延迟)_火爆手游必不可少低延迟蓝牙耳机,双11精品优质蓝牙耳机推荐...
- 20155218 《Java程序设计》实验二(Java面向对象程序设计)实验报告
- 混凝土塔吊浇筑怎么计算机械费,秒懂塔吊和施工电梯费用的摊销成本测算~
- 关于神舟笔记本电脑结束睡眠后耳机没声音的解决方法
- win 2008R2启用TLS 1.2 Windows 2008/2008R2手动启用TLS1_2协议教程
- 排错的时候不要“想当然”
- Python 画樱花树(樱花树下的约定)