Kubernetes v1.36 將 Volume Group Snapshot 提升至 GA
Kubernetes Blog · 2026-05-08
Kubernetes v1.36 正式將 Volume Group Snapshot 提升至 General Availability,這個功能自 v1.27 Alpha、v1.32 Beta、v1.34 Beta v2,歷時近三年才畢業。核心能力是讓多個 PersistentVolumeClaim 在同一時間點取得 crash-consistent 快照,確保跨 volume 的寫入順序一致性。
API 資源
GA 版本統一升至 groupsnapshot.storage.k8s.io/v1 API Group,包含三種 CRD:
VolumeGroupSnapshot:使用者建立,透過 label selector 指定要一起快照的 PVC 集合VolumeGroupSnapshotContent:由 snapshot controller 自動建立,紀錄底層儲存資源,與 VolumeGroupSnapshot 一對一綁定VolumeGroupSnapshotClass:叢集管理員定義,指定 CSI driver 與刪除策略
核心改動
Beta v2(v1.34)帶入了準確的 restoreSize 回報,GA 版本在此基礎上加強穩定性與 bug 修復。使用者以 label 將 PVC 分組後,只需建立 VolumeGroupSnapshot 物件,snapshot controller 會自動觸發 CSI driver 完成原子快照。
apiVersion: groupsnapshot.storage.k8s.io/v1
kind: VolumeGroupSnapshot
metadata:
name: snapshot-daily-20260510
namespace: demo-namespace
spec:
volumeGroupSnapshotClassName: csi-groupSnapclass
selector:
matchLabels:
group: myGroup影響範圍
僅支援 CSI driver(不支援 in-tree volume plugin),storage driver 必須實作 CSI spec 的 group snapshot API。從 Beta 升級時,API version 需從 v1beta2 更新為 v1,Kubernetes 會自動轉換現有資源。此功能對多 volume 有狀態應用(資料與 log 分離、資料庫主備同步快照)特別有用,可在不暫停應用的前提下達到一致性備份。
原始來源:Kubernetes Blog
Kubernetes v1.36 Alpha:以磁碟檔案定義無法被刪除的 Admission Policy
Kubernetes Blog · 2026-05-04
Kubernetes v1.36 引入 Manifest-Based Admission Control(Alpha),允許叢集管理員將 Admission Policy 以 YAML 檔案存放於磁碟,由 API Server 在啟動時直接載入,完全繞開 API 層的刪除操作,解決傳統 API-based webhook 無法自我保護的先天問題。
原本的問題
API-based Admission Policy 有兩個結構性缺陷:第一是 bootstrap gap——API Server 啟動到 Policy 生效之間存在時間窗口,這在災難復原(etcd 故障、備份還原)時尤為顯著;第二是 自我保護死循環——Kubernetes 為避免循環依賴,刻意不對 ValidatingWebhookConfiguration 等自身設定類型呼叫 webhook,讓特權用戶可以直接刪除 Policy。
採用的方法
在 AdmissionConfiguration 設定檔中加入 staticManifestsDir 欄位,指向存放 Policy 的目錄。檔案在 API Server 服務任何請求前載入,且所有物件名稱必須以 .static.k8s.io 結尾,使審計記錄與 metrics 中來源清晰可辨。
apiVersion: apiserver.config.k8s.io/v1
kind: AdmissionConfiguration
plugins:
- name: ValidatingAdmissionPolicy
configuration:
staticManifestsDir: "/etc/kubernetes/admission/validating-policies/"Policy 本身使用標準 admissionregistration.k8s.io/v1 ValidatingAdmissionPolicy 與 Binding 格式,以 CEL 表達式撰寫驗證邏輯。
影響範圍
相較於 API-based 方案,Manifest-Based Policy 無法透過 kubectl 刪除,只能修改節點上的檔案並重啟 API Server,大幅提高安全基線的穩固性。目前仍為 Alpha 階段,預計在後續版本中加入 Mutating Policy 和 webhook 支援。
原始來源:Kubernetes Blog