平台與維運 2026 年 5 月 10 日

2026-05-10 — K8s v1.36 Volume Group Snapshot GA、Manifest-Based Admission Control Alpha

primary=https://kubernetes.io/blog/2026/05/08/kubernetes-v1-36-volume-group-snapshot-ga/ primary=https://kubernetes.io/blog/2026/05/04/kubernetes-v1-36-manifest-based-admission-control/

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


End of article
0
Would love your thoughts, please comment.x
()
x