k8s容器故障处理原创
# Kubelet 使用的目录所在磁盘爆满
kubelet 默认使用的目录 /var/lib/kubelet :通过 kubelet 的 --root-dir 参数指定,用于存储插件信息、Pod 相关的状态以及挂载的 volume(例如, emptyDir 、 ConfigMap 及 Secret )。
现象: 新建 Pod 时无法成功进行 mkdir,导致 Sandbox 也无法创建成功
Warning UnexpectedAdmissionError 44m kubelet, 172.22.0.44 Update plugin resources failed d
ue to failed to write checkpoint file "kubelet_internal_checkpoint": write /var/lib/kubelet/deviceplugins/.728425055: no space left on device, which is unexpected.
1
2
2
处理方式:
- 手动删除 docker 的部分 log 文件或可写层文件。通常删除 log 文件,示例如下:
$ cd /var/lib/docker/containers
$ du -sh * # 找到比较大的目录
$ cd dda02c9a7491fa797ab730c1568ba06cba74cecd4e4a82e9d90d00fa11de743c
$ cat /dev/null > dda02c9a7491fa797ab730c1568ba06cba74cecd4e4a82e9d90d00fa11de74
3c-json.log.9 # 删除log文件
1
2
3
4
5
2
3
4
5
- 执行以下命令,将该 Node 标记为不可调度,并将其已有的 Pod 驱逐到其它节点。
kubectl drain
- systemctl restart dockerd
- kubectl uncordon
# 查看文件io是否高
有时节点在低 cpu ‘us’ (user) 、高 cpu ‘id’ (idle) 的条件下,仍会出现负载很高的情况。通常是由于文件 IO 性能达到瓶颈,导致 IO Wait 过多,使节点整体负载升高,影响其它进程的性能。 本文以 top、atop 及 iotop 工具为例,来判断磁盘 I/O 是否正在降低应用性能。
top:可查看核的 wa 值,wa(wait)表示 IO WAIT 的 CPU 占用。默认显示所有核的平均值,按 1查看每个核的 wa 值。如 wa 通常为0%,如果经常浮动在1%之上,说明存储设备的速度已经太慢,无法跟上 CPU 的处理速 度。 atop:查看 busy, 继续在该界面按 d,可查看哪些进程正在使用磁盘 IO。 iotop -oPa:查看哪些进程占用磁盘 IO
# 容器抓包
上次更新: 2022/10/09, 17:42:01
← Serverless 1→