HomeLab.001 從零搭建K3S和RANCHER 2.6

K3S 和 RANCHER 是什麼?

K3SRANCHER 開發的 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

如果安裝上有問題的話,也歡迎加入 DiscordFacebook 專頁一起討論喔!如果有可以幫忙的,我一定會盡量回答。

安裝完成後,要等一段時間讓 Rancher 運行,之後輸入剛剛設定的網域就可以進入Rancher頁面了

第一次進入Rancher頁面會要求你輸入密碼(預設的密碼是admin),輸入完成後會要求你更改密碼,並同意規範就可以開始使用拉!