在 Raspberry Pi 安裝 K8s

Jo-Yu Liao
6 min readMay 11, 2020

適用讀者:對 K8s 有基礎了解、想要在 Raspberry Pi 安裝 K8s。

image source: google

本篇安裝的 Raspbian image 版本為:

Image with desktop and recommended software based on Debian BusterVersion:February 2020
Release date:2020–02–13
Kernel version:4.19
Size:2530 MB

如果是全新的 Raspberry ,可以先下載 Raspbian image,然後依照這篇安裝 Raspbian

都好了後需要先 ssh 到 Raspberry Pi 將權限改為 root:

sudo su

添加加密密鑰:

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

將 Repository 添加到 Repository 列表:

echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" \ >> /etc/apt/sources.list.d/kubernetes.list

升級 apt 後就可以安裝囉!
指令說明:

  1. apt update: 依據軟體套件資料庫 /etc/apt/sources.list 更新軟體套件記錄。
  2. apt upgrade:指的是根據套件記錄更新軟體套件。
  3. apt-mark:加上 hold 選項,後面跟一個或多個套件名稱就可以把它們設定為停止自動更新。
apt update
apt upgrade
apt install -y kubelet kubeadm kubectl kubernetes-cni
sudo apt-mark hold kubelet kubeadm kubectl

接下來要設置 Cluster,如果打算用 Docker 但還沒有安裝可以參考:https://phoenixnap.com/kb/docker-on-raspberry-pi 安裝 Docker。

設置 Cluster

kubeadm init --pod-network-cidr 10.244.0.0/16 --apiserver-advertise-address <你的靜態 IP>

如果遇到以下問題:

[ERROR Swap]: running with swap on is not supported. Please disable swap

可以參考這篇 issue 解決。

這部分會需要幾分鐘的時間,之後就會產生讓其他 node 加入 cluster 的命令:

kubeadm join <ip:port> --token <token>

然後再登入到其他 node 執行上述命令,然後執行:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

如果是 root 用戶則執行下面的命令:

export KUBECONFIG=/etc/kubernetes/admin.conf

然後執行下面的命令就可以查看 cluster 囉!

  1. root 用戶:
kubectl get nodes

2. 非 root 用戶:

sudo kubectl get nodes --kubeconfig=/etc/kubernetes/admin.conf
kubectl get nodes

如果遇到下面的問題:

The connection to the server <ip>:6443 was refused - did you specify the right host or port?

可以執行下面指令看看再重新 get nodes,更多資訊可參考這篇

sudo -i
swapoff -a
exit
strace -eopenat kubectl version

關於 token

生成 token 後可以用下面指令查看 token:

kubeadm token ls
token list

token 默認的 TTL 是 24 小時,如果過期的話,可以用以下指令重新生成:

kubeadm token create

--

--