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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?

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版本。如下图:

  1. 由于我安装的k8S版本是1.28.2,所以,需要下载上图的1.21+的版本。执行如下的命令:
wget  https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml
  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. 执行kubectl apply -f components.yaml命令部署。成功后如下图,这样就可以通过kubectl top 命令查看节点和pod的资源情况。

kubectl top基本用法

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

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

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

  1. 查询集群中所有Pod资源使用情况:
kubectl top pods  -A  # -A 是列举所有命名空间的pod,默认是default名空间

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

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

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

CKA真题

切换 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
  • -A:列出所有的命名空间的Pod
  • --no-headers=true:返回的结果没有表头

https://player.bilibili.com/player.html?bvid=BV1um411f7Ns&p=16&page=16&autoplay=0

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
5天前
|
消息中间件 运维 Kubernetes
构建高效自动化运维体系:Ansible与Kubernetes的融合实践
【5月更文挑战第9天】随着云计算和微服务架构的普及,自动化运维成为确保系统可靠性和效率的关键。本文将深入探讨如何通过Ansible和Kubernetes的集成,构建一个强大的自动化运维体系。我们将分析Ansible的配置管理功能以及Kubernetes容器编排的优势,并展示如何将二者结合,以实现持续部署、快速扩展和高效管理现代云原生应用。文章还将涵盖实际案例,帮助读者理解在真实环境下如何利用这些工具优化运维流程。
|
5天前
|
运维 Kubernetes Cloud Native
构建高效云原生运维体系:Kubernetes最佳实践
【5月更文挑战第9天】 在动态和快速演变的云计算环境中,高效的运维是确保应用稳定性与性能的关键。本文将深入探讨在Kubernetes环境下,如何通过一系列最佳实践来构建一个高效且响应灵敏的云原生运维体系。文章不仅涵盖了容器化技术的选择与优化、自动化部署、持续集成/持续交付(CI/CD)流程的整合,还讨论了监控、日志管理以及灾难恢复策略的重要性。这些实践旨在帮助运维团队有效应对微服务架构下的复杂性,确保系统可靠性及业务的连续性。
|
5天前
|
iOS开发 MacOS Windows
|
4天前
|
存储 Kubernetes 安全
Kubernetes 命令大全
Kubernetes 命令大全
|
4天前
|
运维 Kubernetes Shell
Kubernetes详解(十二)——节点选择器与资源注解
Kubernetes详解(十二)——节点选择器与资源注解
21 2
|
4天前
|
运维 Kubernetes Linux
Kubernetes详解(十)——Pod对象高级控制命令
Kubernetes详解(十)——Pod对象高级控制命令
12 0
|
5天前
|
运维 Kubernetes Linux
Kubernetes详解(九)——资源配置清单创建Pod实战
Kubernetes详解(九)——资源配置清单创建Pod实战
19 2
|
5天前
|
JSON Kubernetes API
Kubernetes详解(八)——Kubernetes资源配置清单
Kubernetes详解(八)——Kubernetes资源配置清单
14 2
|
5天前
|
存储 Kubernetes 关系型数据库
Kubernetes详解(二)——Kubernetes结构与资源对象
Kubernetes详解(二)——Kubernetes结构与资源对象
19 0
|
5天前
|
存储 运维 Kubernetes
构建高效自动化运维体系:Ansible与Kubernetes的协同实践
【5月更文挑战第2天】随着云计算和微服务架构的兴起,自动化运维成为保障系统稳定性与效率的关键。本文将深入探讨如何利用Ansible作为配置管理工具,结合Kubernetes容器编排能力,共同打造一个高效、可靠的自动化运维体系。通过剖析二者的整合策略及具体操作步骤,为读者提供一套提升运维效率、降低人为错误的实用解决方案。

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多