基於樹莓派搭建小型雲計算集羣
擁有一個私人的雲計算平臺是一件很酷的事情。隨着技術的發展,實現這一願望已經變得相當容易。接下來就來說明如何利用樹莓派硬件和相關軟件搭建一個用於邊緣計算的小型雲計算集羣。
1 硬件準備
硬件優先考慮樹莓派。選擇 ARM 而不是 x86 架構硬件,主要是考慮到該雲計算平臺主要用於私人,家庭以及邊緣計算等應用場景。一方面,ARM 硬件相對便宜,功耗低,性價比更高;另一方面樹莓派擁有成熟的社區生態,可用的軟件也比較豐富。
選擇 1. 樹莓派 3B 及其之前的版本
樹莓派 3B 及其之前的版本由於不支持以太網口供電 (PoE), 因此需要額外的 USB 供電插頭。所有樹莓派板子都連接到一個交換機 / 路由器,如下圖所示
選擇 2. 樹莓派 3B+,樹莓派 4B
樹莓派 3B+/4B 擁有以太網口供電 (PoE) 功能, 因此可省去 USB 供電插頭。所有樹莓派板子都連接到一個支持 PoE 功能的交換機 / 路由器,如下圖所示
選擇 3. Turing Pi 主板 + 樹莓派計算模塊
- 關於樹莓派計算模塊
上面介紹的樹莓派 3B, 3B+, 4B 等板子其實可以拆解成如下兩部分,即: 計算模塊和計算模塊 IO 擴展板.
將計算模塊和計算模塊 IO 擴展板結合起來功能就和上述的樹莓派 3B, 3B+, 4B 一致。
- 關於 Turing Pi 主板
利用 Turing Pi 主板加可擴展樹莓派計算模塊的方式搭建集羣十分的方便。該板最大支持 7 塊樹莓派計算模塊,並可進行動態擴展,類似於數據中心的刀片服務器 (blade server)。
Turing Pi 同時支持帶 eMMC 的計算模塊和不帶 eMMC 的計算模塊,其第一個槽可用於燒寫操作系統鏡像到計算模塊 eMMC。對於不帶 eMMC 的計算模塊可以通過傳統的插 SD 卡的方式啓動。
2 燒寫樹莓派系統
2.1 系統選擇
推薦如下兩個系統
-
Raspbian: 官方系統
-
HypriotOS: 容器操作系統
2.2 燒寫系統
選擇 1. 燒寫系統到 SD 卡
具體步驟參考 https://www.raspberrypi.org/documentation/installation/installing-images/README.md
選擇 2. 燒寫系統到樹莓派計算模塊的 eMMC
具體步驟參考 http://raspberrypiwiki.com/How_to_Burning_System_for_the_eMMC_of_Raspberry_Pi_Compute_Module
所有單板都燒寫好後按照硬件準備中的描述連接好,並將每個板子配置好 ssh 連接,將公鑰放置在~/.ssh/authorized_keys 裏面,以方便連接。確保可以通過 ssh @ 能連上集羣中每一個樹莓派節點。
3 安裝 Kubernetes 並連接集羣
3.1 安裝 Kubernetes
Lightweight Kubernetes (K3S) 是一個面向 IoT 及邊緣計算的 Kubernetes 版本,比較適合樹莓派等資源有限的硬件。
- 方式 1:在每個樹莓派板子上單獨安裝
在 server 節點上運行
curl -sfL https://get.k3s.io | sh -
在每個 worker 節點上運行
curl -sfL https://get.k3s.io | K3S_URL=https://<server_ip>:6443 K3S_TOKEN=sh -
PS: K3S_TOKEN: 存在 server 節點的 /var/lib/rancher/k3s/server/node-token.
- 方式 2:使用 Ansible 自動化安裝
先在控制機上安裝 Ansible
sudo apt update
sudo apt install software-properties-common
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt install ansible
下載 k3s-ansible
git clone https://github.com/rancher/k3s-ansible.git
然後按照 https://github.com/rancher/k3s-ansible 的步驟,在 inventory/my-cluster/hosts.ini 裏配置好 server (master) 節點和 worker(node) 節點的 IP 地址。
運行如下命令,Ansible 會將 K3S 自動安裝在集羣的 server 節點和每個 worker 節點上
ansible-playbook site.yml -i inventory/my-cluster/hosts.ini --ask-become-pass
3.2 連接集羣
在控制機上安裝 kubectl
sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl
將配置文件從 server 節點拷貝至控制機並配置環境變量
scp <user_name>@<server_ip>:~/.kube/config ~/.kube/rasp-config
export KUBECONFIG=~/.kube/rasp-config
連接查看集羣
kubectl get nodes
大功告成,接下來就可以部署服務到集羣了。
【轉自 https://calinyara.github.io/technology/2020/06/08/raspberry-cluster.html】
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/SzR9fyUjxTgbrchiyX0l-Q