运维笔记之:OpenShift节点状态检查

网友投稿 1302 2022-10-02

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

运维笔记之:OpenShift节点状态检查

什么是OpenShift?

红帽把Kubernetes包装了一下,添加一些功能,做成了OpenShift这个企业级PaaS产品,卖给不差钱的企业。全名叫:OpenShift Container Platform,简称ocp,命令都是以oc开头,相当于给kubectl做了个别名。其它的不多说了,参考官网吧!

OpenShift官网:https://openshift.com

作为新晋OpenShift运维人员,当你面对一个全新的OpenShift平台,你是否一脸懵逼?心里想着:我要怎么开始表演?要怎么隐藏菜鸟的身份?以及。。。

切记,此时不要慌。你只需要问大佬们:master节点服务器登录信息告诉我一下呗~

接下来,你就可以开始你的表演了!

登录master节点,这个是你表演的舞台,来,查看OpenShift节点信息:

root@master01 ~ # oc get nodesNAME                STATUS            ROLES     AGE       VERSIONmaster01.opclab.com   Ready            master    30d      v1.11.0+d4cacc0master02.opclab.com   Ready            master    30d      v1.11.0+d4cacc0node01.opclab.com     Ready            compute   30d      v1.11.0+d4cacc0node02.opclab.com     Ready            compute   30d      v1.11.0+d4cacc0node03.opclab.com     Ready            compute   30d      v1.11.0+d4cacc0node04.opclab.com     Ready            compute   30d      v1.11.0+d4cacc0node05.opclab.com     Ready            compute   30d      v1.11.0+d4cacc0infra01.opclab.com    Ready            infra     30d      v1.11.0+d4cacc0infra02.opclab.com    Ready            infra     17d      v1.11.0+d4cacc0router01.opclab.com   Ready            router    30d      v1.11.0+d4cacc0router02.opclab.com   Ready            router 17d      v1.11.0+d4cacc0

从这个结果来看,STATUS都是Ready,看来每个节点状态都正常。

如果你发现有下面这样的状态,那你就可以直接问大佬了:出什么事情了?谁把这个节点调度给disable了啊?相信我,此话一出,大佬们会很高兴的给你讲这背后的故事。

root@master01 ~ # oc get nodesNAME STATUS ROLES AGE VERSIONmaster01.opclab.com Ready master 30d v1.11.0+d4cacc0master02.opclab.com Ready master 30d v1.11.0+d4cacc0node01.opclab.com     NotReady          compute   30d      v1.11.0+d4cacc0node02.opclab.com Ready compute 30d v1.11.0+d4cacc0node03.opclab.com Ready compute 30d v1.11.0+d4cacc0router01.opclab.com   Ready             router    30d      v1.11.0+d4cacc0router02.opclab.com   Ready,SchedulingDisabled   router    17d      v1.11.0+d4cacc0

根据官方文档描述,各node节点只有三种不同的状态:

ConditionDescription

Ready

The node is passing the health checks performed from the master by returning StatusOK
.

NotReady

The node is not passing the health checks performed from the master.

SchedulingDisabled

Pods cannot be scheduled for placement on the node.        

也就是说除了Ready状态外,其它状态都是不正常的,需要继续排查,找到原因。

小技巧:

如果想查看节点详细信息,只要加上-o wide参数即可,k8s版本,内核版本,container-runtime版本,节点IP都给你列出来了:

root@master01 ~ # oc get nodes -o wideNAME                   STATUS    ROLES     AGE       VERSION           EXTERNAL-IP      OS-IMAGE                                      KERNEL-VERSION          CONTAINER-RUNTIMEmaster01.opclab.com Ready master 1d v1.10.0+b81c8f8 54.172.185.130 Red Hat Enterprise Linux Server 7.5 (Maipo) 3.10.0-862.el7.x86_64 docker://1.13.1node01.opclab.com     Ready     compute    1d        v1.10.0+b81c8f8   54.88.22.81      Red Hat Enterprise Linux Server 7.5 (Maipo)   3.10.0-862.el7.x86_64   docker://1.13.1node02.opclab.com Ready compute 1d v1.10.0+b81c8f8 34.230.50.57 Red Hat Enterprise Linux Server 7.5 (Maipo) 3.10.0-862.el7.x86_64 docker://1.13.1

如果只查看计算节点服务器名称:

root@master01 ~ # oc get node --no-headers | grep compute | awk 'print {$1}'master01.opclab.commaster02.opclab.comnode01.opclab.com...

上面的oc get node命令只是查看集群节点overview的信息,没有资源使用情况的信息。那集群各节点的资源使用情况怎么看呢?

root@master01 ~ $ oc adm top nodesNAME CPU(cores) CPU% MEMORY(bytes) MEMORY%master01.opclab.com   297m         29%       4263Mi          55%node01.opclab.com     55m          5%        1201Mi          15%infra01.opclab.com    85m          8%        1319Mi          17%router01.opclab.com   182m         18%       2524Mi          32%master-0.opclab.com 178m 8% 2584Mi 16%...

一切正常,没毛病!这一波操作之后,大佬们也会觉得你666

接下来,你再查看一下pod数量:

root@master01 ~ # oc get podsNAME READY STATUS RESTARTS AGEcakephp-mysql-persistent-1-build 0/1 ContainerCreating 0 6mmysql-1-9767d 0/1 ContainerCreating 0 2mmysql-1-deploy 0/1 ContainerCreating 0 6m

这里需要注意的是,默认情况下,oc get pods命令只会列出默认namespace的pod数量,如果你想要列出所有的pod,需要加上--all-namespaces参数。

具体是这个样子:

root@si0vm4320 ~ # oc get pods --all-namespacesNAMESPACE NAME READY STATUS RESTARTS AGEproject-a       project-a-72-86r26           1/1       Running                 1          27dproject-b       project-b-38-hskvc           1/1       Running                 0          29dproject-b       project-b-23-jclwx           1/1       Running                 0          29dproject-c       project-c-46-build           0/1       Completed               0          28dproject-c       project-c-47-q7zp2           1/1       Running                 0          28d.........

大佬问你了,我们这个集群所有节点上的pod数量,包括master、infra和router节点,一共有多少啊?如果你说给我点时间,让我数数看,那大佬会投来这样的眼光:

你应该说,来我们一起看一下,你一边面带微笑跟大佬说,一边敲下面的命令:

root@master01 ~ # oc get pods --all-namespaces | wc -l897

然后你说一共897个,等等,应该是896个,返回结果第一行是header,再敲一遍:

root@master01 ~ # oc get pods --all-namespaces --no-headers | wc -l896

最后大佬说,你能不能给我列出来每个节点上的:

- pod总数量

- running状态的pod数量

- error状态的pod数量

你说没问题,我上个厕所先,回来就搞。然后你就去上厕所,打开微信搜索:OpenShift节点状态检查

找到这篇文章,仔细看下面部分,就是你想要的答案~

回到问题上来,我们理一下思路:如果想查看集群各个节点上pod的数量,那你就得知道怎么查看指定节点上的pod数量。其实没有直接的oc命令查看指定node节点的pod数量,但是允许我们指定namespace,而且oc get pods命令可以加-o wide参数看到pod running在哪个node节点上。这就好办了,查看指定node节点上的pod,只需要grep一下某台node节点服务器名称就行,具体数量嘛,还是管道给wc -l就行了,大概是下面这个样子:

root@master01 ~ # oc get pods --all-namespaces --no-headers -o wide | grep node01.opclab.com | wc -l102

上面的是总数量,包括running,error,pending等等所有状态的pods数量。那怎么查看running状态的呢?简单,再grep一下running就可以了

root@master01 ~ # oc get pods --all-namespaces --no-headers -o wide | grep node01.opclab.com | grep Running

具体running状态的pod数量,交给wc -l计算:

root@master01 ~ # oc get pods --all-namespaces --no-headers -o wide | grep node01.opclab.com | grep Running | wc -l88

其它状态的这里就不写了,相信你知道该怎么获取了。

最后我们把上面的命令写成一个脚本,格式化输出,更好看一些。脚本代码如下:

root@master01 ~ # cat podscount.sh#!/bin/bashecho '''============================================================== ==== OpenShift Pods Status On All Compute Nodes ====       echo "When: $(date)"                =============================================================='''echo -e "Nodename\tTotal\tRunning\tError"for server in $(oc get nodes --no-headers | awk '{print $1}')doecho -e "$server \t$(oc get pods --all-namespaces --no-headers -o wide | grep $server | wc -l) \\t$(oc get pods --all-namespaces --no-headers -o wide | grep $server | grep -i running | wc -l) \\t$(oc get pods --all-namespaces --no-headers -o wide | grep $server | grep -i error | wc -l)";done

我们来运行一下,运行之前别忘了给脚本文件赋予可执行权限:

root@master01 ~ # chmod +x podscount.shroot@master01 ~ # ./podscount.sh============================================================== ==== OpenShift Pods Status On All Nodes ====       When: Wed Jan  6 08:31:11 CET 2021               ==============================================================Nodename    Total   Running Errornode01 85 76 0node02      198     64      10node03      108     82      0node04      126     50      3node05      153     102     4...

现在你可以回去了,回到工位之后,在大佬面前继续你的表演~~~此时大佬会投来这样的目光:

恭喜你!已经成功吸引大佬们的注意!离背锅侠又进了一步。

上一篇:GBase 8a 运维监控工具---“统一数据平台监控与运维系统”
下一篇:运维必须了解的TcaplusDB事务管理
相关文章

 发表评论

暂时没有评论,来抢沙发吧~