美文网首页
k8s top命令

k8s top命令

作者: 何约什 | 来源:发表于2020-01-02 20:39 被阅读0次

K8S top命令的作用

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

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

yuxianbing@61d84e9891:~$ kubectl top node
NAME                                  CPU(cores)   CPU%      MEMORY(bytes)   MEMORY%   
node1                                  96m          0%                   5796Mi              19%       
node2                                  91m          0%                   2950Mi               9%        
......

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

1.9.X版本的top命令的实现

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

apiVersion: v1
kind: ServiceAccount
metadata:
  name: heapster
  namespace: kube-system
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: heapster
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:heapster
subjects:
- kind: ServiceAccount
  name: heapster
  namespace: kube-system
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: heapster
  namespace: kube-system
spec:
  replicas: 1
  template:
    metadata:
      labels:
        task: monitoring
        k8s-app: heapster
    spec:
      serviceAccountName: heapster
      containers:
      - name: heapster
        image: k8s.gcr.io/heapster-amd64:v1.5.3
        imagePullPolicy: IfNotPresent
        command:
        - /heapster
        - --source=kubernetes:https://kubernetes.default
---
apiVersion: v1
kind: Service
metadata:
  labels:
    task: monitoring
    # For use as a Cluster add-on (https://github.com/kubernetes/kubernetes/tree/master/cluster/addons)
    # If you are NOT using this as an addon, you should comment out this line.
    kubernetes.io/cluster-service: 'true'
    kubernetes.io/name: Heapster
  name: heapster
  namespace: kube-system
spec:
  ports:
  - port: 80
    targetPort: 8082
  selector:
    k8s-app: heapster

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

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

最新版本的top命令的实现

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

monitoring_architecture.png

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

  • kubelet:提供节点/POD/容器使用信息,它封装了cAdvisor来提供这些核心系统指标;
  • resource estimator:可以在K8S中运行为Daemonset,并从Kubelet中获取裸的资源使用情况数据,经过处理后,变成资源的预估信息,用于高级调度使用。

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

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

root # kubectl api-versions  | grep metrics
metrics.k8s.io/v1beta1

我们可以通过下面的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/

部署Metrics Server需要注意的点

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

相关文章

  • k8s top命令

    K8S top命令的作用 我们通常可以基于top命令来查看节点上的资源使用情况,可以带两个参数nodes和pods...

  • 04-Metrics-Server 插件和top命令

    前言:使用top命令查看需k8s使用资源信息,需要安装Metrics-Server 插件。注意:这个kube-st...

  • top vmstat iostat glance

    TOP/Vmstat/iostat/Glance 命令详解 TOP命令详解 top命令和ps命令的基本作用是相同的...

  • Linux的top命令(操作篇)

    这里仅展示top命令的操作,想知道top命令的参数意义,请跳转Linux的top命令(分析篇) 命令选项 -b:以...

  • top命令详解

    linux命令之top 1、top命令简介 top命令是动态查看进程变化,监控linux的系统状况;它是常用的性能...

  • Linux的top命令(分析篇)

    这里仅展示top命令结果的参数含义,具体操作跳转Linux的top命令(操作篇)top命令是很强大的机器分析命令,...

  • top命令

    问题 Liunx的top命令如何使用? top命令中的VIRT是什么意思? top命令中的RES是什么意思? to...

  • Lniux的top命令

    Linux top命令详解 地址:Linux top命令的用法详细详解_南有南无-CSDN博客_linux top...

  • Linux top 命令详解

    概述 本文主要讲述两点内容: top 命令界面的参数解释 top 命令界面的常用交互操作 top 命令界面参数解释...

  • 2019-02-27 Top命令技巧

    2019-02-27 Top命令技巧 Top命令在使用时是有技巧的。 常见的快捷键汇总如下: 其他的命令:top ...

网友评论

      本文标题:k8s top命令

      本文链接:https://www.haomeiwen.com/subject/acmooctx.html