节点不可用,显示noReady
1、查看节点状态
oc get nodes
可以看到出现了节点不可用
2、查看节点详细的描述信息
oc describe node node_name
可以看到节点的状态未知,而处理节点信息的是kubelet进程,明显的异常就是
Kubelet stopped posting node status
在openshift里面,origin-node进程对k8s的kubelet和kube-proxy进程进行了封装,相当于启动一个进程就能启动k8s里面的两个进程,如果不能确定是什么原因导致的,或者想快速恢复集群,那么可以先重启origin-node
systemctl restart origin-node
但是重启的时候,发现启动失败。具体的原因是origin-node服务是以docker的container提供服务的,然而查看docker服务,发现docker是已经挂了。
下面就是origin-node对应的docker container
可以发现,该服务是以container的方式启动的。
查看具体的日志信息:
日志中可以看出,对应的container不存在。当然不会存在了,因为根本就没有创建成功。
3 分析docker为什么不能启动
查看message日志
从日志当中可以看到,当前docker启动失败是由于docker-storage-setup服务启动失败导致,而这个服务是提供docker 存储的。在以前的版本当中,docker底层存储是devicemapper,高版本已经在使用overlay2.
从日志里面还能看到一个异常就是对应的volume group没找到,在devicemapper存储驱动,默认就是使用的loop-lvm(当然这种方式官方是不推荐的),推荐的方式是使用direct-lvm,也就是自己创建lvm,然后转换成thinpool。但是我们这个生产环境在我来的时候就部署上了,应该是以前的同事没用修改。
如果是通过openshift安装的docker,那么在配置lvm的时候,可以使用/etc/sysconfig/docker-storage-setup文件。具体流程如下:
1、打开这个文件
从中可以看到模板文件,就是标红的地方,把这个文件里面的信息拷贝到当前的打开的这个文件。
2、修改文件
主要修改两处
DEVS: 表示使用哪块磁盘来进行lvm的创建
VG:Volume Group名字了
3、直接执行/etc/sysconfig/docker-storage-setup
注:上述方式需要停止docker,同时备份/var/lib/docker下面的数据
那么为什么会提示找不到对应的vg呢?
通过到其他节点查执行docker info命令, 查看pool name信息,如下:
使用dmesg命令查看一下当前的磁盘,是否有存在异常。
可以发现其中有明显的异常。
4、处理解决
第一种方式就是使用direc-lvm替换原先的loop-lvm。然后在启动参数里面加上对应的--storage-opt=dm.thinpooldev参数。
第二种方式就是让硬件看看磁盘问题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2019-05-14 zabbix (二)安装
2019-05-14 zabbix (一) 初识
2019-05-14 zabbix(x)