是否可以缩小 kubernetes 中 io.containerd.snapshotter.v1.overlayfs 文件夹的空间

is it possible to shrink the spaces of io.containerd.snapshotter.v1.overlayfs folder in kubernetes

今天我发现主机 kubernetes(v1.21.3) 文件夹 io.containerd.snapshotter.v1.overlayfs 占用太多空间:

[root@k8smasterone kubernetes.io~nfs]# pwd
/var/lib/kubelet/pods/8aafe99f-53c1-4bec-8cb8-abd09af1448f/volumes/kubernetes.io~nfs
[root@k8smasterone kubernetes.io~nfs]# duc ls -Fg /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/
 13.5G snapshots/   [++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++]
  2.2M metadata.db  [

它需要 13.5GB 的磁盘空间。可以缩小这个文件夹吗?

目录/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs 是containerd 保存各种容器和镜像层的地方。这些层是根据节点上的容器 运行 下载的。如果我们从 space 开始 运行,kubelet 有能力垃圾收集未使用的图像——这将减少这个目录的大小。如果需要,客户还可以为 node-pools 配置启动磁盘的大小。

预计这将从创建节点时开始增长。然而,当节点磁盘使用率超过 85% 时,垃圾收集将尝试识别可以删除的图像。它可能无法删除图像,但如果它们当前正在被节点上的现有容器 运行 使用,或者它们最近被拉出。

如果你想只使用 containerd 删除未使用的容器镜像,你可以使用以下命令:

$crictl rmi --prune

您也可以使用$ docker image prune 命令清理未使用的图像。默认情况下,docker image prune 只清理悬挂图像。悬挂图像是未标记且未被任何容器引用的图像。

要删除现有容器未使用的所有图像,请使用 -a 标志:

$ docker image prune -a