我试图查看kubernetes容器使用了多少内存和CPU。为此,我运行了以下命令:
kubectl top pod podname --namespace=default
我遇到以下错误:
W0205 15:14:47.248366 2767 top_pod.go:190] Metrics not available for pod default/podname, age: 190h57m1.248339485s
error: Metrics not available for pod default/podname, age: 190h57m1.248339485s
我看到了此命令的示例输出,该示例显示CPU为250m。该如何解释?
如果我们进入Pod并运行linux top
命令,是否得到相同的输出?
答案 0 :(得分:18)
kubectl top pod <pod-name> -n <fed-name> --containers
仅供参考,这是在v1.16.2上
答案 1 :(得分:14)
如果要在不安装任何第三方工具的情况下检查pod的cpu /内存使用情况,则可以从cgroup获取pod的内存和cpu使用情况。
<section class="product-description pt-5">
<div class="container">
<div class="row">
<div class="col-12">
<div id="accordion" class="accordion">
<div class="card mb-0">
<div class="card-header collapsed" data-toggle="collapse" href="#collapseOne">
<a class="card-title">Opis produktu</a>
</div>
<div id="collapseOne" class="card-body collapse py-3" data-parent="#accordion">
<div class="col-8 px-0">Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus
terry richardson ad
squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck
quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it
squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica,
craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur
butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth
nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
</div>
</div>
<div class="card-header collapsed" data-toggle="collapse" data-parent="#accordion"
href="#collapseTwo">
<a class="card-title">Konserwacja</a>
</div>
<div id="collapseTwo" class="card-body collapse py-3" data-parent="#accordion">
<div class="col-8 px-0">Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus
terry richardson ad
squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck
quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it
squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica,
craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur
butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth
nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
</div>
</div>
<div class="card-header collapsed" data-toggle="collapse" data-parent="#accordion"
href="#collapseThree">
<a class="card-title">Inna zakładka</a>
</div>
<div id="collapseThree" class="card-body collapse py-3" data-parent="#accordion">
<div class="col-8 px-0">Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus
terry richardson ad
squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck
quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it
squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica,
craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur
butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth
nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
kubectl exec pod_name -- /bin/bash
获取CPU使用情况
运行cd /sys/fs/cgroup/cpu
cat cpuacct.usage
了解内存使用情况
运行cd /sys/fs/cgroup/memory
注意:此用法以字节为单位。
答案 2 :(得分:11)
使用 k9s 可以非常简单地检查所有资源的 CPU 和内存使用情况。
答案 3 :(得分:5)
您需要运行指标服务器才能使以下命令处理正确的数据:
没有度量服务器: 通过运行以下命令进入 pod:
您将获得 pod 的内存使用量(以字节为单位)。
答案 4 :(得分:1)
如docs中所述,您应该安装metrics-server
250m表示250毫秒CPU,CPU资源以measured为单位,在Kubernetes中等于:
允许使用分数。一个请求0.5 CPU的容器是 保证的CPU数量是请求1个CPU的容器的一半。您 可以使用后缀m表示毫。例如100m CPU,100 milliCPU和0.1 CPU都相同。精度不超过1m 允许。
CPU始终被请求为绝对数量,而不是相对数量 数量; 0.1与单核,双核上的CPU数量相同, 或48核计算机。
否,kubectl top pod podname
显示给定Pod的度量标准,Linux top
和free
在容器中运行,并基于Linux系统报告的度量标准报告报告,该报告基于存储在其中的信息虚拟文件系统 /proc/
,他们不知道它在哪里运行。
这些链接上有更多详细信息:
答案 5 :(得分:1)
要检查 Kubernetes 中各个 Pod 的使用情况,请在终端中键入以下命令
$
docker ps | grep
这将提供您在 Kubernetes 中运行的容器列表 使用
检查 CPU 和内存利用率$
docker stats
CONTAINER_ID NAME CPU% MEM USAGE/LIMIT MEM% NET_I/O BLOCK_I/O PIDS
答案 6 :(得分:0)
您需要部署heapster或metric服务器才能查看Pod的CPU和内存使用情况
答案 7 :(得分:0)
由于heapster已贬值并且将不会发布任何将来的版本,因此您应该继续安装metrics-server
您可以通过以下方式安装metrics-server:
git clone https://github.com/kubernetes-incubator/metrics-server.git
编辑deploy/1.8+/metrics-server-deployment.yaml
文件,并在command
部分之后添加以下部分:
- command:
- /metrics-server
- --metric-resolution=30s
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP
kubectl apply -f deploy/1.8+
它将安装度量服务器所需的所有要求。
有关更多信息,请查看我的以下答案:
答案 8 :(得分:0)
如果您正在使用 minikube ,则可以启用metrics-server插件;这将在仪表板中显示信息。
答案 9 :(得分:0)
答案 10 :(得分:0)
一种无需安装指标服务器的替代方法。
它要求您当前将 crictl 安装到安装了 pod 的工作节点中。 official doc 中定义了 Kubernetes 任务。
一旦您正确安装了它,您就可以使用以下命令。 (在我的情况下,我不得不使用 sudo,但是,根据您的 Kubernetes 集群安装,可能不需要)
sudo crictl ps
sudo crictl stats <CONTAINERID>
参考输出示例:
CONTAINER CPU % MEM DISK INODES
873f04b6cef94 0.50 54.16MB 28.67kB 8
答案 11 :(得分:0)
您可以使用定义的 API here:
例如:
kubectl -n default get --raw /apis/metrics.k8s.io/v1beta1/namespaces/default/pods/nginx-7fb5bc5df-b6pzh | jq
{
"kind": "PodMetrics",
"apiVersion": "metrics.k8s.io/v1beta1",
"metadata": {
"name": "nginx-7fb5bc5df-b6pzh",
"namespace": "default",
"selfLink": "/apis/metrics.k8s.io/v1beta1/namespaces/default/pods/nginx-7fb5bc5df-b6pzh",
"creationTimestamp": "2021-06-14T07:54:31Z"
},
"timestamp": "2021-06-14T07:53:54Z",
"window": "30s",
"containers": [
{
"name": "nginx",
"usage": {
"cpu": "33239n",
"memory": "13148Ki"
}
},
{
"name": "git-repo-syncer",
"usage": {
"cpu": "0",
"memory": "6204Ki"
}
}
]
}
其中 nginx-7fb5bc5df-b6pzh 是 pod 的名称。
注意 CPU 是以 nanoCPU 来衡量的,其中 1x10E9 nanoCPU = 1 CPU
答案 12 :(得分:-1)
有关如何部署指标服务器的详细步骤,请参见以下链接-> https://github.com/epasham/docker-repo/blob/master/k8s/deploy-metrics-server.md