在 Kubernetes 中使用多个自定义指标适配器

Posted

技术标签:

【中文标题】在 Kubernetes 中使用多个自定义指标适配器【英文标题】:Using multiple custom metrics adapters in Kubernetes 【发布时间】:2021-02-11 16:49:12 【问题描述】:

我正在使用 GKE。

我有一个集群,它使用 stackdriver-adapter 来获取集群内的 GCP 指标。我正在使用这些指标来创建 HPA。这工作正常。

但现在我需要根据 prometheus 提供的指标创建 HPA。我正在尝试启动 prometheus-adapter,但它失败了,因为 API 服务已经由 stackdriver-adapter 创建。但如果我删除堆栈驱动程序,我目前的 HPA 将失败。

我们可以让 prometheus-adapter 和 stackdriver-adpater 在同一个集群中运行吗?

如果不是,我想我们需要将 prometheus-metrics 发送到 stackdriver?但这会不会很慢?

【问题讨论】:

查看文档Using Prometheus,您将在那里找到如何安装 Prometheus 并获取外部指标。之后,按照文档Custom and external metrics for autoscaling workloads 配置HPA。 【参考方案1】:

如cmets中所说:

查看文档Using Prometheus,您将在那里找到如何安装 Prometheus 并获取外部指标。之后,按照文档Custom and external metrics for autoscaling workloads 配置HPA。


您可以为 Prometheus 服务器配置一个 sidecar,它将数据从 Prometheus 发送到 Stackdriver。从此时起,您将能够在配置HPA 时将Prometheus 指标用作External metrics

在“安装”收集器之前,您需要检查以下要求:

您必须运行 compatible Prometheus server 并已将其配置为监控集群中的应用程序。要了解如何在集群上安装 Prometheus,请参阅 Prometheus Getting Started guide。

您必须已将集群配置为使用 Cloud Operations for GKE。有关说明,请参阅Installing Cloud Operations for GKE。

您必须拥有集群的 Kubernetes Engine 集群管理员角色。如需更多信息,请参阅GKE roles。

您必须确保您的服务帐户具有适当的权限。如需更多信息,请参阅Use Least Privilege Service Accounts for your Nodes。

-- Cloud.google.com: Stackdriver: Solutions: GKE: Prometheus: Before you begin

出于测试安装 Prometheus 和配置向 Stackdriver 传输数据的目的,我使用了以下脚本:

Github.com: Stackdriver: Stackdriver-prometheus-sidecar

步骤:

下载存储库: $ git clone https://github.com/Stackdriver/stackdriver-prometheus-sidecar.git 设置以下环境变量(值是示例):
export KUBE_NAMESPACE="prometheus" 
export KUBE_CLUSTER="gke-prometheus"
export GCP_REGION="europe-west3-c"
export GCP_PROJECT="awesome-project-12345" 
export SIDECAR_IMAGE_TAG="0.8.0"

SIDECAR_IMAGE_TAG 可以在这里找到:

Gcr.io: Stackdriver-prometheus: Stackdriver prometheus sidecar
运行脚本: kube/full/deploy.sh

使用 Stackdriver Sidecar 成功生成 Prometheus 后,您应该能够在 Cloud Console 中看到指标:

GCP Cloud Console (Web UI) -> Monitoring -> Metrics Explorer

例子:

从此时起,您可以按照配置HPA 的指南并将您的External metric 设置为自动缩放Deployment/Statefulset 的源:

Cloud.google.com: Kubernetes Engine: Tutorials: Autoscaling metrics

其他资源:

Kubernetes.io: Horizontal Pod Autoscaler Cloud.google.com: Custom and external metrics for autoscaling workloads

【讨论】:

以上是关于在 Kubernetes 中使用多个自定义指标适配器的主要内容,如果未能解决你的问题,请参考以下文章

HPA 缩减 kubernetes pod

使用 Prometheus Operator 监控自定义 kubernetes pod 指标

Prometheus 自定义指标没有出现在 custom.metrics Kubernetes 中

Kubernetes HPA(带有自定义指标)扩展策略

为啥 Kubernetes HPA 转换自定义指标?

使用 Prometheus 适配器的 Horizo​​ntal Pod Autoscaler (HPA) 自定义指标(单位是如何定义的?)