chundev
日期:2026-05-08 情境:客戶機房交付 K3s 叢集前的 IP 需求清單
跟客戶要 IP 時,「4 台 K3s 節點 = 4 個 IP」是常見低估。實際上至少要再加:1 個 Ingress VIP(對外入口)、1 個 NAS / 共用儲存、1 個管理跳板,必要時再加 1 個 control-plane VIP(HA 用)和每台機器的 BMC IP。一個 4 節點叢集典型佔用 6–11 個 IP,不是 4 個。
K3s 跟標準 kubeadm 不同,server/agent 角色設計很彈性 — control-plane 可以同時跑 workload,所以工程師常以為「節點數就是 IP 數」。但部署到客戶機房時,IP 規劃要在裝機前就確定(防火牆、DNS、憑證),低估 IP 會讓上線延期一週。
K3s 文件用的詞跟 kubeadm 不一樣,先對齊:
| K3s 用語 | kubeadm 等價 | 跑什麼 |
|---|---|---|
| Server node | Control-plane node | API server、scheduler、controller-manager、etcd(如果用 embedded etcd) |
| Agent node | Worker node | 只跑 workload pods |
| Server + workloads | Control-plane + worker(taint 移除) | 兩者都跑 — K3s 預設行為 |
關鍵差異:K3s 的 server node 預設沒有 NoSchedule taint,會直接接受一般 pod 排程。這代表 3 台 server node 同時就是 3 台 worker,省去獨立 control-plane 機器的成本。
每台實體機 / VM 一個 internal IP,這部分大家都會算。
| 拓撲 | 節點數 | 適合場景 |
|---|---|---|
| 單 server(dev / 邊緣) | 1 | POC、邊緣裝置 |
| 3 server + N agent | 3+N | 生產 HA 推薦(embedded etcd quorum) |
| 1 server + N agent | 1+N | 預算受限、可容忍 control-plane 單點 |
為什麼 HA 要 3 個 server? Embedded etcd 用 Raft 共識,需要 odd number 維持 quorum:quorum = (n/2)+1。3 台 server 容忍 1 台壞掉;5 台容忍 2 台。2 台 server 不會更穩 — 反而失去 quorum,整個 cluster 卡死。
這是最常被忽略的一個 IP。
K3s 預設裝 Traefik + ServiceLB(Klipper),會在每個節點開 80/443 host port 收 traffic。但這代表:
正確做法是規劃一個專屬的 VIP:
| 方案 | 工具 | 額外 IP |
|---|---|---|
| Cluster 內浮動 VIP | kube-vip / MetalLB | +1(從 LAN 撥一段給它) |
| 外部硬體 LB | F5、A10、雲廠商 LB | +1(LB 對外 IP) |
| DNS round-robin | 不推薦 | 0(但有 failover 問題) |
→ 所有對外 hostname(app.example.com、grafana.example.com、kibana.example.com)都 CNAME 到這個 VIP,由 Ingress 依 Host header 分流。1 個 VIP 服務 N 個應用。
如果做 3 個 server node 的 HA,kubectl 和 agent 連 API server 時要連哪個 server IP?
→ HA 部署 +1 個 IP,單 server 可省。
CSI driver 連的儲存伺服器 IP。如果用:
→ 多數地端部署 +1 個 IP。
「ctl 機」常被誤解為叢集內的角色,但實務上指的是叢集外跑 kubectl 和 deploy script 的機器。
| 形態 | 是否需要 IP | 說明 |
|---|---|---|
| 工程師 laptop(VPN) | 0(已有) | dev / staging 常見 |
| 機房內 VM | +1 | 客戶資安要求常見 — 不允許工程師直連節點,必須經跳板 |
| CI runner | +1(如果要在內網) | Self-hosted runner 跑部署 |
→ 客戶機房交付通常 +1 個 IP。
每台實體機的帶外管理 IP,跟 OS 跑的 IP 是不同網卡。客戶機房通常會要求所有實體機都接 BMC 網段。
→ +N 個 IP(每台實體機一個)。
3 × Server (control-plane + worker) → 3 IP
1 × Agent (worker only) → 1 IP
1 × Ingress VIP → 1 IP
1 × Control-plane VIP → 1 IP
1 × NAS → 1 IP
1 × 跳板 VM → 1 IP
4 × BMC → 4 IP
─────────────────────────────────────────
總計 → 12 IP
1 × Server (control-plane + worker) → 1 IP
3 × Agent → 3 IP
1 × Ingress VIP → 1 IP
1 × NAS → 1 IP
1 × 跳板 → 1 IP
─────────────────────────────────────────
總計 → 7 IP
(不含 BMC)
1 × Single server → 1 IP
(用 ServiceLB 直接吃節點 80/443)
─────────────────────────────────────────
總計 → 1 IP
--node-ip / --node-external-ip 等網路 flag 用途