先從一個真實場景開始
想像你在一間電商公司上班,你的系統長這樣:
- 前端網站
- 後端 API
- MySQL 資料庫
- Redis 快取
- 訊息佇列
docker run 一下就好了,幾分鐘搞定。後來流量大了,每個服務要跑 3 份分散流量。再加上測試環境、預備環境,全部加起來可能要 30 個容器。
雙十一來了,流量翻五倍。你打開 SSH,準備一台一台機器去 docker run,腦袋已經開始痛了。然後其中一台機器掛了,上面 12 個容器全沒了。你還沒搞清楚怎麼修,老闆問你版本要怎麼更新才不中斷服務。
這時候 Docker 一個指令救不了你了。這就是 Kubernetes 存在的理由。
Docker Compose 不能幫忙嗎?
可以——但只限一台機器。
| 容器數量 | 適合的工具 | 為什麼 |
|---|---|---|
| 1~5 個 | docker run | 手動跑就夠 |
| 5~20 個 | Docker Compose | 一份 docker-compose.yml 全部起 |
| 跨多台機器 / 上百容器 | Kubernetes | Compose 做不到的全部都做得到 |
Kubernetes 解決哪 5 個問題?
K8s(K + 8 個字母 + s = Kubernetes,因為太長了所以縮寫)的核心職責就是這 5 件事:
| 問題 | Docker 怎麼處理 | K8s 怎麼處理 |
|---|---|---|
| 調度:容器該放哪台機器? | 你自己 SSH 上去跑 | Scheduler 自動挑空閒的機器 |
| 故障恢復:機器掛了上面的容器怎辦? | 你自己重新部署 | 自動把容器搬到其他健康的機器重建 |
| 彈性擴縮:流量來了要加容器 | 手動 docker run 多開 | 一行指令把 3 份擴成 10 份,甚至看 CPU 自動擴 |
| 滾動更新:升級版本不能停機 | 自己寫腳本一個一個換 | 內建滾動更新,零停機 |
| 服務發現:容器之間怎麼互找? | IP 寫死,IP 變了就掛 | 內建 DNS,用名字找 |
K8s 是怎麼來的?
不是純學術產物,是 Google 用了 15 年的 Borg 系統「整理重寫」開源出來的。
- 2003:Google 內部用 Borg 管理數十億容器
- 2014:Google 把 Borg 的經驗整理成開源版本,取名 Kubernetes(希臘語「舵手」的意思)
- 2015:捐給 CNCF(Cloud Native Computing Foundation)
- 2026 年的今天:AWS、Azure、GCP、阿里雲全部支援,已經是業界標準
Docker vs K8s:到底差在哪?
最常被問的問題,直接給結論:
Docker 解決「怎麼跑一個容器」,K8s 解決「怎麼跑一堆容器還要它們互相溝通、自動修復、自動擴縮」。
兩個不是替代關係,是搭配關係:
Docker: 把應用打包成容器 ── 製造業
K8s: 管理一堆容器在叢集跑 ── 物流業
實務上的工作流程:
如果你還沒用過 Docker,先把 Docker 學會再來 K8s。沒有 Docker 基礎直接學 K8s 會很痛,因為 K8s 的最小單位 Pod 就是「容器的延伸」,不懂容器看 Pod 會卡。
你會在哪些地方遇到 K8s?
- 雲端服務:AWS EKS、GCP GKE、Azure AKS,都是託管 K8s
- 自架伺服器:用 kubeadm、k3s、k3d、minikube 自己裝
- 開發機:用 minikube 或 k3d 在本機跑「迷你 K8s」練習
- CI/CD:GitLab Runner、GitHub Actions 的執行環境很多就是 K8s
學 K8s 真的有那麼難嗎?
老實講——前 3 天很痛,過了第 4 天就會覺得「啊就這樣」。
K8s 的痛點不是抽象,是「概念多」:Pod、Deployment、Service、Ingress、ConfigMap、Secret、Volume、StatefulSet... 一口氣丟給你會爆。
但這些概念有清楚的因果鏈——每一個都是「上一個解決不了的問題」才出現的:
Pod ← 容器要包一層
Service ← Pod IP 會變,要穩定的入口
Ingress ← Service 網址醜,要域名
ConfigMap ← 設定不能寫死在 image 裡
Secret ← 密碼不能明文
Volume ← Pod 重啟資料就消失
Deployment ← Pod 自己掛了不會自動補
StatefulSet← DB 這種有狀態的服務需要固定身份
順著因果鏈學,就不會亂。這也是這個系列的鋪陳方式——從第 1 篇到第 40 篇,每一篇都是上一篇沒解決的問題引出來的。
重點整理
- Docker 撐不住的場景:跨機器、故障恢復、彈性擴縮容、滾動更新、服務發現——這 5 件事 Docker Compose 一個都不會
- K8s 是 Google Borg 的開源版,現在是業界標準
- Docker 跟 K8s 不是二選一,是上下游搭配
- K8s 看起來概念多,但全部都有因果關係——順著學就不會迷路
下一步
如果你還沒用過 Docker,先去學 Docker。如果 Docker 已經 OK 了,下一篇我們會用一張圖把 Docker 跟 K8s 的差別 講得更清楚,讓你回家可以用 30 秒跟同事解釋這兩個東西的關係。
📅 下一篇(2026-04-29 已上線):Docker 和 Kubernetes 差在哪?一張圖看懂兩者關係
用最簡單的比喻:Docker 把應用裝箱、K8s 是貨運公司,兩個一起用才完整。
📚 完整系列總覽:K8s 系列教學首頁(共 40 課,按學習路徑順序排)