可以。当前我没法直接进入你的 Linux 主机执行命令,但你可以在 k3s 所在服务器上直接跑下面这一套,我把检查、启动、状态确认和安全清理未使用镜像都放进去了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| echo "===== 1. k3s 服务状态 =====" sudo systemctl status k3s --no-pager -l || true
echo echo "===== 2. k3s 是否开机启动 =====" sudo systemctl is-enabled k3s || true
echo echo "===== 3. k3s 是否正在运行 =====" sudo systemctl is-active k3s || true
echo echo "===== 4. 磁盘空间 =====" df -h
echo echo "===== 5. k3s 最近日志 =====" sudo journalctl -u k3s -n 100 --no-pager
echo echo "===== 6. 如果 k3s 没运行,则启动 =====" if ! sudo systemctl is-active --quiet k3s; then echo "k3s 未运行,正在启动..." sudo systemctl restart k3s sleep 5 fi
echo echo "===== 7. k3s 当前状态 =====" sudo systemctl status k3s --no-pager -l || true
echo echo "===== 8. Kubernetes 节点 =====" sudo k3s kubectl get nodes -o wide || true
echo echo "===== 9. 所有 Pod =====" sudo k3s kubectl get pods -A -o wide || true
echo echo "===== 10. 当前容器 =====" sudo k3s crictl ps -a || true
echo echo "===== 11. 清理前镜像 =====" sudo k3s crictl images || true
echo echo "===== 12. 删除未使用镜像 =====" sudo k3s crictl rmi --prune
echo echo "===== 13. 清理后镜像 =====" sudo k3s crictl images || true
echo echo "===== 14. 最终磁盘空间 =====" df -h
|
其中清理镜像我建议使用:
1
| sudo k3s crictl rmi --prune
|
它比直接拿 ctr 批量删除镜像安全,因为它会通过 CRI 判断未使用镜像,不会故意把正在运行 Pod 所依赖的镜像全部删掉。
如果你只想先检查,不急着清理,重点看这几个:
1 2 3 4 5 6 7 8 9
| sudo systemctl status k3s --no-pager -l
sudo journalctl -u k3s -n 200 --no-pager
sudo k3s kubectl get nodes -o wide
sudo k3s kubectl get pods -A
df -h
|
如果发现类似:
1 2 3 4
| No space left on device DiskPressure ImageGCFailed failed to start containerd
|
那很可能就是 /var/lib/rancher/k3s 或系统盘空间被镜像、容器快照占满了。可以进一步看看:
1 2 3
| sudo du -sh /var/lib/rancher/k3s sudo du -sh /var/lib/rancher/k3s/agent/containerd sudo du -h --max-depth=2 /var/lib/rancher/k3s/agent/containerd | sort -h | tail -30
|
另外确认一下开机自动启动:
1
| sudo systemctl enable k3s
|
然后:
1
| sudo systemctl restart k3s
|
如果你这台机器实际上是 worker 节点,服务名不是 k3s,而是:
1 2 3
| sudo systemctl status k3s-agent sudo journalctl -u k3s-agent -n 200 --no-pager sudo systemctl restart k3s-agent
|
不要直接手工删除:
1
| /var/lib/rancher/k3s/agent/containerd/
|
里面的文件,也不建议用 rm -rf 清 containerd 数据,否则可能把 snapshot/container 元数据弄坏。
你可以把下面两个命令的输出直接贴给我:
1 2
| sudo systemctl status k3s --no-pager -l sudo journalctl -u k3s -n 100 --no-pager
|
我可以直接帮你判断 k3s 为什么没起来,再看是否还需要处理 containerd、磁盘、证书、端口或者 datastore。