如何在樹莓派上部署Kubernetes

知與誰同發表於2017-05-19

只用幾步,使用 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中國”


相關文章