2016-12-29 40 views
7

Czy istnieje sposób automatycznego usuwania zakończonych zadań poza robieniem cronów do sprzątania zakończonych zadań?Jak automatycznie usunąć zakończone prace Kubernetes?

Kod stwierdza, że ​​zamierzonym zachowaniem zakończonych zadań jest pozostawienie ich w stanie gotowym do czasu ręcznego usunięcia. Ponieważ pracuję tysiącami zleceń dziennie za pośrednictwem cronjobs k8s i nie chcę utrzymywać ukończonych zadań w pobliżu.

Odpowiedz

2

Jak podano w dokumentacji „To zależy od użytkownika, aby usunąć stare zadania”, patrz http://kubernetes.io/docs/user-guide/jobs/#job-termination-and-cleanup

chciałbym uruchomić kapsułę to zrobić porządki na podstawie nazwy zadania i pewnych warunków, a tym samym pozwalając kubernetes przynajmniej zadbaj o dostępność swojego procesu tutaj. Możesz uruchomić powtarzającą się pracę (zakładając, że uruchomisz pakiet kubernetes 1.5).

3

Prosty sposób, aby usunąć je uruchamiając crona:

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

Nie jest zalecane analizowanie tekstu. Zamiast tego powinieneś poprosić o json, przeanalizować go za pomocą jq i powtórzyć wynik. –

10

Teraz można ustawić limity historii, historii lub wyłączyć całkowicie, tak że nieudane lub udane zadania nie są przechowywane wokół nieskończoność. Zobacz moją odpowiedź here. Dokumentacja to here.

2

Niedawno zbudowałem operatora kubernetes, aby wykonać to zadanie.

Po wdrożeniu monitoruje wybrany obszar nazw i usuwa zakończone zadania/strąki, jeśli zostały ukończone bez błędów/ponownych uruchomień.

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

+2

Proszę nie umieszczać narzędzia lub biblioteki jako odpowiedzi. Przynajmniej zademonstruj [jak rozwiązuje problem] (http://meta.stackoverflow.com/a/251605) w samej odpowiedzi. –