Nguồn: Kubernetes Blog
Tóm tắt
Kubernetes v1.36 giới thiệu tính năng giảm thiểu staleness (dữ liệu cũ) cho các controller, giải quyết một vấn đề lâu dài ảnh hưởng đến nhiều controller trong hệ sinh thái. Staleness xảy ra khi cache của controller chưa được cập nhật kịp với trạng thái thực tế của API server, dẫn đến các hành động không chính xác hoặc bị bỏ lỡ — thường chỉ được phát hiện khi đã xảy ra sự cố trong môi trường production.
Tính năng này cung cấp ba phương thức quan trọng: WroteAt để ghi nhận resource version mới nhất mà controller đã ghi lên API server, EnsureReady để kiểm tra trước khi reconcile xem cache có đủ mới không, và Clear để dọn dẹp khi đối tượng bị xóa. Cơ chế này cho phép các controller thực hiện “read your own writes” — đảm bảo rằng sau khi controller ghi dữ liệu, lần reconcile tiếp theo sẽ thấy thay đổi đó trong cache.
Bên cạnh đó, v1.36 bổ sung các metric quan sát mới trong kube-controller-manager. Metric stale_sync_skips_total theo dõi số lần controller bỏ qua sync do cache cũ, còn store_resource_version của client-go phơi bày resource version hiện tại của từng shared informer — giúp so sánh với API server để phát hiện độ trễ.
Nhóm SIG API Machinery đang tiếp tục tích hợp tính năng này vào controller-runtime, với mục tiêu cho phép mọi controller được xây dựng trên framework đó tự động được hưởng lợi mà không cần tự implement logic staleness mitigation.