Kubernetes dọn dẹp hệ thống: Khai tử kube-dns, IPVS và cgroup v1
Phiên bản Kubernetes 1.37 (mật danh Garhwal) mang đến 67 thay đổi, tập trung vào việc ổn định hóa hệ thống và loại bỏ nợ kỹ thuật kéo dài nhiều năm. Đáng chú ý nhất, Metrics API sau 9 năm 'mắc kẹt' ở trạng thái beta cuối cùng đã chính thức phát hành ổn định, cùng với việc khai tử các thành phần lỗi thời như kube-dns, IPVS và cgroup v1.

Kubernetes dọn dẹp hệ thống: Khai tử kube-dns, IPVS và cgroup v1
Bản phát hành Kubernetes 1.37 (mật danh Garhwal) vừa được công bố với 67 thay đổi, cho thấy đội ngũ phát triển đang ưu tiên sự ổn định cho môi trường production. Đáng chú ý, Metrics API sau 9 năm trì trệ ở trạng thái beta cuối cùng cũng đã lên sóng chính thức, đồng thời loạt công nghệ kế thừa như kube-dns, IPVS và cgroup v1 chính thức bị khai tử.
Metrics API chính thức "lên chức" sau 9 năm beta
Một trong những điểm nhấn lớn nhất của Kubernetes 1.37 là việc Metrics API chính thức đạt trạng thái General Availability (GA) — một chặng đường kéo dài đến 9 năm, trong khi Kubernetes mới chỉ có 12 năm tuổi đời công khai. Trước đó, vào năm 2020, đội ngũ duy trì đã đặt ra quy định: bất kỳ tính năng API nào cũng không được nằm ở trạng thái beta quá 3 phiên bản nhỏ (khoảng 12 tháng).
"Dù mang nhãn beta, API metrics.k8s.io đã được sử dụng rộng rãi trong production suốt nhiều năm qua" — Dipesh Rawat, Trưởng nhóm phát hành Kubernetes 1.37, chia sẻ.
Sở dĩ Metrics API "lách" được quy định này là nhờ vào tính đặc thù kỹ thuật: nó không do API server quản lý trực tiếp mà là một API tổng hợp vận hành bên ngoài bởi một metrics server riêng biệt. API cung cấp dữ liệu sử dụng CPU và bộ nhớ cho pod và node, được dùng cho việc tổng hợp báo cáo lẫn đầu vào cho các tính năng khác như pod autoscaling. Bản phát hành này không mang thay đổi chức năng nào — nó chỉ chính thức công nhận những gì đã được kiểm chứng trong thực tế suốt nhiều năm qua.
"Trút gánh nặng" kỹ thuật cũ kỹ
Bên cạnh việc ổn định hóa Metrics API, Kubernetes 1.37 còn dọn dẹp hàng loạt công nghệ đã lỗi thời:
- kube-dns — máy chủ DNS tích hợp ban đầu — chính thức bị khai tử để nhường chỗ cho CoreDNS (mặc định từ Kubernetes 1.13). Các cụm vẫn dùng kube-dns cần nâng cấp trước Kubernetes 1.40 nếu không sẽ ngừng hoạt động.
- IPVS trong kube-proxy — phần xử lý định tuyến giữa các pod — sẽ không còn được hỗ trợ kể từ Kubernetes 1.43. nftables được chỉ định là hướng đi mới thay thế cho cơ chế iptables trước đó.
- cgroup v1 — phiên bản đầu tiên của Linux control groups — cũng nằm trong danh sách loại bỏ. Kể từ phiên bản 1.35, Kubernetes không khởi tạo node nào vẫn phụ thuộc cgroup v1, buộc người dùng phải chuyển sang cgroup v2 với khả năng giám sát tài nguyên container chi tiết hơn.
Các tính năng mới đáng chú ý
Phiên bản 1.37 kéo dài 15 tuần phát triển với sự đóng góp của hơn 1.700 cá nhân từ 212 công ty. Trong đó, một loạt tính năng mới tập trung vào việc đơn giản hóa vận hành deployment:
- Pod-level checkpoint và restore (KEP 5823, Alpha): Toàn bộ pod có thể được "chụp lại" trạng thái runtime của container để khôi phục sau đó, tùy thuộc vào khả năng quản lý của container runtime.
- HPAScaleToZero (KEP 2021, Beta): Cho phép Horizontal Pod Autoscaler thu nhỏ workload xuống 0 pod khi không hoạt động, dựa trên các chỉ số object hoặc external để kích hoạt khôi phục khi cần.
- Resilient watch cache initialization (KEP 4568): Giải quyết bài toán "thundering herd" khi API server khởi động — từ chối các yêu cầu đọc phụ thuộc watchcache bằng lỗi có thể thử lại cho đến khi cache được khởi tạo hoàn tất, tránh làm quá tải etcd.
KYAML: Một "thói quen tốt" cho cấu hình Kubernetes
Một tin vui cho những ai từng "vật lộn" với cú pháp YAML đầy mơ hồ của Kubernetes: KYAML (KEP 5295) chính thức ra mắt ở trạng thái ổn định. Đây là một tập con của YAML với định dạng chuẩn hóa theo Kubernetes norms, giúp manifest dễ dàng được phân tích bởi các công cụ khác. Điểm khác biệt chính là yêu cầu nghiêm ngặt về quoting chuỗi và không quan tâm đến khoảng trắng.
"Đây không phải là một cuộc di cư mà là một thói quen tốt hơn" — Kashish Verma, sinh viên khoa học máy tính, nhận xét trong blog Kubernetes gần đây.
Người dùng không cần thay đổi manifest hiện tại, KYAML không thay thế YAML, và kubectl đã hiểu ngôn ngữ này từ sẵn. Với việc 82% người dùng container chạy Kubernetes trong production (tăng từ 66% năm 2023) và 66% tổ chức chạy mô hình genAI dùng Kubernetes để quản lý workload inference, những cải tiến về độ ổn định này hứa hẹn sẽ giảm thiểu đáng kể rủi ro vận hành cho cộng đồng sử dụng công nghệ này tại Việt Nam và toàn cầu.