iT邦幫忙

2026 iThome 鐵人賽

DAY 23
0

第五篇:雲原生編排——Kubernetes 實戰與網站架構治理

當 Docker 容器從幾個服務增加到數十個、數百個甚至更多時,單靠人工管理容器就會遇到許多問題。服務如何部署到適合的主機、故障後如何自動恢復、流量增加時如何擴充、版本更新時如何避免中斷,以及不同服務之間如何互相找到對方,都需要一套完整的容器編排系統。Kubernetes 正是用來解決這些問題的雲原生平台。

本篇將從 Kubernetes 的核心架構開始,說明它如何管理網站中的容器化服務。內容涵蓋 Kubernetes 的基本運作方式、服務發現與對外路由、資料與設定管理,以及自動擴縮和自癒能力。讀者可以從單一網站服務出發,逐步理解 Kubernetes 如何將多個微服務部署到叢集,並讓整個網站具備更好的可用性、彈性和維運能力。

第一部分會介紹 Kubernetes 為什麼需要容器編排。Control Plane 負責管理整個叢集的狀態與決策,Worker Node 則負責實際執行應用程式。Pod 是 Kubernetes 中最小的部署單位,ReplicaSet 用來維持指定數量的 Pod,Deployment 則負責管理應用程式版本、更新與回滾。透過這些核心物件,網站可以從單一容器部署,提升為可持續運作的服務群組。

在網站更新時,Deployment 可以使用滾動更新,逐步替換舊版本 Pod,避免所有服務同時停止。如果新版本發生錯誤,也能快速回滾到先前的穩定版本。這對購物網站、會員系統、內容平台和金融服務尤其重要,因為這些網站通常不能因為部署新版本而長時間中斷。

第二部分將介紹 Kubernetes 的服務發現、網路路由與資料管理。Service 提供穩定的服務名稱和網路入口,ClusterIP 適合叢集內部服務使用,NodePort 可以透過節點對外提供服務,LoadBalancer 則能銜接雲端負載均衡器。Ingress 可以依照網域名稱與 URL 路徑,把外部請求導向不同微服務,並能搭配 Envoy 或 Higress 建立更完整的雲原生網關。

當服務數量增加,還可以使用 Istio 建立服務網格,在不大幅修改應用程式的情況下,提供流量管理、可觀測性、重試、熔斷與 mTLS 加密。資料與設定方面,PV、PVC 和 StorageClass 負責管理持久化儲存,ConfigMap 用來保存一般設定,Secret 則適合保存金鑰、密碼與其他敏感資訊。

第三部分則聚焦於彈性擴縮與自癒系統。Liveness Probe 可以確認容器是否仍然正常,Readiness Probe 則用來判斷服務是否能接收流量。當應用程式故障時,Kubernetes 可以自動重啟或替換容器。面對大型活動或流量高峰,HPA 可以依照 CPU、記憶體或其他指標增加 Pod 數量,Cluster Autoscaler 可以調整節點數量,KEDA 則能根據訊息佇列等事件觸發擴縮。

Requests 和 Limits 能協助叢集進行資源分配,避免單一服務消耗過多記憶體而觸發 OOM。當網站需要跨機房或跨叢集部署時,還可以使用 Affinity、Taints、Tolerations 與 Karmada,控制服務應該部署在哪些節點或叢集。

透過本篇,讀者將理解 Kubernetes 不只是啟動容器的工具,而是一套完整的網站架構管理平台。它能將部署、網路、儲存、更新、擴縮與故障修復整合在一起,讓網站從單機容器服務,進一步演進成具備高可用性、彈性擴展與自動化治理能力的雲原生系統。


上一篇
day 22: 微服務轉向容器,核心架構的改變
下一篇
day 24: 雲服務支援,生成式 AI 和邊緣運算
系列文
30 天打造我的個人雲端實驗室:用 Docker、Kubernetes、Flyte 和自建服務,重構手機與電腦的日常工作流 共 33 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言