跳到內容
開源

自己用:在小機器上安裝

只有自己要用時,用 KubeSolo 在 1.5 GiB 記憶體的機器裝好 Kubernetes 和元件,可以再勾選 Zeabur Builder,再在自己的電腦用 zeaburctl ui 打開 Zeabur。

只有自己要用時,installer 可以改裝 KubeSolo。伺服器上只有 Kubernetes 和元件,不執行 Zeabur 面板和 Zeabur Identity。要用 Zeabur 時,在自己的電腦執行 zeaburctl ui,用伺服器給你的 kubeconfig 連線。

自己用團隊用
KubernetesKubeSoloK3s 或 RKE2
記憶體1.5 GiB 起4 GiB 起
怎麼打開 Zeabur在自己的電腦執行 zeaburctl ui開啟伺服器上的 Zeabur 網址,用通行密鑰登入
成員和權限沒有。拿到 kubeconfig 的人可以控制整個叢集Zeabur Identity 帳號和專案角色
專案之間的網路不隔離。KubeSolo 不執行網路政策用網路政策隔離
節點只有這一台可以再加入節點
元件Ingress 和憑證,可以再勾選 Zeabur Builder(含 zot)Catalog 的全部元件
資料庫有有

自己用的版本預設不裝 Zeabur Builder 和 zot(放建置結果的映像倉庫),所以只能部署現成的容器映像檔。要從 Git 或資料夾建置,安裝時勾選 Zeabur Builder,zot 會一起安裝。這兩個要多用大約 300 MiB 記憶體,機器的記憶體不到 1800 MiB 時,安裝程式不讓你勾選。

自己用的版本也沒有成員和權限。Zeabur Identity 發的登入憑證,要 kube-apiserver 用 --authentication-config 載入設定才會認得,KubeSolo 目前沒有開放這個設定(portainer/kubesolo#231)。所以只能用伺服器給的 kubeconfig 連線,拿到這份 kubeconfig 的人可以控制整個叢集,不適合讓多個人或多個團隊共用。

伺服器回報的記憶體不到 2700 MiB 時,安裝程式只接受自己用。之後要給團隊用,沒辦法直接升級,要重新安裝,伺服器回報的記憶體至少要有:

不裝 Zeabur Builder裝 Zeabur Builder
K3s2700 MiB3900 MiB
RKE23500 MiB4800 MiB

Zeabur Builder 本身要記憶體,還要留空間給一次建置。記憶體不夠時,安裝程式照樣裝成團隊用,但不裝 Zeabur Builder,VictoriaMetrics 和 VictoriaLogs 也一樣。核心為當機傾印(kdump)保留的記憶體不算在回報的記憶體裡,用不到的話可以關掉,安裝程式檢查伺服器時會附上指令。

  • 使用 systemd 的 Linux,架構為 amd64 或 arm64。
  • 具備 root 權限。
  • 記憶體至少 1.5 GiB。
  • /var/lib/kubesolo 至少有 10 GiB 可用空間。
  • TCP 連接埠 80、443、6443、10250、10443 沒有其他程式占用。
  • 沒有安裝 RKE2、K3s、kubeadm、k0s 或 MicroK8s。
  • 沒有安裝或執行 Docker。Docker 預設會丟掉轉送的封包,副本就連不到外面,也申請不到憑證。installer 發現 Docker(執行檔、服務、socket),或防火牆轉送政策是 DROP 時會停下來,請先停止並移除 Docker 再安裝。

自己的電腦要有 zeaburctl,而且連得到伺服器的 TCP 6443。Windows 請在 WSL 裡用 Linux 版的 zeaburctl。

installer 釘選 KubeSolo、helm-controller 和 kubectl 的版本,下載後核對 SHA-256。helm-controller 的映像檔用 digest 指定。安裝元件的 Job 映像檔只能寫標籤,Job 執行完後,installer 會核對 Job 實際用的 digest,不對就停下。

照在一台伺服器安裝 Zeabur 開啟安裝介面。在「檢查伺服器」的「給誰用」選「自己用」,步驟會少掉「連線方式」。

「檢查伺服器」的「給誰用」選了「自己用」,上方只剩四個步驟

伺服器回報的記憶體不到 2700 MiB 時,「團隊用」是灰的,只能選「自己用」。

記憶體只有 1.5 GiB 的伺服器,「團隊用」是灰的,說明這台不夠

先處理未通過的檢查項目。這台伺服器裝了 Docker 時,「Docker」會顯示需要修正,請先停止並移除 Docker,再按「重新檢查」。沒有處理完,到「確認」也不能按「安裝」。

「檢查伺服器」顯示 Docker 未通過,說明要先停止並移除 Docker

在「選擇元件」,Ingress 和憑證是預設的。要從 Git 或資料夾建置,勾選「Zeabur Builder」,zot 會一起安裝。

「選擇元件」勾選了 Zeabur Builder,上方顯示記憶體估算

記憶體不夠時,Zeabur Builder 是灰的,旁邊會寫需要多少。

記憶體 1.5 GiB 的伺服器上,Zeabur Builder 是灰的,旁邊寫著至少要 1,800 MiB

在「確認」核對內容後按「安裝」。

以 root 權限建立 /etc/zeabur-installer/config.yaml:

use: personal

先看安裝步驟,再安裝:

sudo zeabur-installer plan
sudo zeabur-installer apply

要從 Git 或資料夾建置,加上 enable: [builds],zot 會一起安裝。要用資料庫,加上 enable: [databases]。其他欄位見 Installer 設定。

安裝完成後,網頁介面的「叢集已就緒」和終端機都會列出兩行指令。在自己的電腦執行,<伺服器> 換成伺服器位址,<名稱> 是伺服器的主機名稱:

ssh <你>@<伺服器> sudo cat /etc/zeabur-installer/kubeconfig.yaml > ~/.kube/<名稱>.yaml
KUBECONFIG=~/.kube/<名稱>.yaml zeaburctl ui --context <名稱>

「叢集已就緒」列出複製 kubeconfig 和打開 Zeabur 的兩行指令

kubeconfig 裡的 API 位址是伺服器自己選的位址。自己的電腦要用別的位址或網域連線時,修改檔案裡的 server:,並把同一個位址或網域加進設定檔的 host.tlsSan,再執行一次 apply。

裝了 Zeabur Builder 之後,在自己的電腦用同一份 kubeconfig,上傳資料夾建置:

KUBECONFIG=~/.kube/<名稱>.yaml zeaburctl up --context <名稱> --project <專案> --service <服務>

資料夾經由連接埠轉送送進伺服器上的 zot,伺服器執行建置後把結果放回 zot,節點從 zot 拉映像檔。installer 會把 zot 的憑證交給節點的 containerd,並把 zot 的位址和憑證寫進 kube-public 的 ConfigMap zeabur-info,zeaburctl 從那裡讀。沒勾選 Zeabur Builder 時,zeaburctl up 會說叢集沒有 Builder,什麼也不上傳。

安裝完成後,就不用再執行 installer。叢集裡的東西都能用 kubectl 管理:

  • KubeSolo 是 systemd 服務 kubesolo,設定在 /etc/kubesolo/config.yaml,日誌用 journalctl -u kubesolo 查看。
  • 每個元件是 kube-system 裡的一個 HelmChart,由 helm-controller 安裝。用 kubectl get helmcharts -n kube-system 列出,改設定就改 HelmChart。
  • 安裝紀錄在 kube-system 的 ConfigMap zeabur-installer,只是給 doctor 讀的紀錄。

installer 做的事,手動也做得到:照 KubeSolo 的說明安裝 KubeSolo,kubectl apply helm-controller 的 release manifest,再為每個元件建立 HelmChart。手動做時要多改兩個地方,不然 HelmChart 會一直重裝:

  • KubeSolo 的 webhook 會在 Job 的 nodeSelector 加上節點,helm-controller 看到 Job 被改過,就刪掉重建。installer 讓 systemd 在 KubeSolo 每次啟動後執行 /usr/local/libexec/zeabur-kubesolo-webhook,把 Job 從 MutatingWebhookConfiguration webhook.kubesolo.io 的規則拿掉。這個指令稿用 kubectl 等規則出現,並持續監看一分鐘,KubeSolo 重寫規則就再拿掉一次,不看系統日誌。副本和磁碟區還是由同一個 webhook 指定節點。
  • helm-controller release manifest 裡的 klipper-helm 版本太舊,裝完不會標記設定的雜湊值,helm-controller 會一直升級同一個 chart。installer 把 DEFAULT_JOB_IMAGE 換成 k3s 搭配同版 helm-controller 的 rancher/klipper-helm:v0.13.3-build20261021。
sudo zeabur-installer doctor

這會檢查 KubeSolo、每個元件和 Catalog 為元件提供的健康檢查,以及預設儲存類別,也會提醒這台機器沒有隔離。裝了 Zeabur Builder 時,還會檢查 Zeabur Builder 是否在執行,以及 containerd 信任的是不是 zot 現在用的憑證。結束碼和團隊用的一樣,見檢查安裝結果。

sudo zeabur-installer uninstall 不會刪除任何東西,只印出移除指令。要連應用程式和磁碟區一起刪掉,依序執行:

sudo systemctl disable --now kubesolo
sudo rm -f /etc/systemd/system/kubesolo.service /usr/local/bin/kubesolo /usr/local/libexec/zeabur-kubesolo-webhook /etc/apparmor.d/cri-containerd.apparmor.d
sudo systemctl daemon-reload
sudo reboot

停掉服務後,容器和掛載點還在,要重新開機才會清掉。開機後再刪掉資料:

sudo rm -rf /var/lib/kubesolo /etc/kubesolo /var/lib/zeabur-installer /etc/zeabur-installer