k8s top命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s top命令相关的知识,希望对你有一定的参考价值。

参考技术A 我们通常可以基于top命令来查看节点上的资源使用情况,可以带两个参数nodes和pods通过这个命令,分别用于查看节点和pods的资源使用情况,这对于我们快速查看k8s集群以及pod的资源利用率,从而提醒业务或者系统管理人员及时的对集群扩容,调整Pod的资源请求。

下面是这个命令显示的一个常规的输出:

但是这个命令新旧版本的实现上有差异,主要分水岭是从1.9.X版本开始。

kubectl top命令依赖于heapster组件,我们用下面的内容创建heapster.yaml文件:

并运行kubectl apply -f heapster.yaml部署好heapster,就能通过旧版本的kubectl来执行top命令获取到资源利用率。

该版本的实现原理是,从heapster组件中读取收集的监控数据,由于heapster已经是淘汰的版本,这里不做深入的分析了。

新版本已经用metrics server替代了heapster,下面是K8S的监控架构图:

监控架构中包含了指标收集流以及监控流两个部分,这里我们主要讨论的是指标收集部分。
在这里我们有两个指标源:

Metrics Server负责从指标源中抓取数据,它不负责指标数据的持久化,只保留最近的数据(注意:kubectl top命令只用到了kubelet相关的核心指标),与此同时,Metrics Server会通过Aggregated API Servers模式把自己的API暴漏给API Server。

所以从客户端使用视角来看,访问Metrics Server就想访问API Server 一样,而kubectl就是这样的一种客户端,下面是Metrics Server暴漏的API信息:

我们可以通过下面的API来访问Metrics API:
http://127.0.0.1:8080/apis/metrics.k8s.io/v1beta1/nodes
http://127.0.0.1:8080/apis/metrics.k8s.io/v1beta1/nodes/
http://127.0.0.1:8080/apis/metrics.k8s.io/v1beta1/pods
http://127.0.0.1:8080/apis/metrics.k8s.io/v1beta1/namespace//pods/
也可以直接通过 kubectl 命令来访问这些 API,比如:

kubectl get –raw apis/metrics.k8s.io/v1beta1/nodes
kubectl get –raw apis/metrics.k8s.io/v1beta1/pods
kubectl get –raw apis/metrics.k8s.io/v1beta1/nodes/
kubectl get –raw apis/metrics.k8s.io/v1beta1/namespace//pods/

kubelet启动的时候,需要加上下面的参数:
--authentication-token-webhook --authorization-mode=Webhook

柯尔莫可洛夫-斯米洛夫检验(Kolmogorov–Smirnov test,K-S test)

K-S检验方法能够利用样本数据推断样本来自的总体是否服从某一理论分布,是一种拟合优度的检验方法,适用于探索连续型随机变量的分布。

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

 

以上是关于k8s top命令的主要内容,如果未能解决你的问题,请参考以下文章

经典k8s日常巡检及排错指南

top的Top命令

top命令详细解读

centos top 命令详解及退出top命令-使用p键及free命令

云原生k8s集群命令行工具kubectl之集群管理命令

Linux中top命令参数详解