iT邦幫忙

2026 iThome 鐵人賽

DAY 2
0
Kubernetes

從零到 CKA:30 天掌握 Kubernetes 核心觀念與實作系列 第 2

Day 02|Pod 與 Deployment — 從「一次性容器」到「自動維運」

  • 分享至 

  • xImage
  •  

前言

上一篇我們用 kubeadm 把叢集建起來了,今天終於可以開始部署東西了!

在 Kubernetes 的世界裡,Pod 是最小的部署單位,而 Deployment 則是幫你管理 Pod 的大管家。這篇我們會從建立一個最簡單的 Pod 開始,親眼看看它的「脆弱」,再帶出 Deployment 為什麼不可或缺。

以下操作皆在 master 節點 執行。


一、先來跑一個 Pod

最快的方式,就是用 kubectl run 直接建一個 Pod:

kubectl run nginx-pod --image=nginx

確認一下有沒有跑起來:

kubectl get pods -o wide

輸出大概長這樣:

https://ithelp.ithome.com.tw/upload/images/20260804/20181928nylTxcaQrJ.png

可以看到 Pod 被排程到 node1 上,拿到了一個 cluster 內部的 IP 192.168.166.130,狀態是 Running,一切正常。

到這裡,你可能覺得:「就這樣?也太簡單了吧。」

沒錯,建立 Pod 本身很簡單,但問題在後面。


二、Pod 的問題開始浮現

現在我們來做一件事 —— 把它刪掉。

kubectl delete pod nginx-pod

再看一次:

kubectl get pods

https://ithelp.ithome.com.tw/upload/images/20260804/20181928vZAoZbOv6V.png

它消失了,而且 不會回來。

這就是 Pod 的本質特性:

  • 👉 Pod 本身沒有自我修復能力 — 掛了就是掛了,不會自動重啟一個新的
  • 👉 Pod 不負責維持副本數 — 你刪了一個,不會自動補回來
  • 👉 Pod 不適合直接用在正式環境 — 沒有滾動更新、沒有版本管理

如果今天跑的是你們公司的服務,Pod 一掛,服務就斷了,這在 Production 是不能接受的。

💡 你可以把 Pod 想像成「一次性的工人」,幹完活就走了,沒人管它死活。


三、Deployment 登場

為了解決上面的問題,Kubernetes 提供了 Deployment 這個資源。

Deployment 做的事情很單純但很重要:

功能 說明
維持副本數 Deployment 會持續確保實際運行的 Pod 數量符合設定的副本數;當 Pod 異常終止或被刪除時,系統會自動建立新的 Pod。
滾動更新 更新容器映像版本時,Deployment 會逐步建立新版本 Pod,並依序停止舊版本 Pod,以降低更新期間的服務中斷風險。
版本回滾 當新版本發生異常時,可透過指令將 Deployment 回復至先前的版本。
自我修復 當 Pod 異常終止、遭到刪除或節點故障時,Deployment 會依照設定自動重新建立 Pod。

簡單來說,Deployment = Pod + 自動管理

建立一個 Deployment

kubectl create deployment nginx-deploy --image=nginx --replicas=2

這行指令會建立一個名為 nginx-deploy 的 Deployment,跑 2 個 nginx Pod。

確認狀態:

kubectl get deployments
kubectl get pods

https://ithelp.ithome.com.tw/upload/images/20260804/201819280RUL5Rceq3.png

可以看到 Deployment 幫我們建了 2 個 Pod,名稱是 Deployment名稱 + ReplicaSet雜湊 + Pod雜湊


四、來驗證「自我修復」

這是 Deployment 最讓人安心的能力。我們手動刪掉其中一個 Pod:

kubectl delete pod <你的pod name>

馬上再看:

kubectl get pods

https://ithelp.ithome.com.tw/upload/images/20260804/20181928qwjNPMZIKf.png

你會發現 Pod 數量還是 2 個!Deployment 偵測到少了一個 Pod,立刻補了一個新的上來。

💡 這就是 Deployment 背後的 ReplicaSet 在運作 — 它會持續監控實際 Pod 數量,確保與你設定的 replicas 一致。


五、擴縮容(Scaling)

如需增加副本數,只需執行以下指令:

kubectl scale deployment nginx-deploy --replicas=5
kubectl get pods

https://ithelp.ithome.com.tw/upload/images/20260804/20181928BH1oHCUCdk.png

瞬間就會看到 5 個 Pod 在跑。反過來縮減也一樣:

kubectl scale deployment nginx-deploy --replicas=1

https://ithelp.ithome.com.tw/upload/images/20260804/20181928LcqRQiJn49.png

多餘的 Pod 會被依序終止,只留下 1 個。


小結

今天我們學到了兩個核心概念:

Pod Deployment
定位 最小部署單位 Pod 的管理層
自我修復
維持副本數
滾動更新

總結:

在 Kubernetes 裡,你幾乎不會單獨建 Pod,而是透過 Deployment 來管理它。

今天我們用 kubectl scale 手動調整了副本數,但在真實環境中,流量是動態的,不可能隨時盯著手動調。明天我們會介紹 HPA(Horizontal Pod Autoscaler),讓 Kubernetes 根據 CPU、記憶體等指標自動幫你擴縮容。敬請期待!


上一篇
Day 01|使用 kubeadm 建立 Kubernetes 叢集
系列文
從零到 CKA:30 天掌握 Kubernetes 核心觀念與實作2
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言