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 指定目录深度
posted @   梦_鱼  阅读(153)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示