身為負責任的數位牧場主,今天我們要建立完整的叢集升級指南!這不是紙上談兵的理論課,而是基於實戰經驗的實用指南。我們會深入分析升級的各種影響、建立有效的備份策略,並制定適合不同規模的升級流程。讓各位牧場主在面對升級時有明確的行動方案!
1. YAML 格式變更
最典型的是 Ingress API 版本變更。系統會自動協助調整叢集內現有的服務,但你下一次部署時才會面對錯誤。這是個隱藏炸彈!
2. API Objects 被廢棄
像 PodSecurityPolicy 在 v1.25 被完全移除。原本依賴這些 objects 的服務會立即缺少部分功能,沒有緩衝期。
3. 重大架構變更
4. 第三方服務相容性
各種 Operator 透過 API Server 管理服務,如果升級後找不到該 API 端點,就會無法正常運作。這就是為什麼第三方服務對 Kubernetes 版本有嚴格相依性。
5. 資訊收集建議
推薦關注 GKE 網站的 API 相關變更,他們整理得很完整,會主動警示重要變化。各種變更需要自行蒐集資料準備。
OS 版本
├── Linux Kernel 版本
├── RKE2/K8s 版本
├── Rancher 版本
└── Components (Cilium CNI 等)
重要提醒:
升級前務必檢查相容性:
1. ETCD 備份(最關鍵)
2. Rancher 備份
3. Control Plane 節點備份
建議直接對 Control Plane 節點做機器快照,避免系統損壞後修不好。根據你的虛擬化平台操作。
4. PVC 備份
可以考慮,但通常沒必要,除非有重要資料。
5. 整個叢集備份
成本很高,看風險承受程度決定。
6. Worker 節點備份
不建議備份。Worker 節點應該設計為可以隨時被替換,如果出問題就把服務搬走後重建節點。
執行 OS 的原地升級步驟,但建立新節點來替換舊的更好。現實考量可能包括 IP 綁定等問題。
Custom Cluster:
journalctl -xef -u rke2-server
查看 rke2-server 日誌journalctl -xef -u rancher-system-agent
查看 agent 日誌Import 的 Clusters:
使用 helm upgrade
指令升級 Rancher。
盡量避免,風險較高。
1. 通知使用者(絕對必須)
不通知就升級,發現服務掛掉怎麼辦?升級過程也可能造成服務斷線。
2. 要求使用者預先處理
請他們先修改各種 deprecated API、YAML、Objects,避免升級後才發現問題。
少量節點環境:
大量節點環境(上百台):
不可能手動處理,這樣維護窗口要多長?所以服務設計必須能承受自動化升級,這點非常重要。
kubent (Kubernetes No Trouble) 可以快速找出現有平台是否使用即將被廢棄的 objects 與 API。
限制:
升級前務必執行 kubent 掃描,找出需要修改的資源:
# 安裝 kubent
curl -L "https://github.com/doitintl/kube-no-trouble/releases/latest/download/kubent-$(uname -s)-amd64.tar.gz" | tar xz
# 執行檢查
./kubent
會列出即將在新版本中被移除的 API 和 objects。
核心觀念:叢集規模決定升級策略,而升級策略反過來影響服務架構設計。
某些 Pod 可能無法正常搬移,需要:
今天我們建立了完整的叢集升級與備份指南,涵蓋影響評估、備份策略、升級流程到常見問題解決。這些都是基於實際運維經驗的實用指導。
今日重點:
明天我們將學習 Day 29:故障排除與診斷工具箱 - 牧場主的急救包!深入各種診斷技巧和故障排除方法,建立完整的問題解決能力。
💡 牧場主小提示:升級不是技術操作,而是風險管理。充分的準備工作比技術技巧更重要。記住:最好的升級是讓使用者感覺不到升級正在進行。做好規劃、分批執行、隨時準備回滾,這就是專業牧場主的升級之道!