K8S 监控组件 metrics-server
metrics-server
是 Kubernetes 集群资源使用情况的聚合器,Kubernetes 中有些组件依赖资源指标API(metric API)的功能 ,如 kubectl top
, hpa
。如果没有资源指标 API 接口,这些组件或命令都无法运行。
$ kubectl top pods
error: Metrics API not available
- 通过 Metrics API 可以获取指定 node 或者 pod 的当前资源使用情况(而无法获取历史数据)
- Metrics API的api路径:
/apis/metrics.k8s.io/
- Metrics API的使用需要在K8S集群中成功部署
metrics-server
先决条件
- Kubernetes 1.28+
- kubectl 1.28+
版本选择
查看版本兼容矩阵,选择 Metrics Server 0.7.x
版本
获取 YAML
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml -O metrics-server.yaml
提示
需要确认部署文件内的容器镜像版本号:image: registry.k8s.io/metrics-server/metrics-server:v0.7.2
安装
kubectl apply -f components.yaml
验证 kube-api
$ kubectl api-versions|grep metrics
metrics.eks.amazonaws.com/v1
metrics.k8s.io/v1beta1
# 获取指定API Metrics
kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes
kubectl get --raw /apis/metrics.k8s.io/v1beta1/pods
可以使用 top
访问 Metrics API 了
kubectl top nodes
kubectl top pods
高可用性
只需将值设置 replicas
为大于 1 即可。
资源配额
v0.5.0 开始,Metrics Server 默认 100m
CPU, 200Mi
内存。
在以下范围内,默认的资源足够应付。
对于超过 100 个节点的集群,需额外分配:
- 每个节点
1m
个核心 - 每个节点
2Mi
内存
其他配置
根据您的集群设置,您可能还需要更改传递给 Metrics Server 容器的标志。最有用的标志:
--kubelet-preferred-address-types
确定连接到特定节点的地址时使用的节点地址类型的优先级(默认[Hostname、InternalDNS、InternalIP、ExternalDNS、ExternalIP])--kubelet-insecure-tls
不验证 Kubelets 提供的服务证书的 CA。仅用于测试目的。--requestheader-client-ca-file
指定根证书包以验证传入请求的客户端证书。--node-selector
可以完成根据标签从指定节点抓取指标
您可以通过运行以下命令获取 Metrics Server 配置标志的完整列表:
docker run --rm registry.k8s.io/metrics-server/metrics-server:v0.7.2 --help