
Ich habe einen Kubernetes-Cluster mit einem einzigen Knoten und habe eine Benachrichtigung erhalten, dass die Festplattennutzung über 70 % liegt. Wenn ich eine Shell auf dem Knoten starte und ausführe, df
sehe ich, dass /
75 % der verfügbaren Blöcke genutzt werden. Ich sehe auch eine Reihe von Einträgen wie diesen:
overlay 51432064 36953456 12350764 75% /run/containerd/io.containerd.runtime.v2.task/k8s.io/47d405a81214ec9b81ccdffae3674260fa2946d30bdd3b398aa1c2d283c8577e/rootfs
overlay 51432064 36953456 12350764 75% /run/containerd/io.containerd.runtime.v2.task/k8s.io/569d1fe262f6bf1a59ca99163f231a426d2251ac1beabc47a0393066f48b3e0e/rootfs
overlay 51432064 36953456 12350764 75% /run/containerd/io.containerd.runtime.v2.task/k8s.io/32d14863f46e922b7e0b2bbee8a5321c5fabb5811352449d90e486b94161a8cb/rootfs
overlay 51432064 36953456 12350764 75% /run/containerd/io.containerd.runtime.v2.task/k8s.io/8c3fa2f9467e792036782e9587f748f846d61fdc23d9afaecc7e7835e6db4f2b/rootfs
overlay 51432064 36953456 12350764 75% /run/containerd/io.containerd.runtime.v2.task/k8s.io/626b21093218edcda466ce6d4f31e7b975a0c0473d233fc062ed657499541fc9/rootfs
overlay 51432064 36953456 12350764 75% /run/containerd/io.containerd.runtime.v2.task/k8s.io/c1a7484e1beca4ec1299fc5017002d6fecc9890c86e3246a8bdf53fcc45cf576/rootfs
Ich habe zwei Dienste, die persistente Volumes (keine Host-Volumes) verwenden, und mir fällt nichts anderes als Docker-Images ein, das den gesamten Speicher belegen könnte.
Wie kann ich herausfinden, was so viel Speicher in meinem Kubernetes-Cluster verbraucht?
Antwort1
Um herauszufinden, was die Festplatte Ihres Knotens in Kubernetes verwendet, können Sie die folgenden Schritte ausführen:
Melden Sie sich per SSH bei Ihrem Knoten an.
Installieren Sie das
ncdu
Paket mit dem folgenden Befehl auf Ihrem Knoten:sudo apt-get install ncdu
Führen Sie es
ncdu
im Stammverzeichnis Ihres Knotens mit dem folgenden Befehl aus:sudo ncdu /
Warten Sie,
ncdu
bis der Scan der Festplatte Ihres Knotens abgeschlossen ist. Es wird eine Liste der Verzeichnisse und ihrer jeweiligen Größe angezeigt.Navigieren Sie mit den Pfeiltasten durch die Verzeichnisse und Unterverzeichnisse, um herauszufinden, welches den meisten Speicherplatz beansprucht.
Wenn Sie das Verzeichnis identifiziert haben, das den meisten Speicherplatz beansprucht, können Sie
kubectl
mit dem folgenden Befehl herausfinden, welcher Pod es verwendet:kubectl describe pod <pod-name>
Ersetzen Sie es
<pod-name>
durch den Namen des Pods, den Sie überprüfen möchten.Suchen Sie
Volume
in der Ausgabe deskubectl describe pod
Befehls nach dem Abschnitt. Er zeigt Ihnen den PVC (Persistent Volume Claim), der auf dem Pod gemountet ist.Verwenden Sie
kubectl
zur Beschreibung des PVC den folgenden Befehl:kubectl describe pvc <pvc-name>
Ersetzen Sie es
<pvc-name>
durch den Namen des PVC, das auf der Kapsel montiert wurde.Suchen Sie in der Ausgabe des Befehls nach den Abschnitten
StorageClass
und . Darin erfahren Sie, welche StorageClass der PVC verwendet und wie darauf zugegriffen wird.Access Modes
kubectl describe pvc
Überprüfen Sie die StorageClass-Konfiguration, um festzustellen, ob Speichergrenzen oder -kontingente festgelegt sind, die möglicherweise Probleme bei der Datenträgernutzung verursachen.
Wenn Sie diese Schritte befolgen, sollten Sie in der Lage sein, zu ermitteln, welcher Pod den meisten Speicherplatz auf Ihrem Knoten in Kubernetes verwendet.