磁盤空間不足


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM