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

gee*_*guy 1 monitoring kubernetes kubectl

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

加入到 Kubernetes master的节点,有没有什么方法可以配置身份验证以便kubectl工作,我可以识别节点是处于Ready还是Not Ready状态?

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

jax*_*orm 5

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

kubelet 公开了一个 API,控制平面与之通信以使其运行 pod。默认情况下,它在端口 10250 上运行,但这是一个写 API,需要进行身份验证。

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

curl http://<ip>:10255/healthz
ok
Run Code Online (Sandbox Code Playgroud)

此 healthz 端点也可在 localhost 上使用:

curl http://localhost:10248/healthz
Run Code Online (Sandbox Code Playgroud)

如果这还不够,您可以通过点击 pods API 来检查正在运行的 pod 是否可用:

curl http://<ip>:10255/pods
Run Code Online (Sandbox Code Playgroud)