全部產品
Search
文件中心

Container Service for Kubernetes:將節點遷移至 cgroup v2

更新時間:Dec 23, 2025

cgroup v2 採用統一的層級結構和改進的記憶體管理機制,相容 Kubernetes 後續版本的增強功能。建議將節點遷移至預設啟用 cgroup v2 的新版作業系統,以提升叢集穩定性與資源管理效率。

Cgroup版本說明

Linux核心提供cgroup v1和cgroup v2兩個版本,用於限制、記錄和隔離進程組使用的實體資源(如CPU、記憶體、I/O等)。cgroup v2是新一代的cgroup 介面,在設計上解決了 v1 的多控制器層級問題,提供了更一致的資源控制能力。兩者在通用介面與子系統組織方式上存在差異,直接存取 cgroup 檔案系統的應用程式需進行適配。

詳見cgroup v1與cgroup v2的區別

Kubernetes 自 1.31 版本 起將cgroup v1支援調整為維護模式,建議遷移至cgroup v2。cgroup v2主要優勢包括:

  • 提升穩定性:採用統一的記憶體核算模型,有效管理頁面緩衝(Page Cache),解決cgroup v1中高磁碟I/O應用搶佔記憶體、導致其他應用被OOMKilled的問題。

  • 統一的層級結構:所有資源控制器(如 CPU、記憶體)集中於單一層級,避免cgroup v1中多層級並存帶來的配置衝突與管理複雜性,簡化資源檢視與策略定義。

  • 增強資源可觀測性:引入壓力失速資訊(Pressure Stall Information, PSI),量化應用因等待 CPU、記憶體或 I/O 資源而阻塞的時間,為效能瓶頸分析提供精細化指標支援。

檢查節點cgroup版本

遷移前,可登入節點,執行以下命令來確認當前的cgroup版本。

# 登入到目標節點後執行
stat -fc %T /sys/fs/cgroup/

# 預期輸出:
# cgroup2fs  --> 代表 cgroup v2
# tmpfs      --> 代表 cgroup v1

遷移步驟

節點層面:更換作業系統

ACK叢集節點的cgroup版本由其作業系統決定。如需遷移,請在節點池維度更換為支援cgroup v2的新版作業系統。ACK中預設使用cgroup v2的作業系統包括Alibaba Cloud Linux 3.2104 LTS 64位 容器最佳化版、Alibaba Cloud Linux 4 LTS 64位 容器最佳化版、ContainerOS 3.3及以上版本、RHEL 9及以上版本、Ubuntu 22及以上版本。

操作步驟及相關注意事項,請參見更換作業系統

應用程式層面:確保工作負載相容性

由於 cgroup v1 與 v2 的檔案系統結構和參數命名不相容,任何直接讀取 /sys/fs/cgroup 路徑的應用均需驗證或升級以支援 cgroup v2。

分類

說明

Java應用

  • DragonWell:11.0.16.12、8.15.16-GA及以上版本。

  • OpenJDK/HotSpot:jdk8u372、11.0.16、15及以上版本。

  • IBM Semeru Runtimes:8.0.382.0、11.0.20.0、17.0.8.0及以上版本。

  • IBM Java:8.0.8.6及以上版本。

Go應用

若使用了 uber-go/automaxprocs 包,需升級至 v1.5.1 及以上版本。

cAdvisor

如果使用cAdvisor作為獨立的DaemonSet來監控Pod和容器,需更新至 v0.43.0 及以上版本。

Nginx Ingress

舊版本可能因無法正確解析 cgroup v2 中的 CPU 核心數資訊而導致記憶體超限並觸發 OOM,需升級至 v1.11.2 及以上版本。詳見GitHub Issue #9665

升級ACK Nginx Ingress Controller時,請參見升級Nginx Ingress Controller組件
其他需要關注的應用與組件
  • 第三方監控與APM Agent:Prometheus Node Exporter、Datadog Agent、SkyWalking 等工具在採集節點或容器指標時依賴 cgroupfs 資料來源。未適配 cgroup v2 的版本可能導致資料缺失或異常。建議查閱官方文檔,升級至明確聲明支援 cgroup v2 的版本。

  • 安全與審計工具:Falco、Sysdig 等通過 cgroup 資訊關聯事件歸屬。若組件版本不相容,可能導致檢測規則失效或誤判。建議升級至相容版本,並在測試環境驗證規則有效性。

  • 效能敏感型應用與自訂指令碼:部分應用啟動指令碼會讀取 cgroup 檔案實現自動調優(如根據 CPU 配額設定線程數)。此類邏輯在 cgroup v2 下因路徑變更而失效。應審查相關指令碼,更新為適配 cgroup v2 的讀取方式。

生產環境使用建議

  • 應用相容性

    審查自研應用或指令碼,確保其不依賴cgroup v1檔案系統(如 cpu.cfs_quota_us)。由於檔案系統介面不相容,此類邏輯在cgroup v2下將失效,必須進行適配。

  • 節點自訂配置

    更換作業系統會重設節點。所有自訂修改需通過節點池功能進行持久化,否則在節點重建後將丟失。相關配置方式及注意事項,請參見:

  • 監控警示:建議啟用阿里雲Prometheus監控,持續觀測叢集整體健康狀態及關鍵容器的資源使用趨勢,及時發現異常。