k8s長期運行後磁盤佔滿的清理

使用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]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章