K8s · 入門基礎 · 第 01 課 · · 9min read

Kubernetes 是什麼?為什麼 Docker 不夠用,需要 K8s?

一個容器跑得很順,但十個、一百個怎麼管?這就是 Docker 撐不住、Kubernetes 登場的原因。這篇用最白話的方式講清楚 K8s 解決什麼問題、跟 Docker 是什麼關係,新手第一篇就看這個。

#Kubernetes #入門 #Docker #K8s 是什麼
章節目錄 · 9

先從一個真實場景開始

想像你在一間電商公司上班,你的系統長這樣:

  • 前端網站
  • 後端 API
  • MySQL 資料庫
  • Redis 快取
  • 訊息佇列
一開始用 Docker,每個服務 docker run 一下就好了,幾分鐘搞定。後來流量大了,每個服務要跑 3 份分散流量。再加上測試環境、預備環境,全部加起來可能要 30 個容器

雙十一來了,流量翻五倍。你打開 SSH,準備一台一台機器去 docker run,腦袋已經開始痛了。然後其中一台機器掛了,上面 12 個容器全沒了。你還沒搞清楚怎麼修,老闆問你版本要怎麼更新才不中斷服務

這時候 Docker 一個指令救不了你了。這就是 Kubernetes 存在的理由

Docker Compose 不能幫忙嗎?

可以——但只限一台機器。

容器數量適合的工具為什麼
1~5 個docker run手動跑就夠
5~20 個Docker Compose一份 docker-compose.yml 全部起
跨多台機器 / 上百容器KubernetesCompose 做不到的全部都做得到
Docker Compose 的設計就是「單機多容器管理工具」。跨機器、自動故障恢復、自動擴縮容——這三件事它通通做不到,但生產環境又通通需要。

Kubernetes 解決哪 5 個問題?

K8s(K + 8 個字母 + s = Kubernetes,因為太長了所以縮寫)的核心職責就是這 5 件事:

問題Docker 怎麼處理K8s 怎麼處理
調度:容器該放哪台機器?你自己 SSH 上去跑Scheduler 自動挑空閒的機器
故障恢復:機器掛了上面的容器怎辦?你自己重新部署自動把容器搬到其他健康的機器重建
彈性擴縮:流量來了要加容器手動 docker run 多開一行指令把 3 份擴成 10 份,甚至看 CPU 自動擴
滾動更新:升級版本不能停機自己寫腳本一個一個換內建滾動更新,零停機
服務發現:容器之間怎麼互找?IP 寫死,IP 變了就掛內建 DNS,用名字找
重點:K8s 不是取代 Docker,是「管理一堆 Docker 容器的平台」。Docker 還在,只是現在多了一個老闆叫 K8s。

K8s 是怎麼來的?

不是純學術產物,是 Google 用了 15 年的 Borg 系統「整理重寫」開源出來的。

  • 2003:Google 內部用 Borg 管理數十億容器
  • 2014:Google 把 Borg 的經驗整理成開源版本,取名 Kubernetes(希臘語「舵手」的意思)
  • 2015:捐給 CNCF(Cloud Native Computing Foundation)
  • 2026 年的今天:AWS、Azure、GCP、阿里雲全部支援,已經是業界標準
換句話說,你學 K8s 不是學一個工具,是學一個產業共識

Docker vs K8s:到底差在哪?

最常被問的問題,直接給結論:

Docker 解決「怎麼跑一個容器」,K8s 解決「怎麼跑一堆容器還要它們互相溝通、自動修復、自動擴縮」

兩個不是替代關係,是搭配關係:

Docker:  把應用打包成容器     ── 製造業
K8s:     管理一堆容器在叢集跑   ── 物流業

實務上的工作流程:

  • 開發階段:用 Docker 寫 Dockerfile、build image

  • 部署階段:把 image 推到 registry,寫 K8s YAML 告訴 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
    一句話:只要你公司規模超過 10 個工程師、後端服務超過 5 個,九成機率會用到 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 課,按學習路徑順序排)