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