iT邦幫忙

2026 iThome 鐵人賽

DAY 30
0

三十天,從 kubeadm init 敲下的第一行指令,到最後一天完成叢集版本升級——我們一步步建起了一套完整的 Kubernetes 知識體系。

回頭看,這趟旅程大致可以拆成 六大主題,每一段都有它要回答的核心問題。


一、叢集建置與基礎運作(Day 01–03)

核心問題:怎麼把叢集跑起來,讓應用能自動伸縮?

Day 主題 學到的事
Day 01|使用 kubeadm 建立 Kubernetes 叢集 kubeadm 建立叢集 從零搭建 1 Control Plane + 2 Worker 的實驗環境
Day 02|Pod 與 Deployment — 從「一次性容器」到「自動維運」 Pod 與 Deployment 理解 Kubernetes 最基本的工作負載單位,以及 Deployment 如何維持副本與更新應用
Day 03|HPA — 讓 Kubernetes 自己決定要跑幾個 Pod HPA 水平自動擴縮 讓 Kubernetes 根據負載自動調整 Pod 數量

這三天奠定了所有後續實驗的基礎。沒有叢集,一切都是紙上談兵。


二、Service 與流量管理(Day 04–06)

核心問題:流量怎麼從外部進來,又怎麼正確地找到 Pod?

Day 主題 學到的事
Day 04|Service — 為 Pod 提供穩定的存取入口 Service ClusterIP、NodePort、LoadBalancer 三種暴露方式
Day 05|Service 背後的秘密 — kube-proxy 與流量轉發機制 kube-proxy iptables / nftables / IPVS 三種流量轉發模式的差異
Day 06|Ingress — 一個入口,接管所有微服務流量 Ingress 用一個入口統一管理 HTTP / HTTPS 路由

這段的重點是理解 「Pod IP 可能會變,Service 才是穩定的存取入口」,以及 kube-proxy 在背後負責的流量轉發機制。


三、設定管理與持久化儲存(Day 07–11)

核心問題:設定怎麼管?資料怎麼存?有狀態的應用怎麼跑?

Day 主題 學到的事
Day 07|ConfigMap — 把設定從程式碼中抽離 ConfigMap 將設定與程式碼分離,讓不同環境更容易切換
Day 08|別再把密碼寫進 YAML!Secret 的正確打開方式 Secret 管理密碼、Token、憑證等敏感資料
Day 09|Kubernetes 如何讓「無狀態 Pod」支援「有狀態資料」 PV / PVC 讓 Pod 掛載可持久保存的儲存空間
Day 10|StorageClass — Kubernetes 如何自動建立儲存? StorageClass 透過 Dynamic Provisioning 自動建立儲存資源
Day 11|StatefulSet — 讓有狀態應用真正穩定運行 StatefulSet 提供穩定身份、持久化儲存與有序部署能力

從 ConfigMap 到 StatefulSet,這五天回答了一個關鍵問題:Kubernetes 不只可以跑無狀態應用,也能管理需要持久資料與穩定身份的工作負載。


四、排程策略與資源控制(Day 12–18)

核心問題:Pod 要跑在哪裡?怎麼精準控制排程行為?

Day 主題 學到的事
Day 12|Kubernetes Scheduler 與資源管理 — Pod 到底會被排到哪個 Node? Scheduler 與資源管理 理解 requests / limits 與排程決策之間的關係
Day 13|Node Affinity 與 Taints & Tolerations — 精準控制 Pod 的排程位置 Node Affinity & Taints 控制 Pod 想去哪個 Node,以及哪些 Pod 能進入特定 Node
Day 14|Pod Affinity 與 Anti-Affinity — 控制 Pod 之間的排程關係 Pod Affinity / Anti-Affinity 控制不同 Pod 之間的共存與隔離
Day 15|topologySpreadConstraints — 更優雅的 Pod 分散機制 topologySpreadConstraints 將 Pod 更平均地分散到不同拓撲域
Day 16|PriorityClass 與 Preemption — Pod 的優先級與搶佔機制 PriorityClass & Preemption 資源不足時控制哪些 Pod 擁有更高排程優先權
Day 17|Init Container — Pod 啟動前的初始化機制 Init Container 在主要 Container 啟動前完成必要的前置作業
Day 18|Sidecar Container — Pod 的最佳副手 Sidecar Container 讓輔助 Container 與主要應用共同運作

這七天是整個系列中排程觀念最集中的一段。

排程不只是 Kubernetes 自己的事,理解這些機制後,才能更進一步設計高可用、資源隔離與更合理的工作負載分布。


五、資源隔離與 Helm 套件管理(Day 19–23)

核心問題:怎麼管理資源邊界,又怎麼把一堆 YAML 變成可重複使用的套件?

Day 主題 學到的事
Day 19|Namespace — Kubernetes 的資源隔離與多租戶管理 Namespace 建立資源邏輯邊界,作為權限與多租戶管理的基礎
Day 20|Helm — Kubernetes 的套件管理工具 Helm 入門 認識 Chart、Release、Repository 三大核心概念
Day 21|打造你的第一個 Helm Chart 打造第一個 Chart 從零建立一個可以安裝與升級的 Helm Chart
Day 22|Helm 進階模板與 _helpers.tpl — 讓 Chart 更靈活、更好維護 進階模板 & _helpers.tpl 使用 include、nindent、with 等功能提升 Chart 可維護性
Day 23|Helm Repository 與 Chart 依賴管理 Repository & 依賴管理 管理 Chart 的分享、版本與 Dependency

Helm 是從「手動管理 YAML」走向「可重複、可版本化部署」的重要一步。

透過 Namespace 與 Helm,我們也開始從單純部署應用,進一步思考資源邊界與部署流程的工程化管理。


六、安全、進階網路與叢集維運(Day 24–30)

核心問題:怎麼讓叢集安全、可擴展、可維護?

Day 主題 學到的事
Day 24|RBAC — Kubernetes 的角色權限控制 RBAC 控制誰可以操作哪些 Kubernetes 資源
Day 25|NetworkPolicy — Kubernetes 的網路策略與零信任隔離 NetworkPolicy 實作 Pod 層級的網路隔離,以及 Zero Trust 常見的網路控制方式
Day 26|Gateway API — Kubernetes 的下一代流量入口管理 Gateway API 使用更標準化、角色分離的方式管理流量入口與路由
Day 27|CRD 與 Operator — 擴展 Kubernetes API,打造自訂資源與控制器 CRD & Operator 自訂 Kubernetes Resource,並透過 Controller 實作自動化邏輯
Day 28|cert-manager — 自動申請、管理與續約 Kubernetes TLS 憑證 cert-manager 自動申請、儲存與續約 TLS 憑證
Day 29|etcd — Kubernetes 的狀態資料核心 etcd 理解 Kubernetes 狀態儲存、Raft、Snapshot 備份與還原
Day 30|Kubernetes 叢集升級 — 使用 kubeadm 從 v1.34 升到 v1.35 叢集升級 使用 kubeadm 完成 Control Plane 與 Worker Node 的版本升級

最後這七天把視角從「使用 Kubernetes」拉高到「治理與擴展 Kubernetes」。

一個穩定的叢集不只需要會部署,還需要懂權限、網路、安全、自動化、資料保護與版本維護。


心得

老實說,剛開始動筆的時候心裡想的是:「只寫 Kubernetes,三十篇到底要怎麼生出來?」結果越寫越發現,三十篇根本寫不完——每個主題一展開就是一整篇,還有好多細節想補。

更有趣的是,有些明明很基礎、很重要的東西,像是 Namespace,竟然一路寫到後半段才驚覺:「等等,我居然還沒寫到!」只好趕緊塞進去。計畫永遠趕不上變化。

其實這個系列有不少內容,是從我今年 2 月準備 CKA 時一路累積下來的。當時為了考試自己搭叢集、查文件、做實驗,也留下了很多筆記,後來才慢慢把它們整理成這三十天的內容。

https://ithelp.ithome.com.tw/upload/images/20260825/20181928mjRBAswuQ4.png

不過 Kubernetes 和周邊生態更新得很快,從 2 月到現在,有些版本、API 狀態、安裝方式或官方建議已經有所變化。因此這系列裡部分實作會保留我當時真正做過的版本與截圖,同時盡量補上現在需要注意的差異。

我覺得比起記住某一條指令,更重要的還是理解它背後在做什麼。版本會變、工具會更新,但只要核心概念有建立起來,之後遇到新的版本也比較知道該從哪裡查、怎麼判斷。


感謝

感謝每一位讀到這裡的你。三十天的內容不短,能一路看到最後,甚至真的跟著把環境搭起來、把指令跑過一遍,都很不容易。

這三十天對我自己來說,也算是重新把準備 CKA 時學過的東西再整理、驗證一次。很多原本以為已經懂的內容,真的開始寫之後才發現還有不少細節值得重新確認。

最後也提醒一下,Kubernetes 的版本與生態一直在演進,實際使用在正式環境前,還是要記得確認當下版本的官方文件。

謝謝你陪我走完這三十天。


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

尚未有邦友留言

立即登入留言