【问题标题】:Is there API documentation for Kubelet API是否有 Kubelet API 的 API 文档
【发布时间】:2016-05-06 15:18:22
【问题描述】:

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

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

【问题讨论】:

    标签: kubernetes kubelet


    【解决方案1】:

    它在任何地方都没有记录(据我所知)。我总是以reading the code 结束,以找出存在哪些端点。

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

    【讨论】:

    • 是的,我也必须这样做,API 公开了我的产品想要捕获的一些低级指标,可惜现在很难找到。
    • 我绝对同意现在太难了。
    【解决方案2】:

    一些对 curl 有用的 kubelet API:

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

    【讨论】:

    • 我的正在使用端口 10250;但响应不可读。
    • @chinuy 10255 是只读端口,而 10250 是默认 kubelet 端口
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      kubectl get --raw "/" | jq

      【讨论】:

      • 这个命令是列出 kubelet 或 apiserver 的端点吗?对我来说,它看起来像 apiserver 端点。
      • 似乎是上述命令的 apiserver 的 api 端点。
      • 这是给 API 服务器的,不是 kubelet 的。
      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 2019-07-02
        • 2011-12-15
        • 2019-03-14
        • 1970-01-01
        • 1970-01-01
        • 2020-06-20
        • 1970-01-01
        • 1970-01-01
        • 2021-08-27
        相关资源
        最近更新 更多