2016-12-29 17 views
7

Có cách nào để tự động xóa các công việc đã hoàn thành ngoài việc tạo một cronjob để xóa các công việc đã hoàn thành không?Làm cách nào để tự động xóa các công việc Kubernetes đã hoàn thành?

K8s Job Documentation nói rằng hành vi dự định của công việc đã hoàn thành là để chúng duy trì ở trạng thái đã hoàn thành cho đến khi xóa theo cách thủ công. Bởi vì tôi đang chạy hàng ngàn công việc một ngày thông qua cronjobs k8s và tôi không muốn giữ cho công việc hoàn thành xung quanh.

Trả lời

2

Như đã trình bày trong tài liệu "Đó là vào người sử dụng để xóa công việc cũ", xem http://kubernetes.io/docs/user-guide/jobs/#job-termination-and-cleanup

tôi sẽ chạy một pod để làm dọn dẹp này dựa trên tên công việc và điều kiện nhất định, do đó cho phép kubernetes ít nhất chăm sóc sự sẵn có của quá trình của bạn ở đây. Bạn có thể chạy một công việc định kỳ cho điều này (giả sử bạn chạy kubernetes 1.5).

3

Một cách đơn giản để xóa chúng bằng cách chạy một công việc định kỳ:

kubectl get jobs --all-namespaces | sed '1d' | awk '{ print $2, "--namespace", $1 }' | while read line; do kubectl delete jobs $line; done 
+0

Không nên phân tích cú pháp đầu ra văn bản. Thay vào đó, bạn nên yêu cầu một json, phân tích nó bằng jq và lặp lại kết quả. –

10

Bây giờ bạn có thể thiết lập giới hạn lịch sử, hoặc vô hiệu hóa lịch sử hoàn toàn, do đó công việc thất bại hay thành công không được giữ xung quanh vô thời hạn. Xem câu trả lời của tôi here. Tài liệu là here.

2

Gần đây tôi đã xây dựng một toán tử kubernetes để thực hiện tác vụ này.

Sau khi triển khai, nó sẽ giám sát không gian tên đã chọn và xóa các công việc/nhóm đã hoàn thành nếu chúng hoàn thành mà không có lỗi/khởi động lại.

https://github.com/lwolf/kube-cleanup-operator

+2

Vui lòng không chỉ đăng một số công cụ hoặc thư viện làm câu trả lời. Ít nhất là chứng minh [cách giải quyết vấn đề] (http://meta.stackoverflow.com/a/251605) trong chính câu trả lời. –

Các vấn đề liên quan