
Amazon EKS 升級終於有 7 日後悔期:控制平面退得,節點未必跟
rollback 已全面上線,但實際涵蓋範圍窄過「還原叢集」
終於可以向後行一步
AWS 喺 7 月 1 日為 Amazon EKS 推出 Kubernetes 版本 rollback。iThome 報道,管理員完成 in-place upgrade 後,如果正式環境撞到 API 唔相容、應用異常或者其他升級問題,可以喺 升級完成後 7 日內,經 EKS Console、CLI 或 SDK 退返上一個 minor version。功能已經喺所有提供 EKS 嘅商用 Region 上線,唔另收費,香港 Region 自然都用得到。
呢個改動實用,原因係 Kubernetes 控制平面升級向來近乎單程路。升完先出事,團隊通常只可以盡快修好相容問題,或者開另一個舊版叢集再搬 workload。EKS 而家畀多條退路,確實可以縮短救火時間,不過將佢理解成「成個 cluster 一鍵還原」就會高估咗功能範圍。

圖片:AWS
AWS 真正幫你退咗啲咩
按 AWS 文件,rollback 會將 Kubernetes API server、控制平面元件同相關設定降返上一個 minor version,EKS platform version 就會轉用嗰個 Kubernetes 版本最新嘅 platform release。叢集入面嘅 etcd 狀態、Pods、Deployments、Services、persistent volumes 同資料都會保留,運行中嘅 workload 亦唔會因為控制平面降版而自動消失。
「保留」同「回復舊狀態」係兩回事。etcd 冇還原到升級前嘅 snapshot,升級後建立或修改過嘅資源仍然留喺度;persistent volume 入面嘅資料亦唔會倒帶。如果團隊喺新版本用咗舊版唔識嘅 API、欄位或者功能,就要先清理相關改動。即使夾硬用 --force 略過部分檢查,嗰批資源都仍會保留,之後有機會繼續出問題。
Add-on 同 worker node 要自己執
標準 EKS 叢集最容易中伏嘅位置係 data plane。EKS add-on 唔會自動降版,Managed Node Groups 亦要先用 UpdateNodegroupVersion 自行退返舊版;self-managed 同 hybrid nodes 就要換返相容嘅 AMI 或設定。Fargate worker node 本身唔支援降版,如果相關 Fargate Pods 已跟控制平面升到新版本,AWS 建議先刪除受影響 Pods,再退控制平面同重新部署。
EKS Auto Mode 會省事一截,AWS 會先替 Auto Mode worker nodes 降版,再處理控制平面,同時遵守 NodePool disruption budget 同 PodDisruptionBudget。不過限制設得太緊,或者 node 有 do-not-disrupt 標記,rollback 仍可能卡住。至於自行管理嘅 cluster-autoscaler、controller 同其他第三方 add-on,Rollback Readiness Insights 唔會全部替你檢查,版本相容仍然要團隊自己驗證。
7 日內都未必一定退到
Rollback 只接受 N 退到 N-1,唔可以一次跨多個 minor version;叢集亦必須曾經由舊版 in-place upgrade 上去,新開叢集冇得借呢項功能降版。目標版本要仍受 EKS 支援,叢集要處於 ACTIVE 狀態,而且升級後再升多次、超過 7 日,或者開咗舊版唔支援嘅 EKS 功能,都可能令退版無法啟動。退到 extended support 版本前,仲要先改用 EXTENDED policy,完成後相關延長支援收費亦會恢復。
EKS 觸發 rollback 前會檢查 API 同欄位相容性、叢集健康、kubelet 與 kube-proxy version skew,亦會查看 EKS-managed add-on。ERROR 或 UNKNOWN 一般會擋住操作,部分結果可以用 --force 略過,但 7 日期限同功能相容等硬限制繞唔過。呢批 insights 亦只係當刻嘅 best-effort 檢查,檢查後再改 cluster,結果未必反映得到。
升級流程都要跟住改
要真正用好呢 7 日,較穩陣嘅做法係先升控制平面,留一段觀察期,確認 API、controller 同 workload 正常後,先升非 Auto Mode worker nodes;add-on 就預先揀同新舊兩版都相容嘅版本。咁樣一旦要退,唔使先將整批 node 再滾動更新一次,rollback 路徑會乾淨好多。AWS 自己嘅最佳實務亦建議將控制平面同 data plane 升級拆開。
Rollback 可以降低升級失手嘅代價,但 staging、API deprecation 掃描、分批升級、資料備份同復原演練照樣要做。尤其呢項功能唔會替你還原 etcd 或 persistent volume 內容,亦唔保證自家 controller 同第三方工具向後相容。對管理 EKS 嘅開發同 DevOps 團隊嚟講,下一步就要將 7 日觀察期、readiness checks 同 node 降版步驟正式寫入升級 runbook。
參考來源
- iThome — Amazon EKS升級增加退路,K8s控制平面7天內可回復前一版本 — original report
- Amazon EKS now supports Kubernetes version rollback — AWS 官方公告,確認推出日期、7 日期限、Region 覆蓋同收費安排。
- Rollback cluster to previous Kubernetes version — AWS 官方操作文件,詳列控制平面、etcd、add-on、各類 worker node 同 Fargate 嘅處理方法。
- Best Practices for Cluster Version Rollback — AWS 官方最佳實務,解釋升級次序、觀察期、備份同 rollback 定位。
- Announcing Amazon EKS Rollback for safe and reliable management of cluster upgrades — AWS Containers 官方技術文章,補充 Auto Mode、readiness checks、自管 add-on 同版本限制。
本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。







