5 điểm bởi mrchypark 2025-11-18 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp

Xin chào, khi vận hành một cụm K8s, thường có nhiều trường hợp bị lộn xộn vì các pod mắc CrashLoopBackOff, các pod ở trạng thái ImagePullBackOff, hoặc các pod bị bỏ lại ở trạng thái Succeeded hay Failed sau khi batch đã hoàn tất.

Để giải quyết vấn đề những pod này lãng phí tài nguyên và gây cản trở việc giám sát, tôi đã phát triển toán tử K8s kube-depod dựa trên Rust.

kube-depod không phải là một trình dọn dẹp TTL đơn giản. Nó tập trung vào tính linh hoạtđộ an toàn.


🚀 Tính năng cốt lõi

1. Công cụ chính sách CEL mạnh mẽ
Không chỉ là các pod “đã qua 10 phút”, bạn có thể tạo các chính sách tinh vi hơn nhiều thông qua CEL (Common Expression Language).

# Ví dụ: chỉ xóa các pod CrashLoopBackOff có số lần khởi động lại từ 5 trở lên  
when:  
  type: "CEL"  
  expression: |  
    status.containerStatuses.exists(c,  
      has(c.state.waiting) &&  
      c.state.waiting.reason == 'CrashLoopBackOff' &&  
      c.restartCount >= 5  
    )  

(Hỗ trợ nhiều biến như age, status.phase, v.v.)

2. Cách tiếp cận 'Opt-In' giúp ngăn sự cố
kube-depod không giám sát mọi pod trong cụm. Nó chỉ xem những pod mà người dùng đã thêm annotation một cách rõ ràng như kube-depod/policy: "my-policy" là đối tượng cần dọn dẹp (Opt-In). Điều này chặn ngay từ đầu các sự cố xóa nhầm những pod quan trọng.

3. Các cơ chế an toàn cho production

  • Hỗ trợ PDB: Hỗ trợ hành động Evict thay cho Delete, giúp tôn trọng Pod Disruption Budget (PDB) và loại bỏ pod một cách an toàn.
  • DryRun: Có thể kiểm tra an toàn cách chính sách sẽ hoạt động bằng dryRun: true.
  • Giới hạn tốc độ (Rate Limiting): Giới hạn số lần xóa mỗi phút để tránh quá tải API server hoặc làm cụm mất ổn định.
  • Bảo vệ namespace hệ thống: Các namespace cốt lõi như kube-system được bảo vệ mặc định.

4. Hiệu năng cao và khả năng quan sát tuyệt vời

  • Được viết bằng Rust và sử dụng image Distroless nên nhẹ và nhanh.
  • Hướng tới hiệu năng cao bằng cách tận dụng ArcSwap (bộ nhớ đệm chính sách không khóa), DashMap (bộ nhớ đệm biên dịch CEL), v.v.
  • Có thể dễ dàng gỡ lỗi trạng thái vận hành thông qua metric Prometheus và phản hồi trạng thái CRD (ví dụ: InvalidCEL).

Có khá nhiều công cụ tương tự, nhưng hiếm có công cụ nào tập trung vào độ an toàn khi vận hành như sự linh hoạt của CEL, hỗ trợ PDB và thiết kế Opt-In.

Helm chart cũng đã được chuẩn bị sẵn nên có thể cài đặt dễ dàng.
Tôi hy vọng nó sẽ hữu ích cho những ai muốn quản lý cụm K8s sạch hơn và hiệu quả hơn.

Kho GitHub: https://github.com/mrchypark/kube-depod

Tôi luôn hoan nghênh sự quan tâm và phản hồi! Xin cảm ơn.

Chưa có bình luận nào.

Chưa có bình luận nào.