在Kubernetes集群的主节点上,我可以运行kubectl get nodes
并查看集群上任何单个节点的状态,因为kubectl
可以找到用于认证的集群证书。在本地工作站上,假设我已正确配置身份验证,则可以执行相同操作。
从加入到Kubernetes主服务器的节点中,除了配置auth以使kubectl
正常工作外,还有什么方法可以确定节点是否位于{{ 1}}或Ready
状态?
我正在尝试构建一些驻留在节点本身上的监视工具,并且我想避免不得不设置服务帐户等来检查节点状态的情况,以防万一通过kubelet,日志,节点上某个位置的文件,命令等来识别它。
答案 0 :(得分:3)
没有规范的方法,一种选择是使用kubelet API。
kubelet公开了控制平面与之交谈的API,以使其运行pod。默认情况下,它在端口10250上运行,但这是一个写API,需要进行身份验证。
但是,该kubelet还具有一个标志--read-only-port
,默认情况下该标志位于端口10255上。您可以使用该标志通过单击healthz端点来检查kubelet是否已就绪。
curl http://<ip>:10255/healthz
ok
此healthz终结点也可在localhost上使用:
curl http://localhost:10248/healthz
如果这还不够,您可以通过点击pods API来检查正在运行的pod是否可用:
curl http://<ip>:10255/pods