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

yvgpqqbh  于 2023-06-21  发布在  Kubernetes
关注(0)|答案(2)|浏览(724)

今天发现宿主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的磁盘空间。能把这个文件夹缩小吗?

knsnq2tg

knsnq2tg1#

目录/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs是containerd持久化各种容器和图像层的地方。根据节点上运行的容器下载这些层。如果我们开始耗尽空间,kubelet可以垃圾收集未使用的图像-这将减少这个目录的大小。如果需要,客户还可以为节点池配置 Boot 磁盘的大小。
预计这将从创建节点时起增长。但是,当节点磁盘使用率高于85%时,垃圾收集将尝试识别可以删除的映像。它可能无法删除图像,但如果它们当前正在由运行在节点上的现有容器使用,或者它们最近被拉取。
如果你想用containerd删除未使用的容器映像,你可以使用下面的命令:

$crictl rmi --prune

您也可以使用**$ docker image prune**命令清理未使用的镜像。默认情况下,docker image prune只清理悬挂的图像。悬空图像是未标记且未被任何容器引用的图像。
要删除现有容器未使用的所有镜像,请使用-a标志:

$ docker image prune -a

a14dhokn

a14dhokn2#

您可以通过将ImageGCHighThresholdPercent减少到小于驱动器上已有的数据量来触发Kubernetes的内置垃圾收集。默认情况下,它在85%时触发。
在k3s上,它没有独立的kubelet,你可以在/etc/rancher/k3s/config.yaml中使用命令行标志来设置:

kubelet-arg:
  - "image-gc-high-threshold=74"
  - "image-gc-low-threshold=70"

相关问题