Kubernetes Garbage Collection: Mit Terminating Pods aufräumen

Kubernetes Life-Hack - Schluss mit “Pod stuck in terminating state”. Egal ob Volume Mounts fehlschlagen oder neue Replicas hängen bleiben - ein einfacher Kubernetes CronJob reicht, um mit endlos terminierenden Pods aufzuräumen.

Meta: Fabian Peter · 17.08.2023 · ⏳ 1 Minute · Alle Blogs →
Tagskubernetes

Mit ayedo ist der Betrieb Ihrer Apps in Kubernetes ein Kinderspiel. Hin und wieder reichen die Boardmittel allerdings nicht aus, um den reibungslosen Betrieb Ihrer Anwendungen sicherzustellen. Einen nützlichen kleinen Life-Hack im Zusammenhang mit Terminating Pods möchten wir Ihnen in diesem Artikel vorstellen. Noch kein Kubernetes Cluster?

Mit ayedo Fleet können Sie Kubernetes 30 Tage kostenlos testen, ohne die operativen Kopfschmerzen. Probieren Sie’s aus.

Kubernetes Garbage Collection

Der CronJob:

apiVersion: batch/v1
kind: CronJob
metadata:
  name: garbage-collector-cronjob
  namespace: kube-system
spec:
  schedule: '*/1 * * * *'
  concurrencyPolicy: Forbid
  suspend: false
  jobTemplate:
    metadata:
      creationTimestamp: null
    spec:
      parallelism: 1
      completions: 1
      backoffLimit: 0
      template:
        metadata:
          creationTimestamp: null
        spec:
          volumes:
            - name: scripts
              configMap:
                name: garbage-collector-cm
                defaultMode: 320
          containers:
            - name: garbage-collector
              image: alpine/k8s:1.25.12
              command:
                - /scripts/remove-evicted-pods-all-ns.sh
              resources: {}
              volumeMounts:
                - name: scripts
                  mountPath: /scripts
              terminationMessagePath: /dev/termination-log
              terminationMessagePolicy: File
              imagePullPolicy: IfNotPresent
          restartPolicy: Never
          terminationGracePeriodSeconds: 30
          dnsPolicy: ClusterFirst
          securityContext: {}
          schedulerName: default-scheduler

Und die dazugehörige ConfigMap:

#!/bin/bash
namespace=""
node=$(kubectl get node | grep "worker" | grep "NotReady" | awk '{print $1}')
for pod in $(kubectl get pods -A -o=JSON --field-selector spec.nodeName=${node} | jq -r '.items[] |
 select(.metadata.namespace | startswith("${namespace}")) | .metadata.name') ; do
  namespace=$(kubectl get pods -A -o=JSON --field-selector metadata.name=${pod}| jq -r ' .items[] .metadata.namespace')
  echo "Killing pod ${namespace}/${pod}"
  kubectl delete pod -n ${namespace} --force ${pod}
done
ayedo Alien Kubernetes Hat

Hosten Sie Ihre Apps bei ayedo

Profitieren Sie von skalierbarem App Hosting in Kubernetes, hochverfügbarem Ingress Loadbalancing und erstklassigem Support durch unser Plattform Team. Mit der ayedo Cloud können Sie sich wieder auf das konzentrieren, was Sie am besten können: Software entwickeln.

Jetzt ausprobieren →

Ähnliche Inhalte

Alle Blogs →



Katrin Peter · 03.06.2025 · ⏳ 2 Minuten

Application Performance sollte messbar sein — jederzeit, in Echtzeit

Wer Anwendungen produktiv betreibt, braucht keine schönen Dashboards, sondern harte Daten. Performance-Probleme entstehen nie dann, wenn Zeit für Debugging ist. Sie kommen genau dann, wenn Systeme …

Lesen →

Application Performance sollte messbar sein — jederzeit, in Echtzeit
Katrin Peter · 03.06.2025 · ⏳ 2 Minuten

Warum betreibt ihr eure App eigentlich noch selbst?

Die Frage stellt sich immer wieder. Entwicklerteams liefern Features, optimieren Releases, bauen saubere Architekturen — und dann hängen sie trotzdem noch in der Infrastruktur. Kubernetes-Cluster …

Lesen →

Warum betreibt ihr eure App eigentlich noch selbst?
Katrin Peter · 03.06.2025 · ⏳ 2 Minuten

IIoT-Daten nützen nichts, wenn sie in der Maschine vergammeln

Die meisten IIoT-Projekte scheitern nicht an den Maschinen. Die Sensorik läuft. Die Steuerungen liefern Daten. Die Netzwerke übertragen Pakete. Das Problem beginnt eine Ebene höher: Die Daten landen …

Lesen →

IIoT-Daten nützen nichts, wenn sie in der Maschine vergammeln
Katrin Peter · 03.06.2025 · ⏳ 3 Minuten

App-Hosting auf Kubernetes — komplett gemanaged

Softwareentwicklung endet nicht beim Code Wer heute Applikationen für Kunden entwickelt, steht schnell vor dem nächsten Thema: Wie wird die Software produktiv betrieben? Wo laufen Staging und …

Lesen →

App-Hosting auf Kubernetes — komplett gemanaged
Katrin Peter · 01.06.2025 · ⏳ 4 Minuten

IT/OT-Integration mit Kubernetes: Architektur für industrielle Echtzeitdatenverarbeitung

Warum IT und OT zusammenwachsen müssen In modernen Industrieumgebungen entstehen an der Schnittstelle zwischen Produktion und Unternehmens-IT zunehmend komplexe Datenströme. Produktionsanlagen, …

Lesen →

IT/OT-Integration mit Kubernetes: Architektur für industrielle Echtzeitdatenverarbeitung

Interessiert an weiteren Inhalten? Hier gehts zu allen Blogs →


Noch Fragen? Melden Sie sich!

Unsere DevOps-Experten antworten in der Regel innerhalb einer Stunde.

Zu Gen-Z für E-Mail? Einfach mal Discord versuchen. Unter +49 800 000 3706 können Sie unter Angabe Ihrer Kontaktdaten auch einen Rückruf vereinbaren. Bitte beachten Sie, dass es keine Möglichkeit gibt, uns telefonisch direkt zu erreichen. Bitte gar nicht erst versuchen. Sollten Sie dennoch Interesse an synchroner Verfügbarkeit via Telefon haben, empfehlen wir Ihnen unseren Priority Support.