我如何找出 kubernetes 中正在使用我的节点的磁盘的内容?

我如何找出 kubernetes 中正在使用我的节点的磁盘的内容?

我有一个单节点 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 中哪些设备在使用你的 Node 磁盘,你可以按照以下步骤操作:

  1. 通过 SSH 进入你的节点。

  2. ncdu使用以下命令在您的节点上安装该包:

    sudo apt-get install ncdu
    
  3. ncdu使用以下命令在 Node 的根目录上运行:

    sudo ncdu /
    
  4. 等待ncdu扫描完节点的磁盘。它将显示目录列表及其各自的大小。

  5. 使用箭头键浏览目录和子目录,找出哪个目录占用了最多的磁盘空间。

  6. 一旦确定了占用空间最多的目录,您就可以kubectl通过运行以下命令来找出哪个 pod 正在使用该目录:

    kubectl describe pod <pod-name>
    

    替换<pod-name>为您要检查的 pod 的名称。

  7. Volume在命令的输出中查找部分kubectl describe pod。它将向您显示安装在 pod 上的 PVC(持久卷声明)。

  8. 使用kubectl以下命令来描述 PVC:

    kubectl describe pvc <pvc-name>
    

    替换<pvc-name>为安装在 pod 上的 PVC 的名称。

  9. 在命令的输出中查找StorageClass和部分。它将告诉您 PVC 正在使用哪个 StorageClass 以及如何访问它。Access Modeskubectl describe pvc

  10. 检查 StorageClass 配置,查看是否设置了任何存储限制或配额,这可能会导致磁盘使用问题。

通过遵循这些步骤,您应该能够识别哪个 pod 在 Kubernetes 中的节点上使用最多的磁盘空间。

相关内容