如何在树莓派上部署 Kubernetes

只用几步,使用 Weave Net 在树莓派上设置 Kubernetes。

当我开始对 ARM设备,特别是 Raspberry Pi 感兴趣时,我的第一个项目是一个 OpenVPN 服务器。

通过将 Raspberry Pi 作为家庭网络的安全网关,我可以使用我的手机来控制我的桌面,远程播放 Spotify,打开文档以及一些其他有趣的东西。我在第一个项目中使用了一个现有的教程,因为我害怕自己在命令行中拼砌。

几个月后,这种恐惧消失了。我扩展了我的原始项目,并使用 Samba 服务器从文件服务器分离出了 OpenVPN 服务器。这是我第一个没有完全按照教程来的项目。不幸的是,在我的 Samba 项目结束后,我意识到我没有记录任何东西,所以我无法复制它。为了重新创建它,我不得不重新参考我曾经用过的那些单独的教程,将项目拼回到一起。

我学到了关于开发人员工作流程的宝贵经验 - 跟踪你所有的更改。我在本地做了一个小的 git 仓库,并记录了我输入的所有命令。

发现 Kubernetes

2015 年 5 月,我发现了 Linux 容器和 Kubernetes。我觉得 Kubernetes 很有魅力,我可以使用仍然处于技术发展的概念 - 并且我实际上可以用它。平台本身及其所呈现的可能性令人兴奋。在此之前,我才刚刚在一块 Raspberry Pi 上运行了一个程序。而有了 Kubernetes,我可以做出比以前更先进的配置。

那时候,Docker(v1.6 版本,如果我记得正确的话)在 ARM 上有一个 bug,这意味着在 Raspberry Pi 上运行 Kubernetes 实际上是不可能的。在早期的 0.x 版本中,Kubernetes 的变化很快。每次我在 AMD64 上找到一篇关于如何设置 Kubernetes 的指南时,它针对的还都是一个旧版本,与我当时使用的完全不兼容。

不管怎样,我用自己的方法在 Raspberry Pi 上创建了一个 Kubernetes 节点,而在 Kubernetes v1.0.1 中,我使用 Docker v1.7.1 让它工作了。这是第一个将 Kubernetes 全功能部署到 ARM 的方法。

在 Raspberry Pi 上运行 Kubernetes 的优势在于,由于 ARM 设备非常小巧,因此不会产生大量的功耗。如果程序以正确的方式构建而成,那么就可以在 AMD64 上用同样的方法运行同一个程序。这样的一块小型 IoT 板为教育创造了巨大的机会。用它来做演示也很有用,比如你要出差参加一个会议。携带 Raspberry Pi (通常)比拖着大型英特尔机器要容易得多。

现在按照我建议的 ARM(32 位和 64 位)的支持已被合并到 Kubernetes 核心中。ARM 的二进制文件会自动与 Kubernetes 一起发布。虽然我们还没有为 ARM 提供自动化的 CI(持续集成)系统,不过在 PR 合并之前会自动确定它可在 ARM 上工作,现在它运转得不错。

Raspberry Pi 上的分布式网络

我通过 kubeadm 发现了 Weave Net。Weave Mesh 是一个有趣的分布式网络解决方案,因此我开始了解更多关于它的内容。在 2016 年 12 月,我在 Weaveworks 收到了第一份合同工作,我成为了 Weave Net 中 ARM 支持团队的一员。

我很高兴可以在 Raspberry Pi 上运行 Weave Net 的工业案例,比如那些需要设备更加移动化的工厂。目前,将 Weave Scope 或 Weave Cloud 部署到 Raspberry Pi 可能不太现实(尽管可以考虑使用其他 ARM 设备),因为我猜这个软件需要更多的内存才能运行良好。理想情况下,随着 Raspberry Pi 升级到 2GB 内存,我想我可以在它上面运行 Weave Cloud 了。

在 Weave Net 1.9 中,Weave Net 支持了 ARM。Kubeadm(通常是 Kubernetes)在多个平台上工作。你可以使用 Weave 将 Kubernetes 部署到 ARM,就像在任何 AMD64 设备上一样安装 Docker、kubeadm、kubectl 和 kubelet。然后初始化控制面板组件运行的主机:


  1. kubeadm init

接下来,用下面的命令安装你的 pod 网络:


  1. kubectl apply -f https://git.io/weave-kube

在此之前在 ARM 上,你只能用 Flannel 安装 pod 网络,但是在 Weave Net 1.9 中已经改变了,它官方支持了 ARM。

最后,加入你的节点:


  1. kubeadm join --token <token> <master-ip>

就是这样了!Kubernetes 已经部署到了 Raspberry Pi 上了。相比在 Intel/AMD64 上运行,你不用做什么特别的事情;Weave Net 在 ARM 上就能工作的很好。

Raspberry Pi 社区

我希望 Raspberry Pi 社区成长起来,他们的思想传播到世界其他地方。他们在英国和其他国家已经取得了成功,但在芬兰并不是很成功。我希望生态系统能够继续扩展,以让更多的人学习如何部署 Kubernetes 或 Weave 到 ARM 设备上。毕竟,这些是我学到的。通过在 Raspberry Pi 设备上自学,我更好地了解了 ARM 及其上面部署的软件。

最后的思考

我通过加入用户社区、提出问题和不同程度的测试,在线学习了关于 Raspberry Pi 和 Kubernetes 的一切。

我是居住在芬兰的说瑞典语的高中生,到目前为止,我还从来没有参加过编程或计算机课程。但我仍然能够加入开源社区,因为它对年龄或教育没有限制:你的工作是根据其价值来评判的。

对于那些第一次要在开源项目中做出贡献感到紧张的人,我想说:深入进去,因为这是完全值得的。你做什么没有任何限制,你将永远不知道开源世界将为你提供哪些机会。这会很有趣,我保证!

原文发布时间为:2017-05-11

本文来自合作伙伴“Linux中国”

时间: 2024-10-29 17:02:49

如何在树莓派上部署 Kubernetes的相关文章

在ubuntu上部署Kubernetes管理docker集群示例

本文通过实际操作来演示Kubernetes的使用,因为环境有限,集群部署在本地3个ubuntu上,主要包括如下内容: 部署环境介绍,以及Kubernetes集群逻辑架构 安装部署Open vSwitch跨机器容器通信工具 安装部署Etcd和Kubernetes的各大组件 演示Kubernetes管理容器和服务 关于 Kubernetes 系统架构及组件介绍见这里. 1. 部署环境及架构 vSphere: 5.1 操作系统: ubuntu 14.04 x86_64 Open vSwith版本: 2

DockOne微信分享( 九十五):树莓派上的Docker集群管理

本文讲的是DockOne微信分享( 九十五):树莓派上的Docker集群管理[编者的话]随着IOT市场的火热发展,Docker天然的轻量级以及帮助业务快速重构的特性,将会在IOT领域迎来巨大发展潜力,甚至有可能会比它在云端的潜力更大.本文将致力于构建一个利用Rancher&RancherOS来管理运行在树莓派上的容器集群. 目前业界主流基本都是在x86架构上使用Docker,除了因为Intel在服务器领域的绝对领导地位之外,x86 CPU的确在性能上有着卓越的表现.但是近些年来,随着云计算的迅猛

在阿里云上部署生产级别Kubernetes集群

阿里云是国内非常受欢迎的基础云平台,随着Kubernetes的普及,越来越多的企业开始筹划在阿里云上部署自己的Kubernetes集群.本文将结合实战中总结的经验,分析和归纳一套在阿里云上部署生产级别Kubernetes集群的方法.文中所采取的技术方案具有一定的主观性,供各位读者参考.在实践中可以根据具体使用场景进行优化. 目标 当我们刚接触Kubernetes进行测试集群的搭建时,往往会选择一篇已有的教程,照着教程完成集群搭建.我们很少去质疑教程作者每一步操作的合理性,只想快点把集群搭建起来,

DockOne微信分享(一四一):如何开发部署Kubernetes Native应用

[编者的话]当我们有了一个kubernetes集群后,如何在上面开发和部署应用,应该遵循怎样的流程?本次分享将向您展示如何使用Go语言开发和部署一个Kubernetes Native应用,使用Wercker进行持续集成与持续发布,我将以一个很简单的前后端访问,获取伪造数据并展示的例子来说明. 环境声明 本文讲的是DockOne微信分享(一四一):如何开发部署Kubernetes Native应用首先声明下我们使用的集群环境: Docker 1.12.5 flannel network host-

Shell脚本快速部署Kubernetes集群系统

  本文紧跟上节所讲的手动部署Kubernetes管理Docker篇所写,本篇主要内容利用Shell脚本完成快速部署Kubernetes集群.上节博文看过的朋友也能感觉到部署过程相对比较简单,那么,出于简化工作流程,推进运维自动化角度来说,于是花了2/3天时间写这个部署Kubernetes脚本.   运维工作中,常常会遇到部署各种各样的服务,建议:常规部署都应该尽量使用脚本完成,一方面提高自身脚本编写能力,另一方面推进运维自动化. 详细部署说明文档:http://lizhenliang.blog

三种常见的部署Kubernetes的方式

容器技术将应用程序及其依赖关系与操作系统进行分离,不像虚拟机那样要打包整个操作系统,这样一来,就能节约更多的系统资源,同时容器在下载.升级.部署和迭代的时候也更高效.因此,在IT技术界中,容器技术的发展之势可谓是如日中天,就连Google,微软和亚马逊等这类世界知名公司也开始使用这项技术. 容器技术的发展不免也引起了各类容器编排工具的激烈竞争.Kubernetes,作为Google开源的容器编排工具,已率先成为领先的解决方案,能成就它主要有三个原因:  云原生架构设计:能支持和部署下一代应用程

在Azure中部署Kubernetes容器集群

在这个快速入门教程中,我们使用 Azure CLI 创建一个 Kubernetes 集群,然后在集群上部署运行由 Web 前端和 Redis 实例组成的多容器应用程序.一旦部署完成,应用程序可以通过互联网访问. 示例应用截图 这个快速入门教程假设你已经基本了解了 Kubernetes 的概念,有关 Kubernetes 的详细信息,请参阅 Kubernetes 文档. 如果您没有 Azure 账号,请在开始之前创建一个免费帐户. 登录 Azure 云控制台 Azure 云控制台是一个免费的 Ba

如何在 Atomic 系统上部署OpenStack

基于docker.kubernetes部署openstack到atomic系统上 openstack的服务定义,是不是看起来很简洁? openstack的实际组件构成,是不是看起来很复杂? 所有的openstack服务彼此依赖,带来了服务生命周期管理的复杂性和低效. 比如openstack的鉴权服务keystone,在已有环境上部署一个新的keystone是否会对其他服务带来兼容性问题 是很难判断的.用现在的工具,也是难以进行回退的. 事实上,并非只有openstack是这样的,很多基础设施平台

ACE上部署ghost失败案例

昨天有一用户问我按照我的教程,ace无法成功部署ghost. [吐槽]云-青陌 大家好 2015/12/26 18:41:27 [吐槽]云-青陌 2015/12/26 18:41:27 有在ACE上部署ghost的小伙伴吗? 2015/12/26 20:49:52 [吐槽]Sosunda 2015/12/26 20:49:52 http://nodeapp.aliapp.com/ [吐槽]云-青陌 2015/12/26 20:51:44 不知道为什么我一直部署失败 然后热心群友帮他查找原因.然而