K3S 和 RANCHER 是什麼?
K3S 是 RANCHER 開發的 Kubernetes(K8S) 的 Lite 版本,非常適合安裝在樹莓派或是迷你電腦這類型的硬體上,而 RANCHER 是一套集中管理 Kubernetes 的 UI 介面。 2.6版本上算是一個大升級。那 K3S 是不是 Cluster? 當然是的。Kubernetes 基本上我的理解就是叢集電腦 Cluster,每個電腦是一個 Node,將多個電腦連結起來形成一個叢集 Cluster,之後每個服務或是軟體存在於一個 Pod 容器,Kubernetes 就是負責把 Pod 容器自動分配到各個電腦 NODE 進行運行處理,並且可以在不同的電腦同時執行同樣的任務,達到分流 LoadBlance 的效果,搭配 Rancher 服用效果更加強化,也更方便的在 WEB UI 進行多 Cluster 的管理。目前雲端運算已將 Kubernetes 作為基本搭配環境。
準備的材料
- Raspberry Pi 4 - 4GB以上(或是任何電腦有4GB以上的RAM)
- 16GB 以上的記憶卡 (或其他格式的系統儲存空間)
- ubuntu 20.04
- 能上網的環境
- SSH (Putty or anything)
- 固定IP 或是 DDNS
- Domain 網域 (對外用)
Ubuntu 20.04 Server 安裝
首先要準備樹莓派的作業系統,這邊我選用的是 Ubuntu 20.04 Server ,是目前我覺得最簡易安裝的。不需要額外設定IP TABLE等等。
在官網下載好樹莓派專用的 Ubuntu 後,使用 Etcher 之類的軟體燒錄SD卡中。燒錄完成後,插入SD卡在樹莓派中,並連上網路線、電源線開機。
使用SSH 指令登入樹莓派 (windows 使用 Putty)
ssh ubuntu@ubuntu
/// 第二個ubuntu也可以是樹莓派的IP 如:192.168.1.38 ///
如果出現視窗,輸入YES。
這邊會要求你輸入密碼(預設密碼是ubuntu)
之後系統會要求你改密碼,Current Passwrod 這邊再輸入一次 ubuntu
New Password 是你想要使用的新密碼,輸入完後再輸入一次。
完成後,會自動斷線,要使用新密碼重新 SSH 登入。
登入後,進行系統的更新:
sudo apt update & sudo apt upgrade -y
完成更新後,輸入:
sudo reboot
重新開機就完成ubuntu系統的更新了。
安裝 DOCKER 以及 K3S
在開始之前,樹莓派還需要一個額外的設定,必須修改/boot/firmware/cmdline.txt
#首先進入ROOT
sudo su -
nano /boot/firmware/cmdline.txt
#在最尾端加上
cgroup_memory=1 cgroup_enable=memory
#存檔後重開機
sudo reboot
這邊我們必須安裝 RANCHER 支援的 DOCKER 版本,所以到 RANCHER 官網找到安裝的指令:
curl https://releases.rancher.com/install-docker/20.10.sh | sh
安裝完成後,如果要在非sudo或root底下使用,就必須再多一兩個步驟。
接下來到 K3S 官網,同樣可以找到安裝的指令:
curl -sfL https://get.k3s.io | sh -
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml #將這一行加到 /etc/profile 的最後
source /etc/profile
就這麼簡單,基本上你的樹莓派已經是一台K3S Server了! 接下來我們要安裝 Rancher 2.6
之前有幾個動作必須先完成。目前Rancher還沒有正式支援 Arm64 的架構(*已開放支援的樣子),所以這邊我是將 Rancher 安裝在我的小電腦 HP t620 Plus 上面,樹莓派則是 worker Node 加入 Cluster 負責運行服務 Pod。 以下部分只需要運行在要安裝 Rancher 的主機上,樹莓派不需要運行的喔!
Helm Installation
sudo snap install helm --classic
helm repo add rancher-latest https://releases.rancher.com/server-charts/latest
helm repo update
cert-manager & Rancher Installation
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.5.1 \
--set installCRDs=true
kubectl get pods --namespace cert-manager
helm install rancher rancher-latest/rancher \
--namespace cattle-system \
--set hostname=example.com \ #要用的網域
--set bootstrapPassword=admin \ #預設的密碼
--set ingress.tls.source=letsEncrypt \
--set letsEncrypt.email=example@gmail.com #使用的信箱
kubectl -n cattle-system rollout status deploy/rancher
如果安裝上有問題的話,也歡迎加入 Discord 跟 Facebook 專頁一起討論喔!如果有可以幫忙的,我一定會盡量回答。
安裝完成後,要等一段時間讓 Rancher 運行,之後輸入剛剛設定的網域就可以進入Rancher頁面了
第一次進入Rancher頁面會要求你輸入密碼(預設的密碼是admin),輸入完成後會要求你更改密碼,並同意規範就可以開始使用拉!