嘿,亲爱的Kubernetes小达人们!今天我们来谈谈kubectl top命令,这是一把了解你的集群内资源使用情况的瑞士军刀。跟着我一起简单学习,让你的K8S管理更得心应手!
Step 1:kubectl top是啥?
首先,让我们解密kubectl top。这个命令是Kubernetes提供的一个工具,能够让你实时监控你的Pods和Nodes的资源使用情况,包括CPU和内存。想要知道哪个Pod吃掉了所有的CPU资源?kubectl top命令绝对是你的得力助手!
Step 2:安装Metrics Server
在使用kubectl top之前,你需要确保你的集群中已经安装了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
- 先到Metrics Server项目地址,查询对应版本支持那个K8S版本。如下图:
- 由于我安装的k8S版本是1.28.2,所以,需要下载上图的1.21+的版本。执行如下的命令:
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml
- 修改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
- 执行
kubectl apply -f components.yaml
命令部署。成功后如下图,这样就可以通过kubectl top
命令查看节点和pod的资源情况。
Step 3:kubectl top简单使用
现在,让我们开始使用kubectl top吧!
- 查看Node资源使用情况:
kubectl top nodes
这会显示你集群中所有Node的资源使用情况,包括CPU和内存。
- 查看Pod资源使用情况:
kubectl top pods
这会列出所有Namespace中的Pod资源使用情况,同样包括CPU和内存。
- 查看特定Namespace中Pod资源使用情况:
kubectl top pods -n your-namespace
将your-namespace
替换为你关心的Namespace名称。
Step 4:kubectl top高级使用
除了基本用法外,kubectl top还支持更高级的用法,比如:
- 按CPU或内存排序:
kubectl top pods --sort-by=cpu
通过这个命令,你可以按照CPU使用量进行排序,也可以替换为memory
以按内存使用量排序。
- 指定Pod名称查看详细信息:
kubectl top pod your-pod-name
将your-pod-name
替换为你关心的Pod的名称,以查看该Pod的详细资源使用情况。
有了以上的知识储备,我们来看看一道CKA的真题吧!
CKA真题
中文解析
切换 k8s 集群环境:kubectl config use-context k8s
Task
找出标签是 name=cpu-user
的 Pod,并过滤出使用 CPU 最高的 Pod,然后把它的名字写在已经存在的 /opt/KUTR00401/KUTR00401.txt
文件里(注意他没有说指定namespace,所以需要使用 -A 指定所有 namespace)。
做题解答
- 切换 k8s 集群环境
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
结语
掌握kubectl top
命令,就像是给你的Kubernetes集群装上了X光眼,让你随时随地了解资源的运行状况。赶紧试试吧,让你的K8S管理更加得心应手!