Docker vs Kubernetes
Kubernetes vs. Docker – Warum du beides brauchst und nicht gegeneinander ausspielst Die Frage, ob man Kubernetes oder Docker verwenden sollte, ist vollkommen falsch gestellt. Die beiden Technologien …
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.
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.
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
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.
Kubernetes vs. Docker – Warum du beides brauchst und nicht gegeneinander ausspielst Die Frage, ob man Kubernetes oder Docker verwenden sollte, ist vollkommen falsch gestellt. Die beiden Technologien …
Einleitung In der Welt der Kubernetes-Orchestrierung spielt der Ingress NGINX Controller eine zentrale Rolle, da er als Gateway für den Datenverkehr zu den Applikationen innerhalb des Clusters dient. …
Die unsichere Zukunft des EU-US-Datentransfers Die regulatorische Unsicherheit rund um den Datenaustausch zwischen der EU und den USA nimmt erneut zu. Nachdem US-Präsident Donald Trump drei Mitglieder …
Kubernetes v1.32: Optimierung Ihrer Container-Infrastruktur mit ayedo In der dynamischen Welt der Container-Orchestrierung spielt Kubernetes eine zentrale Rolle. Bei ayedo, den Experten für Docker und …
NIS2-Richtlinie: Warum jetzt der perfekte Zeitpunkt für mehr Sicherheit ist – Ayedo zeigt den Weg Die Einführung der NIS2-Richtlinie hat einige Wellen in der Welt der Container-Technologien …
Interessiert an weiteren Inhalten? Hier gehts zu allen Blogs →