当前位置:   article > 正文

揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?

kubectl top

往期精彩:

kubectl top 是一个用于查看 Kubernetes 集群中资源使用情况的命令。它可以显示节点或Pod的CPU、内存和存储的使用情况。该命令要求正确配置Metrics Server并在服务器上工作。

什么是Metrics Server

Metrics ServerKubernetes 内置自动缩放管道的可扩展、高效的容器资源指标来源。Metrics ServerKubelets 收集资源指标,并通过 Metrics API Kubernetes apiserver 中公开它们,以供 Horizontal Pod AutoscalerVertical Pod Autoscaler 使用。Metrics API 也可以通过访问kubectl top,从而更容易调试自动缩放管道。

安装Metrics Server

  1. 先到Metrics Server项目地址,查询对应版本支持那个K8S版本。如下图:

Metrics Server项目地址

  1. 由于我安装的k8S版本是1.28.2,所以,需要下载上图的1.21+的版本。执行如下的命令:
wget  https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml
  • 1
  1. 修改components.yaml配置文件,把镜像的地址修改阿里云镜像,并添加一个参数kubelet-insecure-tls,如下
      containers:
      - args:
        - --cert-dir=/tmp
        - --secure-port=10250
        - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
        - --kubelet-use-node-status-port
        - --metric-resolution=15s
        - --kubelet-insecure-tls
        image: registry.aliyuncs.com/google_containers/metrics-server:v0.7.0
        imagePullPolicy: IfNotPresent
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  1. 执行kubectl apply -f components.yaml命令部署。成功后如下图,这样就可以通过kubectl top 命令查看节点和pod的资源情况。

执行成功

kubectl top基本用法

详细的用法可以通过kebectl top pod|node -h。 以下列举工作中常用的命令:

  1. 查看集群中所有节点资源使用情况:
kubectl top nodes 
  • 1

执行结果

  1. 查看集群中某个节点资源使用情况
kubectl top nodes k8s-node1
  • 1

执行结果

  1. 查询集群中所有Pod资源使用情况:
kubectl top pods  -A  
  • 1

-A 是列举所有命名空间的pod,默认是default名空间

执行结果

  1. 查询集群中所有Pod资源情况,并安装CPU利用进行排序:
 kubectl top pods  -A --sort-by=cpu
  • 1

sort-by: 支持两个参数 cpu和memory

执行结果

  1. 通过lebel值查询Pod资源情况
kubectl top pod -l k8s-app=kube-dns  -A
  • 1

执行结果

CKA真题

CKA真题-查看pod

切换 k8s 集群环境:kubectl config use-context k8s
Task:
找出标签是name=cpu-user的Pod,并过滤出使用CPU最高的 Pod,然后把它的名字写在已经存在的 /opt/KUTR00401/KUTR00401.txt文件里(注意他没有说指定namespace,所以需要使用-A指定所有 namespace)。

我先在K8S环境新建了两个Pod模拟高CPU的应用,如下图:

模拟环境

解题思路:

#切换集群
kubectl config use-context k8s

# 通过管道符,一条命令把结果保存到文件中
 kubectl top pod -l name=cpu-user \
 --sort-by=cpu  --no-headers=true -A \
 | head -n 1 | awk '{print $2}'  >> \
 /opt/KUTR00401/KUTR00401.txt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • -A:列出所有的命名空间的Pod
  • –no-headers=true:返回的结果没有表头,如下图
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/671783
推荐阅读
相关标签
  

闽ICP备14008679号