專用伺服器維護伺服器

維護專用伺服器

本文將介紹如何維護您註冊到 Zeabur 的 專用伺服器

💡

如果您是從 Zeabur 購買專用伺服器的,維運的任務是由我們代為執行的。 請開工單告訴我們您想要維護的項目,讓工作人員代為操作。

空間清理

如果您發現主機的磁碟空間不足,可以試試看清理 K3s 在您主機上拉回的 Docker image(通常會自動執行)。

# 檢查目前拉回了哪些 images(這行不用打)
$ sudo k3s crictl images
 
# 移除所有未在使用的 images
$ sudo k3s crictl rmi --prune

有時候 K3s 針對每個容器記錄的 Logs 也會佔用不少空間,您可以試著到 K3s 的 logs 目錄 清理這些 Logs。

更改 DNS Nameservers

預設 Zeabur 專用伺服器會使用 Cloudflare DNS 作為叢集的 DNS Nameservers(中國大陸區域的機器,則是使用 阿里雲公共 DNS)。

如果需要更改叢集使用的 DNS Nameservers(比如改成騰訊雲的 DNSPod Public DNS),可以編輯 /etc/resolv.kubelet.conf,並將其中的 nameserver 改成您想要的 DNS Nameservers。

nameserver 119.29.29.29

更改完後記得重啟 K3s 服務。

$ sudo systemctl restart k3s

停用 Zeabur 服務

如果您擁有專用伺服器,可以關閉所有 Zeabur 服務,將 VPS 用於其他用途,例如執行 Docker Compose 服務。

⚠️

關閉 Zeabur 服務後,您將無法從 Zeabur 儀表板建立專案與服務,且目前在 Zeabur 上執行的服務也會隨之停止。但您仍可管理伺服器設定,例如防火牆規則與重新啟動。請注意,若從 Zeabur 重新安裝伺服器,Zeabur 服務將會重新安裝並啟用。

停用 Zeabur 服務

您也可以直接在 Zeabur 儀表板點擊左側的 SSH 選項,透過瀏覽器連線到伺服器,無需本機終端機:

透過 Zeabur 儀表板進行 SSH 連線

或透過 SSH 連線到您的伺服器後執行:

sudo systemctl disable --now k3s containerd

注意:關閉這些服務會導致所有在這台伺服器上運作的容器與服務停止,請謹慎操作。

重新啟用 Zeabur 服務

若您想讓 Zeabur 重新上線,透過 SSH 連線後執行:

sudo systemctl enable --now k3s containerd

使用 VS Code 遠端開發

你可以使用 VS Code Remote - SSH 連線到你的專用伺服器,在熟悉的 IDE 環境中直接編輯檔案或操作容器。

步驟一:安裝 Remote-SSH 套件

打開 VS Code,在擴充功能商店中安裝 Remote - SSH 套件。

步驟二:設定 SSH 金鑰認證

在本機產生一組 SSH 金鑰對(如果還沒有的話),然後將公鑰加到伺服器上:

# 在本機產生 SSH 金鑰對
$ ssh-keygen -t ed25519
 
# 將公鑰複製到伺服器
$ ssh-copy-id <使用者名>@<伺服器 IP>

如果 ssh-copy-id 不可用,可以手動新增公鑰:

$ cat ~/.ssh/id_ed25519.pub | ssh <使用者名>@<伺服器 IP> "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

步驟三:透過 VS Code 連線

打開 VS Code 的命令面板(Ctrl+Shift+P / Cmd+Shift+P),選擇 Remote-SSH: Connect to Host,輸入 <使用者名稱>@<伺服器 IP> 即可連線。

步驟四:找到服務的檔案存放路徑

連線後會位在伺服器的根目錄。若要找到服務檔案的實際存放位置,需要先找到服務對應的 PVC(Persistent Volume Claim),再找到 PVC 綁定的 PV(Persistent Volume)及其宿主機路徑。

PVC 名稱的格式為 <volume-id>-service-<service-id>,所在的 Namespace 為 environment-<environment-id>

# 列出所有 PVC,找到你的服務的 Volume
$ kubectl get pvc -A
 
# 找到 PVC 綁定的 PV 名稱
$ kubectl get pvc <PVC> -n <Namespace> -o jsonpath='{.spec.volumeName}'
 
# 取得該 PV 在宿主機上的路徑
$ kubectl get pv <PV> -o jsonpath='{.spec.local.path}'

接著在 VS Code 中使用 檔案 → 開啟資料夾 打開這個路徑,就可以開始編輯你的服務檔案了。

步驟五:進入容器的 Shell 環境

若要取得服務容器內的終端機環境(相當於 Zeabur 上的 Web Terminal):

# 列出特定 Namespace 的 Pod
$ kubectl get pods -n <Namespace>
 
# 進入 Pod 的 Shell
$ kubectl exec -it <Pod> -n <Namespace> -- /bin/sh

解除安裝

首先您得先從 Zeabur 移除伺服器及在其上面部署的服務。

移除伺服器

「移除伺服器」的步驟 不會移除 Zeabur 在您伺服器上設定的基礎設施。Zeabur 的基礎設施主要是架設在 K3s 之上,所以解除安裝的步驟 遵照 K3s 的解除安裝步驟即可

$ /usr/local/bin/k3s-uninstall.sh