Kubernetes Job Cleanup
Aus, was ich verstehe, der Job-Objekt soll reap-pods nach einer gewissen Zeit.
Aber auf meinem GKE-cluster (Kubernetes 1.1.8) es scheint, dass "kubectl bekommen pods -eine" kann-Liste "pods" von Tagen.
Alle wurden mit der Jobs-API.
Ich habe bemerkt, dass nach dem löschen der job mit
kubectl löschen von jobs
Die Hülsen wurden ebenfalls gelöscht.
Meine größte Sorge hier ist, dass ich dabei bin zu laufen, Tausende und Zehntausende von Hülsen auf die cluster in batch-jobs, und nicht wollen, um eine überlastung des internen backlog-system.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es aus wie ab mit Kubernetes 1.6 (und die v2alpha1 api-version), wenn du mit cronjobs, die Arbeitsplätze zu schaffen (dass, wiederum, erstellen Sie Ihre "pods"), Sie werden in der Lage sein, um limit, wie viele alte Arbeitsplätze gehalten werden. Fügen Sie einfach die folgenden, um Ihren job spec:
Wobei X und Y sind die Grenzen, wie viele zuvor Aufträge ausführen, sollte das system halten um (das macht die jobs, um auf unbestimmte Zeit standardmäßig [mindestens auf version 1.5.])
Bearbeiten 2018-09-29:
Für neuere K8S-Versionen, aktualisierte links mit der Dokumentation befinden sich hier:
https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/ (unten auf der Seite)
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.10/#cronjob-v1beta1-batch
kubectl version
Es ist wahr, dass Sie verwendet haben, um zu löschen, jobs manuell. @puja ' s Antwort richtig war, zu der Zeit des Schreibens.
Kubernetes 1.12.0 veröffentlicht eine TTL-Funktion (in der alpha), in dem Sie festlegen können, dass es automatisch bereinigen Arbeitsplätze eine angegebene Anzahl von Sekunden nach Abschluss (changelog). Sie können setzen Sie ihn auf null für die sofortige Bereinigung. Finden Sie die Jobs docs.
Beispiel aus der doc:
Dies ist das beabsichtigte Verhalten der Arbeitsplätze auch in Kubernetes 1.3. Sowohl der job und seine Hülsen bleiben im system, bis Sie Sie manuell löschen. Dies ist, um Sie mit einem Weg, um Ergebnisse zu sehen der Hülsen (z.B. durch Protokolle), dass waren nicht nach außen transportiert durch irgendein Mechanismus schon oder überprüfen Sie, ob Fehler, Warnungen oder anderen diagnostischen Leistung.
Empfohlen/offizielle Weg, um loszuwerden des pods ist, löschen Sie den Auftrag wie oben erwähnt. Mithilfe der garbage collector würde nur löschen Sie die pods, aber der job selbst würde sich noch im system sein.
Wenn Sie nicht möchten, löschen Sie den job manuell, könnten Sie schreiben Sie ein kleines Skript, das ausgeführt wird in Ihrem cluster und prüft für abgeschlossene Aufträge und löscht Sie. Leider, Geplante Aufträge werden nur kommen in 1.4 aber man könnte das script in einem normalen pod statt.
In kubernetes v1.2, es gibt einen garbage-collector für die Ernte beendet Hülsen mit einem globalen Schwellwert
--terminated-pod-gc-threshold=12500
(siehe die Flaggen in controller-manager. Ich kenne keine GC-Mechanismus für beendet Hülsen in v1.1.8. Sie möchten möglicherweise führen Sie ein Skript/pod regelmäßig reinigen, bis die Hülsen/jobs um zu verhindern, dass die master-Komponenten überwältigt wird. Übrigens, es gibt eine offene Frage zu passen Sie automatisch die GC-Schwellenwert.Ich vor kurzem eine kubernetes-operator, um diese Aufgabe zu erfüllen.
Nach der Bereitstellung überwachen gewählten Namensraum und löschen von abgeschlossenen Aufträgen/Hülsen, wenn Sie ohne Fehler abgeschlossen/gestartet.
https://github.com/lwolf/kube-cleanup-operator