於樹莓派上執行 kubernetes ( 以 minikube 為例)
在raspberry pi 上簡單建立 kubenertes (k8s)
前言
kubernets ( 有些人稱 k8s )於 樹莓派或是各平台上安裝很容易遇到環境/網路設定各種疑難雜症,所以為了簡化練習 k8s 或是 DevOps 概念驗證,可以使用 minikube 來簡化整個安裝設定流程 ( minikube 的細節說明請看官網 )
以下範例為在 Raspberry Pi 上使用 minikube ( 可以做為 kubernetes 的練習平台)
基本上來說標準桌機的 Ubuntu Linux / Mac 也是相同的安裝方式,只是把 arm 換成 x86
注意: 請先在樹莓派上安裝好以下程式:
- docker : minikube 會在這邊建立 kubernetes
- kubectl / kubeadm : 用於 kubernetes 操作
1. 下載/安裝 minikube
我們可以從 minikube 的 GitHub release 找到已經編譯好的執行檔https://github.com/kubernetes/minikube/releases
因為是要在樹莓派 (Raspberry pi )上執行,所以就下載 linux-arm 版本
此為 1.12.1 版本且 32 位元 為例,如果你的 Raspberry pi 是 64 也可以抓 64 版本使用 (或是 x86 )
https://github.com/kubernetes/minikube/releases/download/v1.12.1/minikube-linux-arm
可以於樹莓派上執行以下指令直接下載
wget https://github.com/kubernetes/minikube/releases/download/v1.12.1/minikube-linux-arm
然後複製到 Raspberry Pi 的 /usr/local/bin 下使用
sudo chmod +x minikube-linux-arm
sudo mv minikube-linux-arm /usr/local/bin/minikube
驗證一下程式可以執行,輸入
minikube version
應該會看到類似下列結果
2. 啟動 minikube
輸入以下指令
sudo minikube start —-driver=none
這邊我們需要特別指定 driver=none, 這樣 minikube 就會用 docker 來當作 driver
( minikube 也支援這各種 VM,但是在樹莓派上最簡單的就是透過 docker,細節請看官網 )
應該會看到成功的啟動,類似以下畫面
這邊說明一下,minikube 常用的三個指令
start : 啟動,並且建立 kubernetes
stop : 停止,可以用 start 繼續
delete : 移除,當有問題或是需要重置時使用
然後我們就按照 minikube 建議的輸入以下指令來設定 kubectl
sudo mv /root/.kube /root/.minikube $HOME
sudo chown -R $USER $HOME/.kube $HOME/.minikube
沒有錯誤我們可以檢查一下 kubectl 設定,使用指令檢查設定檔
kubectl config get-contexts
就會看到成功 ( 另外可以使用 docker ps 會看到很多 container )
3. 測試
接下來我們做一個簡單的 deployment 看看
kubectl create deployment mytest —-image=busybox
如果看到以下錯誤,表示憑證檔案路徑設定有誤
Error in configuration:
* unable to read client-cert /root/.minikube/profiles/minikube/client.crt for minikube due to open /root/.minikube/profiles/minikube/client.crt: permission denied* unable to read client-key /root/.minikube/profiles/minikube/client.key for minikube due to open /root/.minikube/profiles/minikube/client.key: permission denied
* unable to read certificate-authority /root/.minikube/ca.crt for minikube due to open /root/.minikube/ca.crt: permission denied
基本上只要修改一下設定檔,使用 vim 或是文字編輯器
vim ~/.kube/config
將內文原本為 /root/.minikube 全部改成:使用者目錄下 ( 樹莓派預設為 /home/pi/.minikube )
修正後範例如下
apiVersion: v1
clusters:
- cluster:
certificate-authority: /home/pi/.minikube/ca.crt
server: https://localhost:8443
name: minikube
contexts:
- context:
cluster: minikube
user: minikube
name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
user:
client-certificate: /home/pi/.minikube/profiles/minikube/client.crt
client-key: /home/pi/.minikube/profiles/minikube/client.key
再試一次
kubectl create deployment mytest —-image=busybox
就會看到 mytest 建立成功
接下來就和正常使用 kubectl 一樣了