【发布时间】:2016-05-06 15:18:22
【问题描述】:
我知道每个 Kubernetes 节点上的 Kubelet 进程都公开了一个简单的 API 服务器,但我找不到任何文档。
有人知道拥有它的资源吗?
【问题讨论】:
标签: kubernetes kubelet
我知道每个 Kubernetes 节点上的 Kubelet 进程都公开了一个简单的 API 服务器,但我找不到任何文档。
有人知道拥有它的资源吗?
【问题讨论】:
标签: kubernetes kubelet
它在任何地方都没有记录(据我所知)。我总是以reading the code 结束,以找出存在哪些端点。
另请注意,与 apiserver 中的 API 不同,kubelet API 无法保证版本之间的稳定。随着时间的推移,我希望它会得到正确的版本控制(并且可能会大摇大摆),届时我们将提供文档和对向后兼容性的承诺。
【讨论】:
一些对 curl 有用的 kubelet API:
http://localhost:10255/pods
http://localhost:10255/stats/summary
http://localhost:10255/metrics
【讨论】:
有一个名为kubeletctl的新开源项目。
它记录了所有 kubelet API(文档和非文档)。
你可以这样使用:
kubeletctl -s <node_ip> pods
kubeletctl -s <node_ip> metrics cadvisor
当您运行kubeletctl -h 时,您将看到所有可以使用的命令,它也有子命令,但您需要键入父命令,然后添加-h,例如kubeletctl metrics -h。
这里有一些APIs kubelet 实现:
testPaths := map[string]string{
"/attach/{podNamespace}/{podID}/{containerName}": "proxy",
"/attach/{podNamespace}/{podID}/{uid}/{containerName}": "proxy",
"/configz": "proxy",
"/containerLogs/{podNamespace}/{podID}/{containerName}": "proxy",
"/cri/": "proxy",
"/cri/foo": "proxy",
"/debug/flags/v": "proxy",
"/debug/pprof/{subpath:*}": "proxy",
"/exec/{podNamespace}/{podID}/{containerName}": "proxy",
"/exec/{podNamespace}/{podID}/{uid}/{containerName}": "proxy",
"/healthz": "proxy",
"/healthz/log": "proxy",
"/healthz/ping": "proxy",
"/healthz/syncloop": "proxy",
"/logs/": "log",
"/logs/{logpath:*}": "log",
"/metrics": "metrics",
"/metrics/cadvisor": "metrics",
"/metrics/probes": "metrics",
"/metrics/resource/v1alpha1": "metrics",
"/pods/": "proxy",
"/portForward/{podNamespace}/{podID}": "proxy",
"/portForward/{podNamespace}/{podID}/{uid}": "proxy",
"/run/{podNamespace}/{podID}/{containerName}": "proxy",
"/run/{podNamespace}/{podID}/{uid}/{containerName}": "proxy",
"/runningpods/": "proxy",
"/spec/": "spec",
"/stats/": "stats",
"/stats/container": "stats",
"/stats/summary": "stats",
"/stats/{namespace}/{podName}/{uid}/{containerName}": "stats",
"/stats/{podName}/{containerName}": "stats",
}
【讨论】:
您可以运行此快速命令来列出所有 api 端点。你需要安装 jq
kubectl get --raw "/" | jq
【讨论】:
不记录它是一种说法:不要依赖它,这是一个 wip。某些部分,例如当前作为 kubelet 二进制文件的一部分运行的 cadvisor,实际上是more standardized。如果您确实想使用某些功能但找不到相关文档,我建议您在 kubernetes sig-node slack channel 或 sig-node mailing list 上提问
【讨论】: