我知道Kubernetes上为每个节点运行的Kubelet进程运行一个简单的API服务器,但我找不到任何文档。
有人知道有资源吗?
谢谢
答案 0 :(得分:3)
在任何地方都没有记录(我知道)。我总是以reading the code结束以找出存在的端点。
另请注意,与apiserver中的API不同,无法保证kubelet API在版本之间保持稳定。随着时间的推移,我希望它会被正确版本化(并且可能会被大肆宣传),此时我们将提供文档和向后兼容性的承诺。
答案 1 :(得分: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",
}
答案 2 :(得分:2)
一些kubelet有用的API卷曲:
http://localhost:10255/pods
http://localhost:10255/stats/summary
http://localhost:10255/metrics
答案 3 :(得分:0)
不记录它是一种说法:不依赖于此,它是一个wip。某些部分,例如当前作为kubelet二进制文件的一部分运行的cadvisor,实际上是more standardized。如果你有一些功能你真的想使用但找不到文档,我建议你询问kubernetes sig-node slack channel或sig-node mailing list
答案 4 :(得分:0)
您可以运行此快速命令以列出所有api端点。您将需要安装jq
new_arr = arr.copy()
for i, row in enumerate(arr.T):
avg = np.mean(row)
for j, pixel in enumerate(row):
if pixel > avg:
new_arr[j,i] = 0
else:
new_arr[j,i] = 1