結論先講
K8s 的 ROI 在「運維自動化」不在「效能」。 我們的壓測甚至顯示 k3s 效能不如 Docker Compose——k3s 吃掉了 1-2 CPU 和 500MB-1GB RAM 做自己的事,留給應用的資源更少。K8s 值得用的前提是:你有 1000+ 用戶、需要自動擴縮、有專人維護 K8s 集群。
壓測數據(回顧 第 22 篇)
| 架構 | 100 VU | 500 VU | 1000 VU |
|---|---|---|---|
| Docker Compose + nginx | 0% 錯誤 | 0% 錯誤 | 0% 錯誤 |
| k3s | 0% 錯誤 | 開始報錯 | 大量報錯 |
為什麼 k3s 更差
k3s 是「最輕量」的 K8s 發行版,但它仍然需要跑:
- kube-apiserver
- etcd(k3s 用 SQLite 替代,但仍佔資源)
- kubelet
- kube-proxy
- CoreDNS
在 4 CPU / 4 GB 的測試環境中,這些組件吃掉了 1-2 CPU 和 500MB-1GB RAM。等於你的應用只剩 2-3 CPU 和 3 GB。
Docker Compose + nginx 幾乎零 overhead——nginx 吃 < 50MB RAM,docker daemon 吃 < 100MB。應用拿到接近全部的 4 CPU / 4 GB。
Docker Compose 能撐多遠
| 架構 | 上限 | 做法 |
|---|---|---|
| 單機 Docker Compose | ~500 人 | 1 台機器跑所有 container |
| Docker Compose + nginx LB(2 台) | ~1000 人 | 2 台機器 + nginx 做負載均衡 |
| Docker Compose + nginx LB(4 台) | ~1000 人(卡 DB) | 需要先擴 DB 連線池 |
2 台 AP 提升 53%(第 22 篇),但 4 台不會更好——瓶頸轉移到 DB 連線池。
1000 人以內,Docker Compose + nginx LB 足夠。
什麼時候上 K8s
上 K8s 的理由(技術面)
| 功能 | Docker Compose | K8s |
|---|---|---|
| 自動擴縮(HPA) | 沒有 | 有 |
| 自動修復(restart failed pod) | 有(restart policy) | 更完善 |
| 滾動更新(zero downtime) | 手動做 | 自動 |
| 服務發現(DNS) | 手動設定 | 自動 |
| 秘密管理(secrets) | .env 檔 | K8s Secrets |
| 資源限制(per pod) | Docker limits | 更精細 |
上 K8s 的理由(組織面)
- 團隊 > 10 人,需要標準化的部署流程
- 有專職 DevOps/SRE
- 需要多環境(dev / staging / production)標準化
- 合規要求(金融、醫療)
不要上 K8s 的理由
- 團隊 < 5 人(沒人維護 K8s)
- UV < 1000(Docker Compose 夠用)
- 沒有 DevOps 背景(K8s 學習曲線 3-6 個月)
- 預算有限(K8s 的 control plane 吃資源 = 多花錢)
如果你在 1000 人邊界
現在: Docker Compose + nginx(單機或 2 台)
成長到 1000 人:
選項 A: Docker Compose + nginx LB(4 台)+ 擴 DB
選項 B: 上 K8s
比較:
A: 簡單、便宜、但手動管 4 台機器
B: 自動化、但要學 K8s、control plane 吃資源
建議: 先做 A,等到需要自動擴縮(流量波動大)再做 B
K8s 的「YAML 地獄」
上了 K8s 之後你會寫的 YAML:
deployment.yaml — 幾個 pod、用什麼 image
service.yaml — 怎麼暴露 port
ingress.yaml — 外部怎麼存取
configmap.yaml — 環境變數
secret.yaml — 密碼
hpa.yaml — 自動擴縮規則
pvc.yaml — 持久化存儲
networkpolicy.yaml — 網路隔離
serviceaccount.yaml — RBAC
每個微服務一套。5 個服務 = 45 個 YAML 檔。
Helm Chart 可以模板化,但又多了一層抽象。 出問題時要 debug 的層次:application → Docker → K8s → Helm → YAML。
這不是在勸退 K8s——只是要意識到複雜度是真實的。
下一篇
Docker Compose 上生產的正確姿勢 — 「Docker Compose 不適合生產環境」是錯誤的觀念。正確配置的 Docker Compose + nginx + 監控 + 備份,在 1000 人以內比 K8s 更穩定、更便宜、更好維護。
本系列文章
完整 68 篇目錄見 系列首頁
← 上一篇:微服務拆分模式:Strangler Fig 漸進式替換 → 下一篇:Docker Compose 上生產的正確姿勢