磁盘空间不足

harbor使用一段时间后,出现假死现象 或者
pull / build  报错no space left on device 或者
执行build提示构建镜像成功,但是docker images看不到镜像信息,此时很有可能就是docker磁盘空间满了
排查及解决如下:

查看docker镜像存放目录空间大小
du -hs /var/lib/docker/ 查看磁盘容量大的空间,且在上面创建新的docker目录。 df -h mkdir -p opt/data/lib 停止docker服务。 systemctl stop docker 迁移/var/lib/docker目录下的文件到新创建的目录/data/docker/lib rsync -avz /var/lib/docker opt/data/lib 编辑 /etc/docker/daemon.json 添加如下参数 vi /etc/docker/daemon.json { "graph": "opt/data/docker/lib/docker" } systemctl daemon-reload && systemctl restart docker 验证 docker info

常见docker清理方法

docker system df 类似于Linux上的df命令,用于查看Docker的磁盘使用情况:

docker system prune 可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。

docker system prune -a 清理得更加彻底,可以将没有容器使用Docker镜像都删掉。注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉了

k8s、etcd由于磁盘没有空间瘫痪问题排查

集群空间沾满问题处理
首先空间迁移方案:软连接 
默认docker 及 kubelet目录:/var/lib/ 下,我们将其都迁移到,。/opt下的某个目录下:
# mv /var/lib/docker /var/lib/docker-bak
建立软连接
# ln -s 源文件 目标文件
问题:删除原来的数据时报错Device or resource busy   
原因:docker/kubelet挂载的问题,导致文件无法删除,
解决方案: 
执行命令
# mount
找到包含原来/var/lib/docker /var/lib/kubelet
# umount /var/lib/docker-bak/overlay2/bcb3739ab39e056b12f4d7f86caff5f500cb43b2f29a180871e8b566e18016dd/merged 
#rm -rf /var/lib/docker-bak/*
至此迁移成功

过段时间发现系统盘还是满了,排查思路:
# du -h --max-depth=1 / 盘下最大的目录   >> /var
# du -h --max-depth=1 /var/  >> /var/log
# cd /var/log
# ll -h    #message 日志文件非常大,所以好奇看一下,发下就是k8s的日志,可能是日志等级的问题,日志一直在刷新,平均一周的日质量在3G以上
#tail -n 100 message
定期删除个日志文件即可
所以etcd集群最好独立部署,面得忘记清理,k8s把磁盘占满,导致etcd集群无法运行,整个集群状态就崩了

最近有遇到系统盘被沾满,使用上面的措施并不能解决问题,关键是,du命令查看,根本没有用这么多,提供下面方法
上面的方法应该删除了文件,但是空间没有释放,重启可以解决,但不是最好的方法,
使用
lsof -w | grep deleted 查看所有被删除但没有释放的进程
 kill pid 即可
看疗效真的下一跳瞬间从100-》30

  附上k8s日志级别

--v=0   Generally useful for this to ALWAYS be visible to an operator.
--v=1   A reasonable default log level if you don’t want verbosity.
--v=2   Useful steady state information about the service and important log messages that may correlate to significant changes in the system. This is the recommended default log level for most systems.
--v=3   Extended information about changes.
--v=4   Debug level verbosity.
--v=6   Display requested resources.
--v=7   Display HTTP request headers.
--v=8   Display HTTP request contents

原文地址:https://www.cnblogs.com/Hale-wang/p/13085173.html