使用virtualbox虛擬機運行k8s集羣,一段時間後虛擬機磁盤被佔滿
使用du -d 1 -h
查看後發現消耗內存最大的主要分爲兩部分:系統日誌systemd journal和/var/lib/docker/overlay2
目錄
使用系統爲ubuntu 22.04
systemd journal清理和限制大小
直觀清理
sudo journalctl --vacuum-time=2d # 按照想要保存的天數
sudo journalctl --vacuum-size=500M # 按照想要保存的大小
永久限制
journal的配置在/etc/systemd/journald.conf
,可以訪問文件查看並修改,也可以使用systemd-analyze cat-config systemd/journald.conf
查看
修改最大的存檔和活躍文件佔用大小,將下列參數取消註釋並賦值
SystemMaxUse=500M
SystemMaxFiles=10
RuntimeMaxUse=30M
RuntimeMaxFiles=10
重啓機器並查看更新
systemctl status systemd-journald.service
如果只修改內存中活躍的日誌文件的大小的話也可以直接重啓systemd.journald-service,這種情況不會顯示/var/log/journal的文件大小信息更新
systemctl restart systemd-journald.service
參考資料
控制日誌文件的大小
這裏有更詳細的每個參數的解釋
/var/lib/docker/overlay2目錄清理和限制大小
/var/lib/docker/overlay2
目錄下含有容器的讀寫層,如果容器使用自己的文件系統保存了數據,那麼就會寫到此目錄下
直觀清理
先用docker system df
看一下哪部分佔的空間比較多,然後做對應的處理
docker system prune # 清理磁盤,刪除關閉的容器、無用的數據卷和網絡,以及dangling鏡像
docker image prune # 刪除懸空的鏡像
docker container prune # 刪除無用的容器
docker volume prune # 刪除無用的卷
docker network prune # 刪除無用的網絡
永久限制
編輯/etc/docker/daemon.json
max-size=500m,意味着一個容器日誌大小上限是500M,
max-file=3,意味着一個容器有三個日誌,分別是id+.json、id+1.json、id+2.json。
{
"registry-mirrors": ["https://ch72w18w.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
“log-driver”:“json-file”,
"log-opts": {"max-size":"100m", "max-file":"3"}
}
參考資料
(Docker下var/lib/docker/overlay2空間清理辦法)[https://blog.csdn.net/m0_67402236/article/details/126327346]
(更多docker清理命令)[https://www.jianshu.com/p/f1c3e3508b8e]