当我开始对 ARM 设备,尤其是 Raspberry Pi 感兴趣时,我的第一个项目是 OpenVPN 服务器。
通过将 Raspberry Pi 作为连接到我家网络的安全网关,我可以使用我的手机来控制我的桌面,远程播放 Spotify,打开文档以及许多其他有趣的事情。 我为第一个项目使用了现有的教程,因为我害怕自己将任何东西通过管道传输到命令行。
几个月后,这种恐惧感消失了。 我扩展了我的原始项目,并使用 Samba 服务器将 OpenVPN 服务器与文件服务器隔离。 这是我的第一个没有逐字逐句遵循教程的项目。 不幸的是,在我的 Samba 项目结束时,我意识到我没有记录任何内容,因此我无法复制它。 要重新创建它,我必须重新阅读我用于参考的所有单独指南,然后将项目重新组合在一起。
我学到了关于开发者工作流程的宝贵一课 - 跟踪您的所有更改。 我在本地创建了一个小型 git 仓库,并记录了我输入到命令行中的所有命令。
发现 Kubernetes
在 2015 年 5 月,我发现了 Linux 容器和 Kubernetes。 我觉得 Kubernetes 非常吸引人,我可以参与一个仍在技术开发中的概念 - 而且我实际上可以访问它。 该平台本身及其呈现的可能性令人兴奋。 直到那时,我才在一个 Raspberry Pi 设备上运行单个程序。 使用 Kubernetes,我可以进行比以前更高级的配置。
那时,ARM 上的 Docker(如果我没记错的话是 v1.6)有一个错误,这意味着在 Raspberry Pi 设备上运行 Kubernetes 几乎是不可能的。 在那些早期的 0.x 版本中,Kubernetes 变化非常快。 每次我找到一个关于如何在 AMD64 上设置 Kubernetes 的指南时,它都是针对旧版本的,并且与我当时拥有的完全不兼容。
无论如何,我设法在 Raspberry Pi 上创建了一个 Kubernetes 节点,并且到了 v1.0.1 Kubernetes 版本,我成功地让它运行了,使用的是 Docker v1.7.1。 这是将 Kubernetes 部署到 ARM 的第一个完全可行的方法。
在 Raspberry Pi 上运行 Kubernetes 的优势在于,由于 ARM 设备非常小,因此它们不会消耗大量电量。 如果程序以正确的方式构建,则可以对 AMD64 上的相同程序使用相同的命令。 拥有小型 IoT 开发板为教育创造了绝佳的机会。 它还有利于设置您需要出差的演示,例如会议。 携带您的 Raspberry Pi 比携带您(通常)大型的 Intel 机器容易得多。
现在 ARM(包括 32 位和 64 位)支持已按照 我的提案合并到核心中,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)可在多个平台上运行。 您可以像在任何 AMD64 设备上一样,通过在所有机器上照常安装 Docker、kubeadm、kubectl 和 kubelet,使用 Weave 将 Kubernetes 部署到 ARM。 然后,初始化主机器,控制平面组件将使用以下命令在其上运行
kubeadm init
接下来,使用以下命令安装您的 pod 网络
kubectl apply -f https://git.io/weave-kube
以前,您只能在使用 ARM 时使用 Flannel 安装 pod 网络,但自从 Weave Net 1.9 发布以来,这种情况已经改变,现在它也正式支持 ARM。
最后,加入您的节点
kubeadm join --token <token> <master-ip>
就是这样! Kubernetes 已部署到您的 Raspberry Pi 设备。 与在 Intel/AMD64 上运行相比,您不必做任何特别的事情; ARM 上的 Weave Net 就可以正常工作。
Raspberry Pi 社区
我希望 Raspberry Pi 社区不断发展,他们的心态能够传播到世界其他地方。 他们在英国和其他国家/地区取得了成功,但在芬兰却没有那么成功。 我希望生态系统能够扩展,并让更多人学习如何在 ARM 设备上部署 Kubernetes 或 Weave。 毕竟,这就是我学习的方式。 通过在 Raspberry Pi 设备上自学,我认为我比以往任何时候都更了解 ARM 设备以及部署在它们之上的软件。
最后的想法
我学习到的关于 Raspberry Pi 和 Kubernetes 的所有知识,都是通过加入用户社区、提出问题和测试不同的成功级别在线学习的。
我是一名住在芬兰的瑞典语高中生,到目前为止,我从未上过编程或计算课程。 我仍然能够加入开源社区,因为对年龄或教育没有任何限制:您的工作会根据其优点进行判断。
对于任何对首次为任何开源项目做出贡献感到紧张的人,我想说:直接投入,完全值得。 您可以做的事情没有限制,而且您永远不会知道开源世界会为您提供哪些机会。 这将会很有趣,我保证!
3 条评论