开发者社区 > 云原生 > 容器服务 > 正文

容器服务ACK的节点机,磁盘空间被占满,直接使用crictl清理不用的镜像会影响kubelet么?

容器服务ACK的节点机,磁盘空间被镜像占满了,我看kubelet启动命令也没有带image-gc这样的清理参数。直接使用crictl清理不用的镜像会影响kubelet么?

展开
收起
三分钟热度的鱼 2024-01-10 13:51:40 216 0
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    您好,容器服务ACK是由阿里云提供的Kubernetes托管服务,如果对其非托管组件或运行在其上的应用进行不当操作,可能会导致业务故障。因此,当您考虑使用crictl清理不再需要的镜像时,需要确保这不会影响kubelet的正常运行。

    首先,您可以通过以下命令来快速排查磁盘空间被占满的原因:

    • docker info | grep 'Docker Root Dir':检查Docker存储目录;
    • docker system df:查看容器磁盘使用情况;
    • df -hT:检查宿主机磁盘空间使用情况;
    • df -i:检查宿主机Inode使用情况。

    容器要在节点上运行,kubelet首先要拉取容器镜像到节点本地,然后再根据镜像创建容器。随着Pod的调度和程序的升级,节点本地可能会保存大量的容器镜像,从而占用大量存储空间。如果使用的是Docker容器运行时,这些文件主要保存在/var/lib/docker/image/overlay2目录下。而关于容器的可写层,它是每个容器特有的,并且存在于容器当前节点的本地存储中。

    如果您决定使用crictl清理不再需要的镜像,建议先标记相关的Node为不可调度,然后查找哪个容器输出日志占用最大,并确保在清理过程中不会影响到正在运行的Pod。此外,建议您定期检查和清理不再使用的镜像,以确保集群的健康和稳定运行。

    2024-01-13 15:49:34
    赞同 展开评论 打赏
  • 您好,容器服务ACK的节点机磁盘空间被镜像占满,通常是由于节点上的容器占用磁盘过多、镜像文件过大导致节点的磁盘空间不足。当节点的可用磁盘空间低于imagefs.available配置项时,则节点状态中DiskPressure为True。

    直接使用crictl清理不用的镜像不会直接影响kubelet,因为kubelet主要负责管理Kubernetes集群中的容器,而crictl是用于与容器运行时(如Docker)进行交互的工具。但是,为了确保安全和稳定,建议在进行任何操作之前先备份重要数据。

    在清理镜像之前,您可以使用以下命令来快速排查磁盘占满原因:

    • 检查Docker存储目录:docker info | grep 'Docker Root Dir'
    • 查看容器磁盘使用情况:docker system df
    • 检查宿主机磁盘空间使用情况:df -hT
    • 检查宿主机Inode使用情况:df -i

    如果您决定清理不需要的镜像来释放磁盘空间,可以使用以下命令:echo > /var/lib/docker/containers/*/*.log来清空日志文件,从而释放磁盘空间。但请确保在执行此操作之前已经腾出一点磁盘空间,并小心操作,避免误删除重要数据。

    2024-01-13 09:38:36
    赞同 展开评论 打赏
  • 不会。此回答整理自钉群“容器服务ACK 用户交流-1群”

    2024-01-10 16:24:16
    赞同 展开评论 打赏

国内唯一 Forrester 公共云容器平台领导者象限。

相关产品

  • 容器服务Kubernetes版
  • 相关电子书

    更多
    ACK 云原生弹性方案—云原生时代的加速器 立即下载
    ACK集群类型选择最佳实践 立即下载
    企业运维之云原生和Kubernetes 实战 立即下载