跳到主要内容

安装 Kubernetes Metrics Server

Kubernetes 监控服务器

Metrics Server 是一个可扩展、高效的容器资源指标来源,专为 Kubernetes 内置的自动扩缩容管道而构建。

Metrics Server 从 Kubelet 收集资源指标,并通过 Metrics API 在 Kubernetes apiserver 中公开,以供水平 Pod 自动扩缩容器和垂直 Pod 自动扩缩容器使用。Metrics API 也可以被 kubectl top 访问,从而更容易调试自动扩缩容管道。

Metrics Server 并不适用于非自动扩缩容目的。例如,不要将其用于将指标转发到监控解决方案,或作为监控解决方案指标的来源。在这种情况下,请直接从 Kubelet /metrics/resource 端点收集指标。

Metrics Server 提供:

  • 一个适用于大多数集群的单一部署(请参阅要求)
  • 快速自动扩展,每 15 秒收集一次指标。
  • 资源效率,每个集群节点使用 1 毫核心的 CPU 和 2MB 的内存。
  • 可扩展支持最多 5000 个节点的集群。

用例

您可以使用 Metrics Server 来:

  • 基于 CPU/内存的水平自动扩展(了解更多关于水平自动扩展的信息)
  • 自动调整/建议容器所需的资源(了解更多关于垂直自动扩展的信息)

当您需要以下情况时,请不要使用 Metrics Server:

  • 非 Kubernetes 集群
  • 准确的资源使用指标来源
  • 基于 CPU/内存以外的其他资源的水平自动扩展

对于不支持的用例,请查看完整的监控解决方案,如 Prometheus。

要求

Metrics Server 对集群和网络配置有特定要求。这些要求并不是所有集群发行版的默认设置。在使用 Metrics Server 之前,请确保您的集群发行版支持这些要求:

  • Metrics Server 必须能够通过容器 IP 地址(如果启用了 hostNetwork,则为节点 IP)从 kube-apiserver 访问。
  • kube-apiserver 必须启用聚合层。
  • 节点必须启用 Webhook 认证和授权。
  • Kubelet 证书需要由集群证书授权机构签名(或者通过将 --kubelet-insecure-tls 传递给 Metrics Server 来禁用证书验证)
  • 容器运行时必须实现容器指标 RPC(或者支持 cAdvisor)

安装

可以通过运行以下命令安装最新的 Metrics Server 版本:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

以前版本的安装说明可以在 Metrics Server 发布页面找到。

兼容性矩阵:

度量服务器度量 API 组/版本支持的 Kubernetes 版本
0.6.xmetrics.k8s.io/v1beta1*1.19+
0.5.xmetrics.k8s.io/v1beta1*1.8+
0.4.xmetrics.k8s.io/v1beta1*1.8+
0.3.xmetrics.k8s.io/v1beta11.8-1.21

*对于 <1.16 需要传递 --authorization-always-allow-paths=/livez,/readyz 命令行标志

高可用性

最新的 Metrics Server 版本可以通过运行以下命令以高可用模式安装:

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 的请求在两个实例之间进行负载均衡。

安全上下文

Metrics Server 需要 CAP_NET_BIND_SERVICE 能力,以便以非根用户身份绑定到特权端口。如果您在使用 PSP 或其他机制限制 Pod 能力的环境中运行 Metrics Server,请确保允许 Metrics Server 使用此能力。即使您使用 --secure-port 标志将 Metrics Server 绑定的端口更改为非特权端口,这一点也适用。

扩展

从 v0.5.0 开始,Metrics Server 提供了默认的资源请求,这应该能保证大多数集群配置(最多 100 个节点)的良好性能:

  • 100m 核心 CPU
  • 200MiB 内存

Metrics Server 的资源使用依赖于多个独立的维度,形成了一个可扩展性范围。默认的 Metrics Server 配置应适用于不超过以下任何阈值的集群:

数量命名空间阈值集群阈值
#Nodes不适用100
#每个节点的 Pods7070
# 带有 HPA 的部署100100

资源可以根据集群中的节点数量成比例地进行调整。对于超过 100 个节点的集群,额外分配:

  • 每个节点 1m 核心
  • 每个节点 2MiB 内存

您可以使用相同的方法来降低资源请求,但在某个边界上,这可能会影响其他可扩展性维度,例如每个节点的最大 Pod 数量。

配置

根据您的集群设置,您可能还需要更改传递给 Metrics Server 容器的标志。最有用的标志:

  • --kubelet-preferred-address-types - 在确定连接到特定节点的地址时使用的节点地址类型的优先级(默认值 [Hostname,InternalDNS,InternalIP,ExternalDNS,ExternalIP])
  • --kubelet-insecure-tls - 不验证 Kubelet 提供的服务证书的 CA。仅用于测试目的。
  • --requestheader-client-ca-file - 指定一个根证书包,用于验证传入请求的客户端证书。

您可以通过运行以下命令获取 Metrics Server 配置标志的完整列表:

docker run --rm k8s.gcr.io/metrics-server/metrics-server:v0.5.0 --help

Helm Chart

此 Helm 图表可以在您的集群中部署 metric-server 服务。

设计

Metrics Server 是 Kubernetes 监控架构中核心指标管道的一个组件。

有关更多信息,请参见:

有问题吗?

在发布问题之前,请先查看常见问题和已知问题。

了解如何在社区页面与 Kubernetes 社区互动。

您可以通过以下方式联系该项目的维护者:

该项目由 SIG 仪器组维护

行为准则

参与 Kubernetes 社区受 Kubernetes 行为准则的管理。