首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 24-03-17 22:36
  • 4417
  • 11109
blog.csdn.net

往期精彩:

  • 提升CKA考试胜算:一文带你全面了解RBAC权限控制!

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

什么是Metrics Server

Metrics Server 是 Kubernetes 内置自动缩放管道的可扩展、高效的容器资源指标来源。Metrics Server 从 Kubelets 收集资源指标,并通过 Metrics API 在 Kubernetes apiserver 中公开它们,以供 Horizontal Pod Autoscaler 和Vertical 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:返回的结果没有表头,如下图

往期精彩:

  • 提升CKA考试胜算:一文带你全面了解RBAC权限控制!

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

什么是Metrics Server

Metrics Server 是 Kubernetes 内置自动缩放管道的可扩展、高效的容器资源指标来源。Metrics Server 从 Kubelets 收集资源指标,并通过 Metrics API 在 Kubernetes apiserver 中公开它们,以供 Horizontal Pod Autoscaler 和Vertical 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:返回的结果没有表头,如下图
注:本文转载自blog.csdn.net的didiplus的文章"https://blog.csdn.net/sinat_28521487/article/details/136019856"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

115
云原生
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top