我正在设置一个service,该service使用k8s为每个用户启动jupyter pod
。 用户查询时,我需要提供jupyter pod的实时资源使用情况。 我尝试了metrics-server
和kubectl top
。 他们的结果来是缓存的,大约有1分钟的延迟。有什么解决办法吗?
kubectl version
Client Version: version.Info{Major:"1", Minor:"14",GitVersion:"v1.14.0",GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-25T15:53:57Z",GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"12+", GitVersion:"v1.12.6-aliyun.1", GitCommit:"8cb561c", GitTreeState:"", BuildDate:"2019-05-23T11:28:17Z", GoVersion:"go1.10.8", Compiler:"gc",Platform:"linux/amd64"}
可以查询kubelet统计的endpoint信息:
curl --insecure https://<node url>:10250/stats/summary
还可以使查询特定的
pod/container
curl --insecure https://<node url>:10250/{namespace}/{podName}/{uid}/{containerName}
uid
是任何字符串...版本的代码部分在这里
另一种:如果你的Pod作为主机网络的一部分运行,则你也可以查询
localhost
,并且需要分配一个可以访问它的service account
。 查询如下:TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token) curl https://localhost:10250/stats/summary --header "Authorization: Bearer $TOKEN" --insecure
http://node:10255/stats/summary
返回全部的pod,我担心会影响性能,大佬,有没有返回单个pod的api?有,
http://node:10255/stats/{podName}/{containerName}
你的答案