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

Dol*_*hin 13 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  [
Run Code Online (Sandbox Code Playgroud)

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

Jyo*_*ayi 16

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

预计该数量将从创建节点时开始增长。但是,当节点磁盘使用率高于 85% 时,垃圾收集将尝试识别可以删除的映像。但如果节点上运行的现有容器当前正在使用图像或者最近已拉取图像,则可能无法删除图像。

如果您想仅使用 containerd 删除未使用的容器映像,可以使用以下命令:

$crictl rmi --prune

您还可以使用该$ docker image prune命令来清理未使用的图像。默认情况下,docker image prune 仅清理悬挂镜像。悬空图像是一种未标记且不被任何容器引用的图像。

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

$ docker image prune -a