平台與維運 2026 年 5 月 6 日

2026-05-06 — Docker Engine v29 containerd 預設儲存、Kubernetes v1.36 Pod 層級資源管理器

primary=https://www.docker.com/blog/docker-engine-version-29/ primary=https://kubernetes.io/blog/2026/05/01/kubernetes-v1-36-feature-pod-level-resource-managers-alpha/

Docker Engine v29:containerd image store 成為新安裝預設值,圖驅動已棄用

Docker Blog · 2026-05-05

Docker Engine v29 將 containerd image store 設為新安裝(new installs)的預設儲存後端,正式棄用已使用多年的 graph driver(overlay2)架構,同時將最低支援 API 版本從 1.43 提升至 1.44,並將 Moby 的依賴管理從自有 vendoring 系統遷移至 Go modules。

containerd image store 與 graph driver 的差異

面向Graph Driver(棄用)Containerd Image Store
架構Docker 特有後端業界標準 containerd
映像層管理overlay2/devicemapperSnapshotter 框架
內容定址部分支援完整內容定址儲存
未來功能lazy pulling、遠端內容儲存、P2P 分發
Kubernetes 互通性不一致直接對齊

既有安裝不受影響——此變更僅適用於 v29 之後的全新安裝。現有環境若需遷移,可手動啟用 containerd image store 後再升級。Graph driver 在 v29 中仍可使用,但文件已明確標示為棄用,未來版本將予以移除。

API 版本下限提升

最低支援 API 版本從 1.43 升至 1.44(對應 Moby v25)。使用舊版 Docker SDK 或 CLI 的環境在連接 v29 daemon 時將收到錯誤:

Error response from daemon: client version 1.43 is too old.
Minimum supported API version is 1.44

可透過 DOCKER_MIN_API_VERSION 環境變數或 daemon.jsonmin-api-version 設定降低下限,但這僅作為過渡期緩衝措施。

Moby 遷移至 Go modules

Moby(Docker Engine 的上游開源專案)完成從 legacy vendoring 到 Go modules(go.mod) 的遷移。對於直接使用 Docker Go API 的開發者而言,import 路徑已更新:

// 舊路徑(不再更新)
import "github.com/docker/docker"

// 新路徑
import "github.com/moby/moby"

實驗性 nftables 防火牆後端

v29 引入實驗性 --firewall-backend=nftables 選項,讓 Docker 直接建立 nftables 規則,取代對 iptables 的依賴。目前尚不支援 Swarm 模式,不建議用於生產環境。

原始來源:Docker Blog — Docker Engine v29: Foundational Updates for the Future


Kubernetes v1.36 Alpha:Pod 層級資源管理器,延伸 CPU 與記憶體拓撲感知能力

Kubernetes Blog · 2026-05-01

Kubernetes v1.36 以 Alpha 階段引入 Pod-Level Resource Managers,將 kubelet 現有的 Topology Manager、CPU Manager 與 Memory Manager 的管理粒度從容器(Container)層級提升至 Pod 層級,讓效能敏感型工作負載能夠獲得更精細的 NUMA(Non-Uniform Memory Access)拓撲保證。

背景

現有的 kubelet 資源管理器是以容器為單位進行 CPU 核心綁定與 NUMA 節點對齊。對於多容器 Pod(如主應用程式容器 + sidecar),這會導致容器間的 CPU 與記憶體資源分散在不同 NUMA 節點,增加跨節點存取的延遲。對於 HPC(High-Performance Computing)、ML 推論、即時資料處理等工作負載,這是顯著的效能瓶頸。

核心改動

Pod-Level Resource Managers 在 kubelet 中引入一個協調層,在決定 CPU/記憶體分配前,先考量 Pod 內所有容器的整體資源需求,再進行拓撲對齊決策。這確保同一 Pod 的容器會被調度到相同 NUMA 域的 CPU 與記憶體上。

設定方式透過 kubelet 的 --cpu-manager-policy--topology-manager-policy 參數控制,v1.36 新增對應的 podLevelResourceManagers feature gate。

影響範圍

此功能以 Alpha 階段發布,預設停用,需明確啟用 feature gate 才能測試。目標使用場景包括:

  • GPU 加速推論(GPU 通常與特定 NUMA 節點的 CPU/記憶體共享 PCIe 頻寬)
  • 即時音視訊處理(需要低且穩定的尾部延遲)
  • 高頻交易與資料庫等 NUMA 敏感應用

原始來源:Kubernetes Blog — Kubernetes v1.36: Pod-Level Resource Managers (Alpha)


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