如何从节点本身检查 Kubernetes 节点的状态?

How can I check a Kubernetes node's status from the node itself?

从 Kubernetes 集群中的主节点,我可以 运行 kubectl get nodes 并查看集群上任何单个节点的状态,因为 kubectl 可以找到集群证书验证。在我的本地工作站上,假设我已经正确配置了身份验证,我也可以这样做。

加入 Kubernetes master 的节点,有什么办法,除了配置 auth 以便 kubectl 工作,我可以确定是否节点处于 ReadyNot Ready 状态?

我正在尝试构建一些驻留在节点本身上的监控工具,我想避免设置服务帐户等只是为了检查节点状态,以防万一我可以通过 kubelet、日志、节点上某处的文件、命令等来识别它...

没有规范的方法可以做到这一点,一种选择是使用 kubelet API。

kubelet 公开了一个 API,控制平面与之对话以使其成为 运行 pods。默认情况下,此 运行s 在端口 10250 上,但这是一个写入 API 并且需要进行身份验证。

但是,kubelet 也有一个标志 --read-only-port,默认情况下它在端口 10255 上。您可以使用它来检查 kubelet 是否准备就绪,方法是点击 healthz 端点。

curl http://<ip>:10255/healthz
ok

此 healthz 端点也可在本地主机上使用:

curl http://localhost:10248/healthz

如果这还不够,您可以通过点击 pods API:

检查 运行ning pod 是否可用
curl http://<ip>:10255/pods