2026 年 Kubernetes 入門:容器編排基礎

modern%20workspace%20with%20laptop%2C%20smartphone...
發表時間:2026 年 09 月 17 日 | 更新日期:2026 年 09 月 17 日 | 編輯:雅寶社區編輯團隊
2026 年 Kubernetes 入門:容器編排基礎 - 雅寶社區 · 頂客論壇

  • 服務網格(Service Mesh):如 Istio、Linkerd,處理服務間的通訊、加密與可觀測性。
  • GitOps 工具:如 Argo CD、Flux,讓叢集狀態由 Git 倉庫驅動。
  • 平台工程(Platform Engineering):企業內部打造開發者自助平台,K8s 是底層骨幹。
  • AI/ML 工作負載:Kubeflow、KServe、vLLM 等,把 GPU 排程交給 K8s 管理。
  • 邊緣運算:K3s、MicroK8s 等輕量發行版,讓 K8s 跑在資源有限的裝置上。
  • 換句話說,學 K8s 不只是學一個軟體,而是學一套「如何管理現代分散式系統」的思維方式。這也是為什麼即使你未來不一定直接操作 K8s,理解它的概念仍然非常有價值。

    二、容器編排的核心概念:先把地基打好

    在進入 K8s 的具體元件之前,我們先把幾個最根本的概念講清楚。這一段如果跳過,後面很容易變成「背名詞」而不是「理解系統」。

    2-1 容器與虛擬機的差異

    很多人會把容器和虛擬機(VM)混為一談,但它們的隔離層級完全不同。虛擬機是透過 Hypervisor 模擬出完整的硬體,每台 VM 都有自己的作業系統核心;容器則是直接共用宿主機的核心,只隔離行程、檔案系統與網路。

    這帶來幾個關鍵差異:

  • 啟動速度:容器通常在秒級甚至毫秒級啟動,VM 則需要數十秒到數分鐘。
  • 資源佔用:容器映像檔小、記憶體開銷低,同一台機器能跑更多容器。

  • 隔離強度:VM 的隔離較強,容器則依賴 Linux 的 Namespace 與 Cgroup,隔離較弱但已足夠應付多數場景。
  • 可攜性:容器映像檔可以跨環境一致執行,這是它最大的優勢。

    理解這一點很重要,因為 K8s 管理的物件就是容器,而不是 VM。它假設你的應用程式已經被包成映像檔,並且可以透過標準的容器執行環境(如 containerd、CRI-O)啟動。

    2-2 什麼是容器編排?

    「編排」這個詞聽起來很抽象,但其實它的工作可以拆成幾個具體面向:

    排程(Scheduling):決定哪個容器要跑在哪一台機器上。

  • 自我修復(Self-healing):容器掛掉時自動重啟,節點失效時把工作搬到別台機器。
  • 水平擴縮(Scaling):依照負載自動增加或減少容器數量。

  • 服務發現與負載平衡(Service Discovery & Load Balancing):讓容器之間能互相找到,並分散流量。
  • 滾動更新與回復(Rolling Update & Rollback):安全地部署新版本,出問題時快速退回。
  • 設定與機密管理(Configuration & Secrets):把環境相關的設定從映像檔中抽離。
  • Kubernetes 把這些能力都包成 API 物件,你只要用 YAML 描述「你要什麼」,它就會想辦法幫你達成。這種模式稱為「宣告式(Declarative)」管理。

    2-3 Kubernetes 的宣告式模型

    傳統的指令式(Imperative)做法是:「先啟動三個容器,然後幫我設定負載平衡,然後⋯⋯」每一步都要你自己下指令。宣告式則是:「我要這個應用程式永遠維持三個副本,並且可以透過某個位址被存取。」你只描述結果,不描述過程。

    K8s 內部的「控制迴圈(Control Loop)」會不斷比對「目前狀態」與「期望狀態」,一旦發現落差,就採取行動修正。例如你宣告要三個副本,結果其中一個掛了,K8s 就會自動補上一個新的。這個機制是 K8s 自我修復能力的核心,也是它與傳統部署工具最大的差別。

    三、Kubernetes 架構拆解:控制平面與工作節點

    一個 K8s 叢集(Cluster)由兩大部分組成:控制平面(Control Plane)與工作節點(Worker Node)。控制平面負責「做決定」,工作節點負責「跑容器」。以下逐一說明。

    3-1 控制平面元件

    控制平面是大腦,通常由多台機器組成以達到高可用。它包含四個主要元件:

  • kube-apiserver:整個叢集的唯一入口。所有指令、所有元件之間的溝通,都必須經過它。它負責驗證請求、處理 REST API,並把狀態寫入 etcd。你可以把它想成叢集的「櫃檯」。
  • etcd:一個高可用的鍵值資料庫,儲存整個叢集的所有狀態。它是 K8s 的唯一真實來源(Source of Truth),因此備份 etcd 是維運上最重要的事情之一。
  • kube-scheduler:負責決定新的 Pod 要放在哪個節點上。它會考慮資源需求、親和性規則、汙點與容忍度等條件,選出最合適的節點。
  • kube-controller-manager:執行各種控制器,每個控制器都是一個控制迴圈。例如 ReplicaSet 控制器確保副本數量正確、Node 控制器處理節點失效、Job 控制器管理批次任務等。
  • 在雲端託管服務(如 GKE、EKS、AKS)中,控制平面通常由雲廠商管理,你不需要自己維護。但理解這些元件的作用,對於除錯與架構設計仍然非常重要。

    3-2 工作節點元件

    工作節點是實際執行工作負載的地方,每個節點上都有以下元件:

  • kubelet:節點上的代理人,負責與 API Server 溝通,確保該節點上的 Pod 依照規格執行。它會向控制平面回報節點與 Pod 的狀態。
  • kube-proxy:負責實作 Service 的網路規則,讓流量能正確轉發到對應的 Pod。在新版 K8s 中,許多環境已改用 eBPF 為基礎的替代方案(如 Cilium),但 kube-proxy 仍是傳統且常見的實作。
  • 容器執行環境(Container Runtime):實際負責啟動與管理容器的軟體,例如 containerd 或 CRI-O。早期常用的 Docker 已被移除,K8s 現在透過 CRI(Container Runtime Interface)與執行環境溝通。
  • 3-3 一個 Pod 誕生的完整流程

    為了讓你更有畫面感,我們用一個實際情境來串起整個流程:假設你下了一個指令,要部署一個有三個副本的應用程式。

  • 你的 kubectl apply 指令把 YAML 送到 kube-apiserver。
  • API Server 驗證請求、檢查權限,並把物件寫入 etcd。

  • Deployment 控制器發現有一個新的 Deployment,於是建立對應的 ReplicaSet。
  • ReplicaSet 控制器發現期望副本數是 3,但目前是 0,於是建立三個 Pod 物件。
  • kube-scheduler 發現有三個 Pod 還沒有指定節點,於是根據資源與規則,為它們各選一個節點。
  • 被選中的節點上的 kubelet 收到通知,透過容器執行環境把容器啟動起來。
  • kubelet 把 Pod 的狀態回報給 API Server,整個過程完成。

    你會發現,整個過程沒有任何一個元件是「全知全能」的,而是靠著多個控制器各司其職、透過 API Server 溝通。這種鬆散耦合的設計,正是 K8s 能夠規模化與高可用的關鍵。

    四、最重要的資源物件:Pod、Deployment、Service

    K8s 的 API 物件非常多,但對初學者來說,先把以下幾類搞懂,就足以應付八成以上的日常操作。

    4-1 Pod:最小部署單位

    Pod 是 K8s 中最小的可部署單位,一個 Pod 可以包含一個或多個容器。這些容器共享網路命名空間(同一個 IP 與 Port 空間)與儲存卷,因此非常適合作為「緊密協作」的單元,例如主應用程式加上一個 sidecar 代理。

    不過在實務上,我們很少直接建立 Pod,因為單獨的 Pod 沒有自我修復能力——它掛掉就沒了。我們通常會透過 Deployment 這類上層物件來管理 Pod。

    一個最簡單的 Pod 定義長這樣:

    apiVersion: v1

    kind: Pod

    metadata:

    name: demo-pod

    labels:

    app: demo

    spec:

    containers:

    • name: web

    image: nginx:1.27

    ports:

    • containerPort: 80

    4-2 Deployment 與 ReplicaSet

    Deployment 是管理無狀態應用的標準方式。它幫你處理三件事:副本數量管理、滾動更新、版本回復。當你建立一個 Deployment,它會自動建立一個 ReplicaSet,再由 ReplicaSet 建立 Pod。

    這種「Deployment → ReplicaSet → Pod」的階層關係,讓滾動更新變得非常優雅:更新時,Deployment 會建立一個新的 ReplicaSet,逐步增加新 Pod 的數量、減少舊 Pod 的數量,直到完全替換。如果新版本出問題,只要一條指令就能退回舊的 ReplicaSet。

    apiVersion: apps/v1

    kind: Deployment

    metadata:

    name: web-demo

    spec:

    replicas: 3

    selector:

    matchLabels:

    app: web-demo

    template:

    metadata:

    labels:

    app: web-demo

    spec:

    containers:

    • name: web

    image: nginx:1.27

    ports:

    • containerPort: 80

    把這個 YAML 套用到叢集後,你就會有三個 Nginx Pod 在跑。如果其中一個掛掉,ReplicaSet 控制器會立刻補上一個新的。

    4-3 Service 與 Ingress

    Pod 的 IP 是短暫的,每次重建都會改變。因此我們需要一個穩定的存取入口,這就是 Service 的用途。Service 透過標籤選擇器(Label Selector)找到對應的 Pod,並提供一個固定的虛擬 IP 與 DNS 名稱。

    常見的 Service 類型有四種:

    ClusterIP:僅叢集內部可存取,最常用於服務間通訊。

  • NodePort:在每個節點上開放一個埠,讓外部可以透過節點 IP 存取。
  • LoadBalancer:向雲廠商申請一個外部負載平衡器,直接對外暴露服務。
  • ExternalName:把服務映射到外部 DNS 名稱,常用於整合外部系統。
  • 而 Ingress 則是位於 Service 之上的第七層(HTTP/HTTPS)入口,負責處理網域名稱、路徑路由與 TLS 憑證。你可以把它想成「叢集的 Nginx 反向代理設定」,但用 YAML 描述。不過在 2026 年,Ingress 的地位正逐漸被 Gateway API 取代,這點我們後面會再談。

    五、實戰入門:建立你的第一個叢集

    觀念講完,接下來要動手了。對初學者來說,最不需要花錢的方式,就是在自己的電腦上跑一個單節點叢集。

    5-1 環境需求與工具選擇

    你需要的東西很簡單:一台有 8GB 以上記憶體的電腦(16GB 更順),以及 Docker 或相容的容器執行環境。常見的本地叢集工具有三種:

  • minikube:最老牌、文件最豐富,支援多種驅動程式,適合初學者。
  • kind(Kubernetes in Docker):把叢集跑在 Docker 容器裡,啟動快、適合測試 CI 流程。
  • k3d:基於 K3s 的輕量方案,資源佔用低,適合筆電效能有限的讀者。
  • 本文以 kind 為例,因為它安裝簡單、啟動快速。先安裝好 Docker、kubectl 與 kind,然後執行:

    kind create cluster --name demo

    幾十秒後,你就會有一個可用的 K8s 叢集。用以下指令確認:

    kubectl cluster-info

    kubectl get nodes

    如果看到節點狀態是 Ready,恭喜你,叢集已經跑起來了。

    5-2 部署第一個應用程式

    接著我們把前面提到的 Deployment 存成 web-demo.yaml,然後套用:

    kubectl apply -f web-demo.yaml

    kubectl get pods

    你應該會看到三個 Pod 正在執行。接著建立一個 Service 讓它能被存取:

    kubectl expose deployment web-demo \

    type=NodePort \

    port=80 \

    name=web-demo-svc

    然後用 port-forward 把流量導到本機:

    kubectl port-forward svc/web-demo-svc 8080:80

    打開瀏覽器連到 http://localhost:8080,你就會看到 Nginx 的預設頁面。到這裡,你已經完成了第一次完整的部署流程。

    5-3 常用 kubectl 指令速查

    以下這些指令幾乎每天都會用到,建議先記下來:

    kubectl get pods:列出所有 Pod。

    kubectl get all:列出叢集中主要資源。

  • kubectl describe pod <名稱>:查看 Pod 的詳細資訊與事件,除錯必備。
  • kubectl logs <名稱>:查看容器日誌。

  • kubectl exec -it <名稱> -- sh:進入容器內部。
  • kubectl apply -f <檔案>:套用 YAML 設定。
  • kubectl delete -f <檔案>:刪除 YAML 中定義的資源。
  • kubectl rollout status deployment/<名稱>:查看滾動更新進度。
  • kubectl rollout undo deployment/<名稱>:回復到上一個版本。
  • 另外,強烈建議安裝 k9s 這個終端機介面工具,它讓你可以用鍵盤快速瀏覽與操作叢集資源,效率會提升很多。

    六、2026 年值得關注的新趨勢

    K8s 生態變化很快,以下是幾個在 2026 年已經成為主流或正在快速崛起的方向。提前理解它們,能讓你的學習不會停留在「舊時代的 K8s」。

    6-1 Gateway API 逐漸取代 Ingress

    傳統 Ingress 的設計較為簡陋,許多進階功能(如流量分割、標頭改寫)都必須依賴各家廠商自訂的 Annotation,導致可攜性很差。Gateway API 是官方推出的下一代標準,把職責拆分成 GatewayClass、Gateway、HTTPRoute 等角色,更適合多團隊協作。到了 2026 年,多數主流實作(如 Istio、Cilium、Envoy Gateway)都已支援,新專案建議直接採用。

    6-2 eBPF 與 Cilium 的崛起

    傳統的 kube-proxy 使用 iptables 實作服務轉發,在叢集規模變大時容易遇到效能瓶頸。以 eBPF 為基礎的 Cilium 直接在使用者核心層處理網路封包,不但效能更好,還能提供可觀測性、安全策略與服務網格功能。2026 年,Cilium 已是許多企業的預設 CNI 選擇。

    6-3 AI 工作負載與 GPU 排程

    隨著生成式 AI 普及,越來越多的訓練與推論工作負載跑在 K8s 上。這帶動了幾個技術發展:GPU 資源的排程與共享(如 MIG、Time-slicing)、動態資源分配(DRA)、以及專為推論設計的 KServe 與 vLLM Operator。如果你對 AI 基礎架構有興趣,K8s 是必經之路。

    6-4 平台工程與 GitOps

    「平台工程」在 2026 年已成為企業顯學:由平台團隊打造內部開發者平台(IDP),讓應用團隊可以自助部署,而不用理解 K8s 的所有細節。這類平台通常以 GitOps 為核心,用 Argo CD 或 Flux 把 Git 倉庫中的宣告同步到叢集。這代表一件事:K8s 的知識並沒有消失,而是被抽象化到平台層,理解底層原理的人,才有能力設計出好的平台。

    七、初學者常見誤區與學習路徑

    7-1 三個最常見的誤區

  • 誤區一:一開始就鑽研底層。有人一頭栽進 etcd 的 Raft 演算法或 CNI 的封包流程,結果還沒部署過一個應用程式就放棄了。建議先從「會用」開始,再逐步往底層走。
  • 誤區二:把 Pod 當成容器。Pod 不是容器,而是容器的封裝單位。理解這個差異,才能正確設計多容器的協作模式。
  • 誤區三:忽略 YAML 的細節。縮排、標籤選擇器、API 版本這些看起來瑣碎的東西,往往是導致錯誤的主因。養成用 kubectl apply --dry-run=server 先驗證的習慣。
  • 7-2 建議的學習路線

    如果你希望有系統地學,可以參考以下順序:

  • 第一週:熟悉容器與 Docker 基本操作,理解映像檔與容器的關係。
  • 第二週:用 kind 或 minikube 建立叢集,練習 Pod、Deployment、Service 的建立與刪除。
  • 第三週:學習 ConfigMap、Secret、Volume、Namespace 等物件,並練習滾動更新與回復。
  • 第四週:接觸 Ingress 或 Gateway API,把服務暴露到外部。
  • 第二個月:學習 Helm 套件管理、RBAC 權限控制、資源限制與 HPA 自動擴縮。
  • 第三個月:嘗試在雲端建立託管叢集,並導入 GitOps 流程。

    過程中,建議自己動手做一個小專案,例如把一個簡單的 Web 應用加上資料庫部署到叢集上,這樣學到的東西才會真正內化。

    八、結語:把 K8s 當成一門長期的功課

    Kubernetes 的學習曲線確實不低,但它背後的設計哲學其實很單純:把複雜的分散式系統管理,拆解成許多小的、可組合的控制器,並用宣告式 API 統一介面。一旦你理解了這個核心思維,剩下的名詞與工具,都只是這個思維的延伸。

    2026 年的 K8s 生態比以往任何時候都更成熟,但也更龐大。你不需要一次學會所有東西,重要的是保持動手實作的習慣。從一個 Pod 開始,從一個 Deployment 開始,慢慢地你會發現,那些曾經看起來很可怕的名詞,其實都只是解決特定問題的工具而已。

    希望這篇文章能成為你進入容器編排世界的一塊敲門磚。如果你在實作過程中遇到問題,歡迎在「雅寶社區 · 頂客論壇」的 3C 科技教學版發文討論,分享你的學習心得或踩坑經驗。技術這條路,有人一起走會輕鬆很多。我們下一篇文章見!

    ```

    🏠 返回首頁