10

我知道每个 Kubernetes 节点上的 Kubelet 进程都公开了一个简单的 API 服务器,但我找不到任何文档。

有人知道拥有它的资源吗?

4

5 回答 5

7

它没有记录在任何地方(据我所知)。我总是最终阅读代码以找出存在哪些端点。

另请注意,与 apiserver 中的 API 不同,无法保证 kubelet API 在版本之间保持稳定。随着时间的推移,我希望它会得到适当的版本控制(并且可能会大摇大摆),届时我们将提供文档和对向后兼容性的承诺。

于 2016-01-29T03:01:49.243 回答
6

一些对 curl 有用的 kubelet API:

http://localhost:10255/pods
http://localhost:10255/stats/summary
http://localhost:10255/metrics
于 2018-06-12T06:36:38.317 回答
5

有一个名为kubeetctl的新开源项目。
它记录了所有 kubelet API(文档和非文档)。
你可以这样使用:

kubeletctl -s <node_ip> pods  
kubeletctl -s <node_ip> metrics cadvisor

运行时,kubeletctl -h您会看到所有可以使用的命令,它还有子命令,但您需要键入父命令,然后添加-h,例如kubeletctl metrics -h.

以下是kubelet 实现 的一些API :

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",
}
于 2020-04-30T09:38:59.587 回答
1

您可以运行此快速命令来列出所有 api 端点。您需要安装 jq

kubectl get --raw "/" | jq

于 2018-11-01T17:52:21.607 回答
0

不记录它是一种说法:不要依赖它,这是一个 wip。某些部分,例如当前作为 kubelet 二进制文件的一部分运行的 cadvisor,实际上更加标准化。如果您确实想使用某些功能但找不到文档,我建议您在 kubernetes sig-node slack channelsig-node 邮件列表上询问

于 2016-01-30T21:58:17.607 回答