2016-12-29 4 views
7

完了したジョブをクリーンナップでクリーンアップする以外に、完了したジョブを自動的に削除する方法はありますか?完了したKubernetesジョブを自動的に削除するにはどうすればよいですか?

K8s Job Documentationは、完了したジョブの意図された動作が、手動で削除されるまで完了した状態のままであることを示しています。私はk8sのcronジョブを使って1日に何千ものジョブを実行しているので、私は完了した仕事を維持したくありません。私は、このように、少なくともkubernetesをさせる、ジョブ名および特定の条件に基づいて、このクリーンアップを行うにはポッドを実行しますhttp://kubernetes.io/docs/user-guide/jobs/#job-termination-and-cleanup

を参照してください、「それは古いジョブを削除するにはユーザー次第です」ドキュメントに記載されているように

答えて

2

あなたのプロセスの可用性をここで注意してください。あなたはこれに対して繰り返し仕事をすることができます(kubernetes 1.5を実行していると仮定します)。

3

cronジョブを実行することにより、それらを削除する簡単な方法:

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

テキスト出力を解析することはお勧めできません。代わりに、jsonをリクエストし、jqで解析し、結果を反復処理する必要があります。 –

10

失敗または成功したジョブが無期限の周りに保持されないように、あなたは今、完全に歴史を歴史の制限を設定、または無効化することができます。私の答えhereを参照してください。ドキュメントはhereです。

2

私は最近、この作業を行うためにkubernetes-operatorを構築しました。

展開後、エラー/再起動なしで完了した場合、選択した名前空間を監視し、完了したジョブ/ポッドを削除します。

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

+2

答えとしてツールやライブラリを投稿しないでください。少なくとも、その問題を解決する方法(http://meta.stackoverflow.com/a/251605)を解答そのものに示してください。 –

関連する問題