如何从节点本身检查 Kubernetes 节点的状态?
How can I check a Kubernetes node's status from the node itself?
从 Kubernetes 集群中的主节点,我可以 运行 kubectl get nodes
并查看集群上任何单个节点的状态,因为 kubectl
可以找到集群证书验证。在我的本地工作站上,假设我已经正确配置了身份验证,我也可以这样做。
从 加入 Kubernetes master 的节点,有什么办法,除了配置 auth 以便 kubectl
工作,我可以确定是否节点处于 Ready
或 Not 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
从 Kubernetes 集群中的主节点,我可以 运行 kubectl get nodes
并查看集群上任何单个节点的状态,因为 kubectl
可以找到集群证书验证。在我的本地工作站上,假设我已经正确配置了身份验证,我也可以这样做。
从 加入 Kubernetes master 的节点,有什么办法,除了配置 auth 以便 kubectl
工作,我可以确定是否节点处于 Ready
或 Not 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