Apiserver -- 停掉问题排查
1. 错误
133环境中apiserver总是停掉,重启kubelet会让apiserver启动,但过一段时间就会停掉
kubectl get nodes
# ==> 错误
The connection to the server 192.168.0.133:6443 was refused - did you specify the right host or port?
2. 排错过程
# 1. 查询apiserver进程
ps -ef|grep apiserver
# ==> 发现没有apiserver进程
# 2. 查询其docker容器
docker ps -a|grep apiserver
# ==> 输出
12234b87a841 0e422c9884cf "kube-apiserver --ad…" 22 minutes ago Up 22 minutes k8s_kube-apiserver_kube-apiserver-192.168.0.133_kube-system_dbf1c86a253c240e893e1da9a14ca801_1
038088bd719d 0e422c9884cf "kube-apiserver --ad…" 3 days ago Up 3 days k8s_kube-apiserver_kube-apiserver-192.168.0.133_kube-system_dbf1c86a253c240e893e1da9a14ca801_0
61981a225cd0 system/pause:3.1 "/pause" 3 days ago Up 3 days k8s_POD_kube-apiserver-192.168.0.133_kube-system_dbf1c86a253c240e893e1da9a14ca801_0
# ==> 发现有两个apiserver容器,容器状态显示为运行状态
# 3. 查询容器日志
docker logs 038088bd719d
# ==> apiserver received an error that is not an metav1.Status: storage.InvalidError{Errs:field.ErrorList{(*field.Error)(0xc015010d80)}}
# 4. 查询内核缓冲区信息
demsg
# ==> 输出
[1121356.749901] systemd-journald[45]: Failed to open runtime journal: No space left on device
[1121356.760059] systemd-journald[46]: Failed to open runtime journal: No space left on device
[1121356.765980] systemd-journald[47]: Failed to open runtime journal: No space left on device
# ==> 报设备上没有空间
# 5. 查询磁盘使用情况
df -h
# 发现 / 目录磁盘使用量 100%
3. 问题原因
磁盘空间满
- docker会将容器镜像保持在本地目录,还需要将容器的状态信息保存到磁盘,发现磁盘满无法写入
- 类似问题:因磁盘空间满,无法进行磁盘写操作
- 数据库无法插入记录
- etcd无法同步数据
- 日志无法写入
4. 解决方案
- 清理磁盘上无用、无效文件或日志文件,释放部分磁盘空间
- 对磁盘进行扩容
- 新增一块磁盘作为镜像存放空间
- 新增一个监控,在磁盘空间达到85%阈值时候进行报警通知
- 查询组件的日志滚动策略与数据保存压缩策略
- 考虑不同组件存储使用不同的分区方案,避免某个组件将磁盘空间写满导致影响其他组件正常运行 images(100G) maridb(100G以上) etcd(20-30G),这些需要一个单独的数据盘
5. 相关命令
# 1. 统计当前节点上镜像占用空间
# a. 查询 kb级别镜像
docker images |awk '{print $7}'|grep -i "k"
# b. 查询GB级别镜像
docker images |awk '{print $7}'|grep -i "g"
# c. 统计MB级别镜像
docker images |awk '{print $7}'|grep -i "m"|tr -d "MB"|awk '{sum+=$1};END {print(sum/1024.0, "G")}'
# 2. 查询目录文件占用磁盘空间大小
du / -h -d 1
# -h 将byte单位转换 M G可读单位
# -d 指定目录深度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】