内容提要
本文介绍了如何在Kubernetes中使用kubectl top命令进行监控。首先需要部署Metrics Server,这是Kubernetes的核心监控数据聚合器。安装前需启用API Aggregator,并确保API Server能访问Metrics Server。Metrics API提供当前度量数据,不保存历史数据。文中还提供了安装和测试Metrics Server的具体步骤及命令。
延伸解读
Metrics Server 的定位与依赖
Metrics Server 是 Kubernetes 集群的核心监控数据聚合器,kubeadm 默认不部署。它作为扩展的 APIServer,依赖 API Aggregator 才能工作。因此,安装前必须在 kube-apiserver 中启用 API Aggregator,并确保 API Server 能访问 Metrics Server Pod IP。这两个条件是使用 Metrics Server 的必备前提,否则 kubectl top 无法获取监控数据。
Metrics API 的数据特性
Metrics API 只提供当前度量数据,不保存历史数据,其 URI 为 /apis/metrics.k8s.io/。这意味着 kubectl top 只能查看实时资源使用情况,无法用于趋势分析或历史回溯。如果需要历史监控数据,需要额外部署其他监控系统。
安装注意事项与兼容性
安装 Metrics Server 时,国内环境可能无法下载 k8s.gcr.io 镜像,需要替换为可用的镜像地址。此外,根据 Kubernetes 版本不同,可能需要添加 --kubelet-insecure-tls 参数,或对于 <1.16 版本使用 --authorization-always-allow-paths=/livez,/readyz。部署后可通过 kubectl -n kube-system get deploy metrics-server 查看状态。
指标含义与解读
kubectl top 显示的 CPU 和内存单位与 Kubernetes 中的 request、limit 一致,CPU 单位 100m=0.1,内存单位 1Mi=1024Ki。Pod 的内存值是其实际使用量,也是做 limit 限制时判断 OOM 的依据,等于所有业务容器的总和,不包括 pause 容器。Node 的值并不等于该节点上所有 Pod 值的总和,也不等于直接在机器上运行 top 或 free 看到的值。
Q&A
如何在Kubernetes中安装Metrics Server?
可以通过下载yaml文件并运行命令kubectl apply -f components.yaml来安装Metrics Server。
Metrics Server的主要功能是什么?
Metrics Server是Kubernetes的核心监控数据聚合器,提供当前度量数据,但不保存历史数据。
使用kubectl top命令可以查看哪些信息?
使用kubectl top命令可以查看节点和Pod的CPU和内存使用情况。
在安装Metrics Server之前需要注意哪些配置?
需要在kube-apiserver中启用API Aggregator,并确保API Server能访问Metrics Server Pod IP。
Metrics API的URI是什么?
Metrics API的URI为/apis/metrics.k8s.io/。
Metrics Server支持哪些Kubernetes版本?
Metrics Server支持的Kubernetes版本包括1.8及以上,具体版本依赖于Metrics Server的版本。