如何在k8s中获取pod的实时资源使用情况?

八荒 发表于: 2019-10-15   最后更新时间: 2021-09-06 18:05:22   7,794 游览

我正在设置一个service,该service使用k8s为每个用户启动jupyter pod。 用户查询时,我需要提供jupyter pod的实时资源使用情况。 我尝试了metrics-serverkubectl 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"}

发表于 2019-10-15

可以查询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
八荒 -> 半兽人 5年前

http://node:10255/stats/summary返回全部的pod,我担心会影响性能,大佬,有没有返回单个pod的api?

半兽人 -> 八荒 5年前

有,http://node:10255/stats/{podName}/{containerName}

你的答案

查看kubernetes相关的其他问题或提一个您自己的问题