Metrics Server 是 Kubernetes 内置自动缩放管道的可扩展、高效的容器资源指标来源。
Metrics Server 从 Kubelet 收集资源指标,并通过 Metrics API 将它们公开在 Kubernetes apiserver 中,供 Horizontal Pod Autoscaler 和 Vertical Pod Autoscaler 使用。 Metrics API 还可以通过kubectl top
访问,从而更轻松地调试自动缩放管道。
警告
Metrics Server 仅用于自动缩放目的。例如,请勿将其用于将指标转发到监控解决方案,或作为监控解决方案指标的来源。在这种情况下,请直接从 Kubelet /metrics/resource
端点收集指标。
指标服务器提供:
您可以将 Metrics Server 用于:
当您需要以下功能时,请勿使用 Metrics Server:
对于不受支持的用例,请查看 Prometheus 等完整的监控解决方案。
Metrics Server 对集群和网络配置有特定要求。这些要求并不是所有集群发行版的默认要求。在使用 Metrics Server 之前,请确保您的集群发行版支持这些要求:
--kubelet-insecure-tls
传递到 Metrics Server 来禁用证书验证)hostNetwork
,则需要访问节点 IP 和自定义端口)。阅读有关控制平面到节点通信的更多信息。.status.addresses
中的地址和.status.daemonEndpoints.kubeletEndpoint.port
字段中的端口(默认 10250)。 Metrics Server 将根据kubelet-preferred-address-types
命令行标志提供的列表选择第一个节点地址(清单中的默认InternalIP,ExternalIP,Hostname
)。 Metrics Server 可以直接从 YAML 清单安装,也可以通过官方 Helm 图表安装。要从Components.yaml清单安装最新的 Metrics Server 版本,请运行以下命令。
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
以前版本的安装说明可以在 Metrics Server 版本中找到。
指标服务器 | 指标 API 组/版本 | 支持的 Kubernetes 版本 |
---|---|---|
0.7.x | metrics.k8s.io/v1beta1 | 1.19+ |
0.6.x | metrics.k8s.io/v1beta1 | 1.19+ |
0.5.x | metrics.k8s.io/v1beta1 | *1.8+ |
0.4.x | metrics.k8s.io/v1beta1 | *1.8+ |
0.3.x | metrics.k8s.io/v1beta1 | 1.8-1.21 |
*低于 v1.16 的 Kubernetes 版本需要传递--authorization-always-allow-paths=/livez,/readyz
命令行标志
Metrics Server 可以直接从 YAML 清单或通过官方 Helm 图表以高可用性模式安装,方法是将replicas
值设置为大于1
。要从high-availability.yaml清单以高可用性模式安装最新的 Metrics Server 版本,请运行以下命令。
在 Kubernetes v1.21+ 上:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml
在 Kubernetes v1.19-1.21 上:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability.yaml
笔记
此配置需要有一个至少有 2 个可以在其上调度 Metrics Server 的节点的集群。
此外,为了最大限度地提高此高可用配置的效率,建议将--enable-aggregator-routing=true
CLI 标志添加到 kube-apiserver,以便发送到 Metrics Server 的请求在两个实例之间实现负载平衡。
Helm 图表作为此存储库中的附加组件进行维护,并发布到gh-pages
分支上支持的图表存储库中。每个 Metrics Server 版本都会发布新版本的图表,如果有需要也可以单独发布。不应直接引用master
分支上的图表,因为它可能包含自上次发布以来的修改,要查看图表代码,请使用图表发布标签。
Metrics Server 需要CAP_NET_BIND_SERVICE
功能才能以非 root 身份绑定到特权端口。如果您在使用 PSS 或其他机制限制 Pod 功能的环境中运行 Metrics Server,请确保允许 Metrics Server 使用此功能。即使您使用--secure-port
标志来更改 Metrics Server 绑定到非特权端口的端口,这也适用。
从 v0.5.0 开始,Metrics Server 附带了默认资源请求,可以保证大多数最多 100 个节点的集群配置具有良好的性能:
Metrics Server 资源使用情况取决于多个独立维度,从而创建可扩展性范围。默认 Metrics Server 配置应在不超过下列任何阈值的集群中运行:
数量 | 命名空间阈值 | 集群阈值 |
---|---|---|
#节点 | 不适用 | 100 |
#每个节点的 Pods | 70 | 70 |
#使用 HPA 进行部署 | 100 | 100 |
资源可以根据集群中的节点数量按比例调整。对于超过100个节点的集群,额外分配:
您可以使用相同的方法来降低资源请求,但是存在一个边界,这可能会影响其他可扩展性维度,例如每个节点的最大 Pod 数量。
根据您的集群设置,您可能还需要更改传递到 Metrics Server 容器的标志。最有用的标志:
--kubelet-preferred-address-types
- 确定连接到特定节点的地址时使用的节点地址类型的优先级(默认 [Hostname,InternalDNS,InternalIP,ExternalDNS,ExternalIP])--kubelet-insecure-tls
- 不验证 Kubelet 提供的服务证书的 CA。仅用于测试目的。--requestheader-client-ca-file
- 指定用于验证传入请求的客户端证书的根证书包。--node-selector
- 可以完成根据标签从指定节点上抓取指标您可以通过运行以下命令来获取 Metrics Server 配置标志的完整列表:
docker run --rm registry.k8s.io/metrics-server/metrics-server:v0.7.0 --help
Metrics Server 是 Kubernetes 监控架构中描述的核心指标管道中的一个组件。
有关更多信息,请参阅:
在发布问题之前,请先查看常见问题和已知问题。
了解如何在社区页面上参与 Kubernetes 社区。
您可以通过以下方式联系该项目的维护人员:
该项目由 SIG Instrumentation 维护
参与 Kubernetes 社区受 Kubernetes 行为准则约束。