超強教程!在樹莓派上構建多節點K8S集群!

2022-07-04 21:36:13 字數 3543 閱讀 9165

在很長一段時間裡,我對於在樹莓派上搭建kubernetes集群極為感興趣。在網路上找到一些教程並且跟著實操,我已經能夠將kubernetes安裝在樹莓派上,並在三個pi集群中工作。然而,在master節點上對於ram和cpu的要求已經超過了我的樹莓派所能提供的,因此在執行kubernetes任務時效能並不優異。這也使得就地公升級kubernetes成為不可能。

所以,我看到業界應用最為廣泛的kubernetes管理平台建立者rancher labs推出輕量級kubernetes發行版k3s時,十分興奮,它專為資源受限場景而設計,還針對arm處理器進行了優化,這使得在樹莓派上執行kubernetes更加可行。在本文中,我將使用k3s和樹莓派建立乙個kubernetes集群。

我將從網路上安裝k3s,所以需要通過路由器訪問網際網路。

對於這一集群,我們將使用3個樹莓派。第乙個樹莓派我把它命名為kmaster,並分配乙個靜態ip 192.168.0.50(因為我的本地網路是192.168.0.0/24)。第乙個worker節點(也就是第二個pi),我們稱它為knode1並分配ip 192.168.0.51。最後乙個worker節點,我們稱它為knode2並分配ip 192.168.0.52。

當然如果你的網路和我不一樣,可以使用你能夠獲得網路ip。只要在本文使用ip的任何地方替換你自己的值即可。

為了不必再通過ip引用每個節點,我們將其主機名新增到pc上的/ etc / hosts檔案中。

echo -e "192.168.0.50\tkmaster" | sudo tee -a /etc/hosts

echo -e "192.168.0.51\tknode1" | sudo tee -a /etc/hosts

echo -e "192.168.0.52\tknode2" | sudo tee -a /etc/hosts

接下來,開始安裝raspbian,啟用ssh server,為kmaster設定主機名稱並分配靜態ip 192.168.0.50。

既然raspbian已經在master節點上安裝完畢,讓我們啟用我們的master pi並通過ssh進入它:

ssh pi@kmaster
現在我們要準備安裝k3s。在master pi上執行:

curl -sfl  | sh -
命令執行完畢之後,我們就有了乙個已經設定好的單節點集群並且正在執行中!讓我們檢查一下。依舊是在這個pi上,執行:

sudo kubectl get nodes
你應該看到類似以下內容:

name     status   roles    age    version

kmaster ready master 2m13s v1.14.3-k3s.1

我們想要新增一對worker節點。在這些節點上安裝k3s,我們需要乙個join token。join token存在於master節點的檔案系統上。讓我們複製並將它儲存在某個地方,稍後我們可以獲取它:

sudo cat /var/lib/rancher/k3s/server/node-token
為兩個worker節點獲取一些sd卡,並在每個節點上安裝raspbian。對於其中乙個,將主機名設定為knode1並分配ip 192.168.0.51。對於另乙個,將主機名設定為knode2並分配ip 192.168.0.52。現在,讓我們安裝k3s。

啟動你的第乙個worker節點,並通過ssh進入它:

ssh pi@knode1
在這個pi上,我們將像之前一樣安裝k3s,但我們將給安裝程式額外的引數,讓它了解我們正在安裝乙個worker節點並且要加入乙個現有集群:

curl -sfl  | k3s_url= \

k3s_token=join_token_we_copied_earlier sh -

使用從上個部分提取出來的join token替換join_token_we_copied_earlier。為knode2重複這些步驟。

每當我們要檢查或修改集群時,都必須通過ssh到master節點來執行kubectl,這很煩人。因此,我們像將kubectl放在我們的pc上,但是首先讓我們從master節點獲取所需的配置資訊。通過ssh進入kmaster,並執行:

sudo cat /etc/rancher/k3s/k3s.yaml
複製配置資訊並返回到你的pc。為配置建立乙個目錄:

mkdir ~/.kube
server: https://localhost:6443
改為:

server: https://kmaster:6443
為了安全起見,請將檔案的讀/寫許可權限制為你自己:

chmod 600 ~/.kube/config
現在讓我們在我們的pc上安裝kubectl(如果你還沒有)。kubernetes**上有針對各種平台執行此操作的說明。由於我正在執行linux mint(乙個ubuntu衍生版本),因此我將在此處顯示ubuntu的說明:

sudo apt update && sudo apt install kubectl如果你還不熟悉,上述命令為kubernetes新增了乙個debian倉庫,獲取其gpg金鑰以確保安全,然後更新軟體包列表並安裝kubectl。現在,我將通過標準軟體更新機制獲得有關kubectl更新的通知。

現在我們可以從我們的pc檢查我們的集群,執行:

kubectl get nodes
你應該看到類似以下內容:

name     status  roles   age   version

kmaster ready master 12m v1.14.3-k3s.1

knode1 ready worker 103s v1.14.3-k3s.1

knode1 ready worker 103s v1.14.3-k3s.1

congratulations!你現在已經有乙個正在工作的3個節點的kubernetes集群!

如果你執行kubectl get pods --all-namespaces,你將看到一些traefik的額外pod。treafik是乙個反向**和負載均衡器,我們可以使用它從單個入口點將流量引導到我們的集群中。kubernetes當然也可以安裝traefik,但不是預設提供的。所以k3s中預設提供traefik是乙個非常棒的設計!

在樹莓派上配置mono

mono是跨平台的.net編譯環境,試著在樹莓派上部署一下 1.獲取raspbian系統 如何獲取就不多說了,主要是要燒錄到sd卡里並正常啟動 1.1 獲取sudo許可權 建議使用管理員許可權,這樣問題可能少一些 也許更多 sudo s 2.安裝m4 gun tar zxvf m4 1.4.9.ta...

在樹莓派上安裝OpenVINO

準備工作 這裡我推薦2019 r3版本,之前裝了2020版本不好用,又退回到了2019 r3版本 開啟終端,執行命令 cd downloads 3.建立乙個安裝資料夾 sudo mkdir p opt intel openvino 4.解壓安裝包到安裝路徑下 sudo tar xf l openvi...

在樹莓派上安裝ubuntu

版本 raspberry pi 3 ubuntu 16.04 preinstalled server armhf raspi3.img.xz 4g image,216m compressed 解壓檔案,得到近4g映象檔案 修改密碼 sudo apt get update sudo apt get i...