DevOps / 基礎設施2026

OVH 雙節點 VPS 基礎設施

雙節點 OVH VPS Kubernetes 環境的全自動化設置工具包,整合 K3s、Tailscale、Cloudflare Tunnel 及完整可觀測性技術棧。

OVH 雙節點 VPS 基礎設施

專案概述

針對兩台 OVH VPS 節點的生產級、全腳本化基礎設施,運行 K3s Kubernetes。VPS-1(主節點)架設 K3s 控制平面、ArgoCD、Prometheus、Grafana、Loki、Traefik Ingress 及 Cloudflared Tunnel。VPS-2(工作節點)運行 K3s Agent、Node Exporter 和 Promtail。資料庫(PostgreSQL 16、MongoDB 8、Redis 7)刻意以 Docker 運行於 K3s 之外,避免 StatefulSet 複雜度。Tailscale 提供節點間 VPN mesh,rclone 備份資料至 OVH S3 和 Google Drive。

技術挑戰與解決方案

安全的節點間網路

OVH 的私有網路(vRack)需要額外設定和費用。需要為兩台 VPS 節點的 K3s 叢集流量建立安全的私有通道。

解決方案:
在兩個節點上安裝 Tailscale,建立加密的 WireGuard mesh 網路。K3s 使用 Tailscale IP 進行控制平面和 Agent 通訊,完全不暴露於公網。

零暴露外部存取

透過公開 NodePort 或 LoadBalancer 暴露 Kubernetes 服務會增加攻擊面,需要在不開放入站防火牆 Port 的情況下實現 HTTPS 存取。

解決方案:
使用 Cloudflare Tunnel(cloudflared)——VPS 主動向 Cloudflare 建立出站連線,Cloudflare 再將流量代理進來。無需開放任何入站 Port,Cloudflare 處理 TLS 終止和 DDoS 防護。

資料庫穩定性與 K3s 分離

在 Kubernetes StatefulSet 中運行有狀態資料庫增加了排程複雜性和節點故障時的資料丟失風險。

解決方案:
將 PostgreSQL、MongoDB 和 Redis 保留在 Docker Compose 中,運行於較穩定的 VPS-1 主節點(K3s 叢集之外)。這樣可隔離資料庫穩定性與 Kubernetes 排程決策,同時讓 K3s Pod 仍可透過 Tailscale IP 存取資料庫。

系統架構

節點間通訊透過 Tailscale(WireGuard VPN mesh,取代 OVH vRack)。外部 HTTPS 透過 Cloudflare Tunnel(零開放入站 Port)。工作負載透過 ArgoCD GitOps 部署至 K3s,Traefik 處理 Ingress 路由。可觀測性:Prometheus + Grafana(指標)、Loki + Promtail(日誌)、Node Exporter(主機指標)。每節點一次性執行編號 Bash 腳本(00–06)完成自動化設置。

學習與心得

設計這套基礎設施讓我學會如何以有限預算組合企業級可靠性模式:用 Tailscale 取代 vRack、Cloudflare Tunnel 取代負載均衡器,以及刻意將有狀態工作負載放在 Kubernetes 之外。結果是一個具韌性、可觀測且成本效益高的自託管平台。

技術棧

容器調度

K3sArgoCDTraefik

網路層

TailscaleCloudflare Tunnel

監控與可觀測性

PrometheusGrafanaNode Exporter

日誌管理

LokiPromtail

資料庫

PostgreSQL 16MongoDB 8Redis 7

備份與儲存

rcloneOVH S3Google Drive

工具

BashDocker