09/10/2026 · VietTechies · Biên tập

Kubernetes đang đẩy nhanh quá trình loại bỏ cơ chế quản lý tài nguyên cgroup v1 cũ kỹ, buộc các nhà quản trị cụm phải chuẩn bị chuyển đổi các nút chạy hệ điều hành Linux sang cgroup v2. Bắt đầu từ Kubernetes v1.35, thiết lập failCgroupV1 của kubelet được bật mặc định (true), khiến quá trình khởi động kubelet thất bại trên bất kỳ nút nào còn dùng cgroup v1 trừ khi quản trị viên chủ động thiết lập ghi đè tạm thời. Bên cạnh đó, kubeadm v1.35 cũng biến việc phát hiện cgroup v1 thành lỗi nghiêm trọng trong các bước kiểm tra tiền khởi chạy khi khởi tạo, gia nhập hoặc nâng cấp cụm. Mặc dù Kubernetes v1.36 vẫn cho phép ghi đè thủ công, dự án có kế hoạch loại bỏ hoàn toàn sự hỗ trợ dành cho cgroup v1 trong phiên bản v1.38.
Tăng cường cô lập và kiểm soát bộ nhớ
Việc chuyển sang cgroup v2 thay thế cấu trúc phân cấp phân mảnh bằng một cấu trúc hợp nhất duy nhất trong nhân Linux, mở ra các khả năng cô lập tài nguyên tiên tiến. Trong Kubernetes v1.36, tính năng thử nghiệm Memory QoS sử dụng các bộ điều khiển cgroup v2 để triển khai cơ chế bảo vệ bộ nhớ theo tầng, dùng memory.high để giới hạn tốc độ và ánh xạ các yêu cầu tài nguyên của container tới memory.min cũng như memory.low cho các mức bảo vệ cứng và mềm. Trên các nút dùng cgroup v2, kubelet cũng mặc định đặt singleProcessOOMKill thành false, sử dụng memory.oom.group để chấm dứt toàn bộ tiến trình trong container cùng lúc khi xảy ra sự cố hết bộ nhớ (OOM), thay vì để lại các tiến trình chạy dở dang.
Cấu trúc hợp nhất này còn hỗ trợ trực tiếp các chỉ số Pressure Stall Information (PSI) ở cấp độ nút, Pod và container, đồng thời cho phép phân quyền container không cần quyền root thông qua systemd. Thêm vào đó, khả năng thực thi tổng thể chính xác cho việc thay đổi kích thước tài nguyên Pod trực tiếp tại chỗ — vốn đã được bật mặc định trong Kubernetes v1.36 — cũng phụ thuộc hoàn toàn vào hạ tầng cgroup v2.
Điều kiện tiên quyết và các bước cấu hình
Để vận hành cgroup v2 thành công, các nút trong cụm cần chạy hệ điều hành Linux có hỗ trợ và đã kích hoạt cgroup v2 với phiên bản nhân 5.8 trở lên. Nhân 5.9 hoặc mới hơn được khuyến nghị khi sử dụng Memory QoS để tránh các lỗi thu hồi bộ nhớ ở cấp độ nhân đã biết. Các bộ thực thi container cũng phải hỗ trợ giao diện v2, chẳng hạn như containerd v1.4 trở lên hoặc CRI-O v1.20 trở lên.
Quản trị viên cụm phải đảm bảo kubelet và bộ thực thi container bên dưới sử dụng driver cgroup đồng bộ với nhau, trong đó systemd là lựa chọn được khuyến nghị cho các cụm quản lý bằng kubeadm. Những bộ thực thi hỗ trợ RuntimeConfig CRI RPC, như containerd v2.0+ hoặc CRI-O v1.28+, sẽ cho phép tự động phát hiện driver cgroup, giúp kubelet linh hoạt khớp cấu hình driver với bộ thực thi.
Ảnh minh họa do AI tạo, không phải ảnh tư liệu.
Nguồn: The Shift to cgroup v2 in Kubernetes: What You Need to Know
