跳到內容
開源

Installer 指令

查閱 zeabur-installer 的規劃、安裝、健康檢查、加入節點與移除指令。

先用 plan 看設定會建立什麼,再以 root 執行 apply。安裝中斷時,修正原因後用同一份設定重跑 apply,每個步驟會先看現況,只補上缺少或不同的部分。

用網頁介面安裝見在一台伺服器安裝 Zeabur,用設定檔和指令安裝見用設定檔和指令安裝,YAML 欄位見 Installer 設定。已有 Kubernetes 叢集時,走把 Zeabur 裝進既有叢集。

zeabur-installer --version
zeabur-installer --help
zeabur-installer --config /etc/zeabur-installer/config.yaml plan

每個子指令都接受 --config(-c),預設 /etc/zeabur-installer/config.yaml。

sudo zeabur-installer --config /etc/zeabur-installer/config.yaml plan
sudo zeabur-installer --config /etc/zeabur-installer/config.yaml plan --json

plan 讀取設定、Catalog 和主機資訊,列出 RKE2、元件、Namespace、主機檔案、儲存類別、記憶體估算和提醒,接著執行和 apply 相同的主機檢查,不會改動主機。有檢查未通過時,它會說 apply 會停下。加 --json 輸出 JSON,這時不跑主機檢查。

沒有設定檔時,plan 用主機位址產生 sslip.io 測試名稱,搭配 local 憑證模式和 standard preset,讓你先看結果。apply 一定要有設定檔。

apply 依執行當下的設定重新計算安裝內容。plan 之後改了 YAML,apply 就照新的內容安裝。

sudo zeabur-installer --config /etc/zeabur-installer/config.yaml apply
sudo zeabur-installer doctor

需要 Linux、systemd 和 root 權限。installer 先檢查主機、連接埠、磁碟和時間同步,有一項失敗就在寫入任何東西前停下。時鐘沒同步只會警告。server 要用 80、443、6443、9345、10250,worker 只用 80、443、10250。ServiceLB 在每個節點占用 80、443。

建立叢集時依序執行:

  1. 為選定的元件準備主機套件,例如 Longhorn 要用的 iSCSI 和 NFS client。
  2. 寫入 RKE2 設定、CIS 要求的 kernel 參數,以及稽核政策。稽核紀錄只有請求的 metadata,記下每個 Secret 請求,見機密的加密與存取紀錄。
  3. 下載 RKE2 到 /var/lib/rancher/zeabur-installer/downloads,用 installer 釘選的 SHA-256 核對,啟動 rke2-server,等待 API 與節點就緒。
  4. 建立元件的 Namespace、基準 NetworkPolicy 和儲存類別。RKE2 CIS 在 kube-system 的預設政策會擋掉外部連到 ServiceLB 的流量。節點上沒有 Traefik 時,從這個節點進來的請求會到不了 Traefik,所以 installer 另外加上 kube-system/zeabur-installer-servicelb,只讓外部流量進 ServiceLB 的 Pod。
  5. 依 Catalog 順序安裝元件並等待就緒。每個 chart 和 manifest 檔都先下載,跟 Catalog 寫的 SHA-256 不一樣就停下。
  6. zeabur: true 時,先加上 zeabur-system-hosts 准入政策,不讓專案用 Zeabur 和 Zeabur Identity 的網域,見Zeabur 和 Zeabur Identity 的網域。再安裝 Zeabur Identity、讓 API server 信任它、註冊 OAuth client,最後安裝 Zeabur。API server 連 Zeabur Identity 用的憑證由 cert-manager 自動續期,見Zeabur Identity 的內部憑證。
  7. 第一次安裝時印出第一位管理員的設定連結(24 小時內有效、只能用一次),並把安裝紀錄寫到 kube-system/zeabur-installer ConfigMap。

完成後會印出 Zeabur 和 Zeabur Identity 的網址。開啟設定連結、新增通行密鑰,就能登入 Zeabur 看到叢集。local 模式要先讓瀏覽器信任 installer 產生的 CA。

apply 會把 installer 管理的檔案改回它產生的內容。自己的 RKE2 設定寫在 /etc/rancher/rke2/config.yaml.d/90-local.yaml,不要改 installer 產生的 config.yaml。

在伺服器執行:

sudo zeabur-installer gui

在自己的電腦建立 SSH tunnel:

ssh -L 8085:127.0.0.1:8085 root@server.example.com

開啟伺服器印出的完整連結。GUI 預設監聽 127.0.0.1:8085,用 --listen <address:port> 改位址。GUI 寫的是同一份設定檔,按下安裝時執行的也是同一個 apply。每一步的畫面見在一台伺服器安裝 Zeabur。

安裝完成後按 Ctrl-C 關閉 GUI,RKE2 和裝好的服務繼續執行。

sudo zeabur-installer doctor

在建立叢集的 server 上,doctor 檢查 RKE2 unit、API、安裝紀錄裡的元件、預設儲存類別、Zeabur 和 Zeabur Identity 的 Deployment、Zeabur Identity 的內部憑證、節點位址、基準網路政策、etcd 裡的 Secret 有沒有加密,以及 /var/lib/rancher 有沒有加密。它比對的是上次 apply 的紀錄,改過的 YAML 要重跑 apply 才算數。

在加入既有叢集的節點上,它檢查自己的 RKE2 unit、Node 是否就緒、到 server 的連線和延遲、磁碟加密。如果是 server,還會比對 Zeabur Identity 的驗證設定。

結束碼意義
0檢查通過
1有警告
2有故障
3檢查無法執行,例如沒有用 root 執行

指令列打錯時也以 2 結束。要從自己的電腦透過 Kubernetes API 檢查,用 zeaburctl doctor,結束碼的意思相同。

在既有 server 執行:

sudo zeabur-installer node add
sudo zeabur-installer node add --role worker --ttl 30m
sudo zeabur-installer node add --role server --address 10.0.0.5
選項預設與用途
--roleworker,也接受 server
--address預設是這個節點的 InternalIP,新主機用這個位址連到 supervisor
--ttlworker 權杖的有效期,預設 1h,可寫 30m、1h 等,最多 24h

node add 印出新 VM 要用的 join YAML 和指令。新 VM 要和這台在同一家主機商、同一個區域,可用區不同沒關係。worker 用會過期的 bootstrap token。server 用叢集的 server token,不會過期,--ttl 對它沒有作用。輸出內容等同密碼,存到新主機時權限設為 0600。

新主機套用 join 設定後,在既有 server 執行:

sudo zeabur-installer node sync

node sync 讓 installer 建立的基準網路政策放行目前每個節點的流量,也就是每個節點 Pod 網段的第一個位址。新加入的 server 會自己同步。worker 加入後,一定要在 server 執行一次 node sync,在這之前網路政策會擋掉新節點的流量。node add 的輸出也會提醒這一步。網路和儲存的前提見加入節點。

sudo zeabur-installer uninstall zeabur

只移除 Zeabur,RKE2、Zeabur Identity、Catalog 元件和應用程式都保留。uninstall zeabur 也會刪掉 Zeabur 為成員建立的 RoleBinding 和 ClusterRoleBinding。

uninstall identity 會連 Zeabur Identity 一起移除,並清空 API server 對它的信任設定。執行前先依移除 Zeabur準備其他登入方式。叢集有多台 server 時,其他 server 要各自執行一次 sudo zeabur-installer apply 才會停止信任 Zeabur Identity 的權杖,指令會列出這些 server。

在加入的節點上執行 uninstall,它只印出要依序執行的指令:drain、刪除 Node、執行 RKE2 移除腳本、同步網路政策。這些步驟見新增與維護節點。

RKE2 移除後,uninstall --purge 清掉 installer 的下載快取、本機 CA 副本和設定,磁碟區保留。--purge 不能和 zeabur、identity 一起用。要保留叢集,就不要執行 RKE2 移除腳本或 --purge。

設定檔是 use: personal 時,uninstall 不刪東西,只印出移除 KubeSolo 的指令,見自己用:在小機器上安裝。node add 和 node sync 不能用,因為 KubeSolo 只有一個節點。

  • 主機檢查失敗:依輸出釋出連接埠或修正磁碟,再重跑 plan、apply。
  • RKE2 沒啟動:看 sudo journalctl -u rke2-server,worker 看 rke2-agent。
  • 元件卡在 Helm 安裝:doctor 會指出 kube-system 裡的 helm-install-<name> Job,看它的日誌。
  • 新節點就緒但部分系統服務連不到:先在 server 執行 node sync,再看 doctor 的網路政策檢查。

要撤回安裝,依移除流程選擇只移除 Zeabur,或整台測試機一起清掉。刪掉應用程式的 Namespace 不會移除 Zeabur,只會刪掉應用程式。