7.2. 验证节点健康状况
7.2.1. 查看节点状态、资源使用量和配置
查看集群节点健康状况、资源消耗统计和节点日志。另外,在单个节点上查询 kubelet
状态。
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问集群。 -
已安装 OpenShift CLI(
oc
)。
流程
列出集群中所有节点的名称、状态和角色:
$ oc get nodes
总结集群中每个节点的 CPU 和内存使用情况:
$ oc adm top nodes
总结特定节点的 CPU 和内存使用情况:
$ oc adm top node my-node
7.2.2. 在节点上查询 kubelet 状态
您可以查看集群节点健康状况、资源消耗统计和节点日志。另外,您还可以在单个节点上查询 kubelet
状态。
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问集群。 - API 服务仍然可以正常工作。
-
已安装 OpenShift CLI(
oc
)。
流程
kubelet 通过每个节点上的 systemd 服务来管理。通过在 debug pod 中查询
kubelet
systemd 服务来查看 kubelet 的状态。为节点启动 debug pod:
$ oc debug node/my-node
注意如果您在 control plane 节点上运行
oc debug
,可以在/etc/kubernetes/static-pod-resources/kube-apiserver-certs/secrets/node-kubeconfigs
目录中找到管理kubeconfig
文件。将
/host
设置为 debug shell 中的根目录。debug pod 在 pod 中的/host
中挂载主机的 root 文件系统。将根目录改为/host
,您可以运行主机可执行路径中包含的二进制文件:# chroot /host
注意运行 Red Hat Enterprise Linux CoreOS (RHCOS) 的 OpenShift Container Platform 4.17 集群节点不可变,它依赖于 Operator 来应用集群更改。不建议使用 SSH 访问集群节点。但是,如果 OpenShift Container Platform API 不可用,或者
kubelet
在目标节点上无法正常工作,oc
操作将会受到影响。在这种情况下,可以使用ssh core@<node>.<cluster_name>.<base_domain>
来访问节点。检查
kubelet
systemd 服务是否在该节点上活跃:# systemctl is-active kubelet
输出更详细的
kubelet.service
状态概述:# systemctl status kubelet
7.2.3. 查询集群节点 journal 日志
您可以在独立集群节点的 /var/log
中收集 journald
单元日志和其他日志。
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问集群。 -
已安装 OpenShift CLI(
oc
)。 - API 服务仍然可以正常工作。
- 您需要有到主机的 SSH 访问权限。
流程
查询 OpenShift Container Platform 集群节点的
kubelet
journald
单元日志。以下示例仅查询 control plane 节点:$ oc adm node-logs --role=master -u kubelet 1
- 1
- 根据情况替换
kubelet
以查询其他单元日志。
从集群节点上
/var/log/
下的特定子目录收集日志。获取
/var/log/
子目录中所含的日志列表。以下示例列出所有 control plane 节点上的/var/log/openshift-apiserver/
中的文件:$ oc adm node-logs --role=master --path=openshift-apiserver
检查
/var/log/
子目录中的特定日志。以下示例输出来自所有 control plane 节点的/var/log/openshift-apiserver/audit.log
内容:$ oc adm node-logs --role=master --path=openshift-apiserver/audit.log
如果 API 无法正常工作,请使用 SSH 来查看每个节点上的日志。以下示例是
/var/log/openshift-apiserver/audit.log
的尾部的内容:$ ssh core@<master-node>.<cluster_name>.<base_domain> sudo tail -f /var/log/openshift-apiserver/audit.log
注意运行 Red Hat Enterprise Linux CoreOS (RHCOS) 的 OpenShift Container Platform 4.17 集群节点不可变,它依赖于 Operator 来应用集群更改。不建议使用 SSH 访问集群节点。在尝试通过 SSH 收集诊断数据前,请运行
oc adm must gather
和其他oc
命令看它们是否可以提供足够的数据。但是,如果 OpenShift Container Platform API 不可用,或 kubelet 在目标节点上无法正常工作,oc
操作将会受到影响。在这种情况下,可以使用ssh core@<node>.<cluster_name>.<base_domain>
来访问节点。