是否有 Kubelet API 的文档 API

Is there API documentation for Kubelet API

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

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

在任何地方(据我所知)都没有记录。我总是最终 reading the code 找出存在的端点。

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

不记录它是一种说法:不要依赖它,它是一个 wip。某些部分,例如目前 运行 作为 kubelet 二进制文件的一部分的 cadvisor,实际上是 more standardized. If there's some feature you'd really like to use but can't find docs on, I'd suggest asking on the kubernetes sig-node slack channel, or the sig-node mailing list

一些 kubelet 对 API curl 有用:

http://localhost:10255/pods
http://localhost:10255/stats/summary
http://localhost:10255/metrics

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

kubectl get --raw "/" | jq

有一个名为 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",
}