[teamai] Push 1 resource(s) from root
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
---
|
||||
name: "reclaim-cluster-disk"
|
||||
description: "集群磁盘占用高/要腾空间时,按安全顺序回收:journal、apt、docker、tmp、用户缓存(三台机通用)。"
|
||||
---
|
||||
|
||||
# 集群磁盘回收
|
||||
|
||||
触发:用户说「磁盘占用高」「清一下磁盘」「腾空间」「巡检一下,关注磁盘占用」。
|
||||
|
||||
三台机:**襄阳2c4g**(本机直接跑)、**十堰电信4c8g**(`ssh 十堰电信4c8g <cmd>`)、**阿里云**(`ssh aliyun <cmd>`)。
|
||||
|
||||
## 1. 先量
|
||||
|
||||
```bash
|
||||
df -h / # 每台,先记基线
|
||||
du -x -h --max-depth=1 / | sort -rh | head -15 # 一级大目录;很慢(>40s),用后台 process 轮询
|
||||
du -x -h --max-depth=1 /var/lib /root | sort -rh | head -20
|
||||
```
|
||||
|
||||
典型结论:`/var/lib`(containerd + k3s)是最大头但属运行必需;真正被忽略的是 journal、包缓存、/tmp、用户缓存。
|
||||
|
||||
## 2. 按风险从低到高回收
|
||||
|
||||
1. **归档日志**:`journalctl --vacuum-size=200M`(实测两台各回收 2.1G / 2.6G,只删已归档的)
|
||||
2. **包缓存**:`apt-get clean`(实测 ~135M / 196M)
|
||||
3. **宿主机 docker**(只对跑 docker 的机器;阿里云是 podman 模拟,看 `podman system df`):
|
||||
`docker system df` 看 RECLAIMABLE → `docker image prune -a -f` → `docker builder prune -a -f`(实测 776M + 1.3G;使用中的镜像会被自动跳过)
|
||||
4. **/tmp 里的过期包**:确认无用再删(实测 `searxng-image.tar`、`etcd.tar.gz`、`etcdctl`)
|
||||
5. **用户缓存**:`rm -rf ~/.cache/uv ~/.cache/ms-playwright ~/.npm`(实测 ~1.6G;会重新下载,可接受)
|
||||
6. **不用的自装服务**(可选):`systemctl --user disable --now <unit>` → `pkill -9 -f <name>` → 删 `/usr/local/lib/<name>`、`/usr/local/bin/<name>*`、`~/.<name>`、`~/.config/systemd/user/<unit>.service`(实测 hermes-agent 按此顺序清干净)
|
||||
7. **核验**:`df -h /` 前后对比,逐台回报数字(实测 十堰 80%→59%、襄阳 61%→47%;阿里云本来就干净,没动)
|
||||
|
||||
破坏性步骤(prune、rm -rf)先列清单、拿到用户确认再执行。
|
||||
|
||||
## 3. 不要动
|
||||
|
||||
- **K3s 镜像不在 docker 里**:`docker image prune` 动不到 K3s 的 containerd。查 K3s 镜像必须带命名空间:
|
||||
`ctr -a /run/k3s/containerd/containerd.sock -n k8s.io images list`(漏 `-n k8s.io` 得到空表,实测)。这些镜像都被运行中的 Pod 引用,**没有「闲置镜像」可清**。
|
||||
- **PVC 数据是活数据**:`/var/lib/rancher/k3s/storage/*`(booklib / gitea / koishi)不能删。
|
||||
- **别 purge 旧内核**:`apt-get purge linux-image-X-generic` 会连带删 `linux-image-virtual` / `linux-virtual` 元包、还要装 `linux-image-unsigned-X`(实测 dry-run)——每台只留 2 个内核已是精简状态,保持不动。
|
||||
- **用户手动停的容器别删**(例如十堰的 `serene_northcutt`)。
|
||||
|
||||
## 4. 镜像能共享吗(常问)
|
||||
|
||||
不能。K3s/containerd 没有共享镜像存储:Pod 调度到哪台,哪台本地 containerd 就必须有一份;`imagePullPolicy: IfNotPresent` + `nodeSelector` 固定调度,能让每个镜像只落在需要的节点。各节点镜像清单用上面的 `ctr -n k8s.io` 命令查(这些机器上没装 `crictl`)。发现非调度节点上的冗余业务镜像(例:阿里云只跑 headlamp 却存着 searxng/blog 镜像)先别自动清——节点本地没镜像时 Pod 起不来,清理前要确认没有调度可能。
|
||||
Reference in New Issue
Block a user