
我有一個單節點 kubernetes 集群,我收到磁碟使用率超過 70% 的通知。當我在節點上獲得 shell 並運行時,df
我發現它/
使用了 75% 的可用區塊。我還看到很多這樣的條目:
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
我有兩個使用持久性磁碟區(不是主機磁碟區)的服務,除了 docker 映像之外,我想不出還有什麼可能會耗盡所有這些儲存。
我怎麼知道是什麼在我的 kubernetes 叢集上使用了這麼多儲存空間?
答案1
要了解 Kubernetes 中哪些節點正在使用您的節點磁碟,您可以按照以下步驟操作:
透過 SSH 連接到您的節點。
ncdu
使用以下命令在您的節點上安裝該套件:sudo apt-get install ncdu
ncdu
使用以下命令在節點的根目錄上運行:sudo ncdu /
等待
ncdu
完成掃描節點磁碟。它將顯示目錄列表及其各自的大小。使用箭頭鍵瀏覽目錄和子目錄,找出佔用磁碟空間最多的目錄和子目錄。
確定佔用空間最多的目錄後,您可以
kubectl
透過執行以下命令來找出哪個 pod 正在使用它:kubectl describe pod <pod-name>
替換
<pod-name>
為您要檢查的 Pod 的名稱。Volume
在命令的輸出中尋找該部分kubectl describe pod
。它將向您顯示安裝在 Pod 上的 PVC(持久卷聲明)。使用
kubectl
以下命令來描述 PVC:kubectl describe pvc <pvc-name>
替換
<pvc-name>
為安裝在 Pod 上的 PVC 的名稱。在命令的輸出中尋找
StorageClass
和部分。它會告訴您 PVC 正在使用哪個 StorageClass 以及如何存取它。Access Modes
kubectl describe pvc
檢查 StorageClass 配置,查看是否存在可能導致磁碟使用問題的任何儲存限製或配額設定。
透過執行這些步驟,您應該能夠識別 Kubernetes 中哪個 pod 使用了節點上最多的磁碟空間。