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

xpb*_*bug 5 kubernetes

我正在设置一个服务,它使用 k8s 为每个用户启动 jupyter pod。当用户查询 jupyter pod 时,我需要提供它的实时资源使用情况。我尝试了metrics-server 和 kubectl top。它们的结果来自缓存,并且有大约 1 分钟的延迟。有什么解决办法吗?

> kubectl version
Run Code Online (Sandbox Code Playgroud)

客户端版本:version.Info{主要:“1”,次要:“14”,GitVersion:“v1.14.0”,GitCommit:“641856db18352033a0d96dbc99153fa3b27298e5”,GitTreeState:“clean”,BuildDate:“2019-03-25T15:53: 57Z",GoVersion:"go1.12.1",编译器:"gc",平台:"linux/amd64"} 服务器版本: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", 编译器:"gc",平台:"linux /amd64"}

Ped*_*iro 1

您可以查询 kubelet stats 端点:

curl --insecure https://<node url>:10250/stats/summary
Run Code Online (Sandbox Code Playgroud)

您还可以使查询更具体地针对 pod/容器

curl --insecure https://<node url>:10250/{namespace}/{podName}/{uid}/{containerName}
Run Code Online (Sandbox Code Playgroud)

uid基本上任何字符串都在哪里...

您的版本的代码部分在这里

另一个提示:如果您的 Pod 作为主机网络的一部分运行,您localhost也可以查询,并且需要分配一个有权访问它的服务帐户。查询如下所示:

TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
curl https://localhost:10250/stats/summary --header "Authorization: Bearer $TOKEN" --insecure
Run Code Online (Sandbox Code Playgroud)