• 节点不可用,显示noReady


    1、查看节点状态

    oc get nodes
    

    image

    可以看到出现了节点不可用

    2、查看节点详细的描述信息

    oc describe node node_name
    

    image

      可以看到节点的状态未知,而处理节点信息的是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
    image
    可以发现,该服务是以container的方式启动的。
    查看具体的日志信息:
    image
    日志中可以看出,对应的container不存在。当然不会存在了,因为根本就没有创建成功。

    3 分析docker为什么不能启动

    查看message日志
    image

      从日志当中可以看到,当前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、打开这个文件
    image
    从中可以看到模板文件,就是标红的地方,把这个文件里面的信息拷贝到当前的打开的这个文件。
    2、修改文件
    image
    主要修改两处
    DEVS: 表示使用哪块磁盘来进行lvm的创建
    VG:Volume Group名字了
    3、直接执行/etc/sysconfig/docker-storage-setup
    注:上述方式需要停止docker,同时备份/var/lib/docker下面的数据

      那么为什么会提示找不到对应的vg呢?
    通过到其他节点查执行docker info命令, 查看pool name信息,如下:
    image

    使用dmesg命令查看一下当前的磁盘,是否有存在异常。
    image
    可以发现其中有明显的异常。

    4、处理解决

    第一种方式就是使用direc-lvm替换原先的loop-lvm。然后在启动参数里面加上对应的--storage-opt=dm.thinpooldev参数。
    第二种方式就是让硬件看看磁盘问题

    记录学习和生活的酸甜苦辣.....哈哈哈
  • 相关阅读:
    OSPF Configuration Examples
    enabling ip forwarding
    LeetCode 153. Find Minimum in Rotated Sorted Array
    洛谷 P1059 明明的随机数
    LeetCode 120. Triangle
    洛谷 P1047 校门外的树(待完善)
    C++万能头文件<bits/stdc++.h>的内容与优缺点
    LeetCode 217. Contains Duplicate
    LeetCode 414. Third Maximum Number
    洛谷 P1540 机器翻译
  • 原文地址:https://www.cnblogs.com/yjt1993/p/14750754.html
Copyright © 2020-2023  润新知