Đây là trình dọn dẹp Pod K8s tự động tôi đã tạo: `kube-depod` (dựa trên CEL, hỗ trợ PDB)
(github.com/mrchypark)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 và độ 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
Evictthay choDelete, 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.