【问题标题】:HPA not able to fetch metrics from Prometheus in KubernetesHPA 无法从 Kubernetes 中的 Prometheus 获取指标
【发布时间】:2019-06-19 11:22:43
【问题描述】:

我有一个两节点 Kubernetes 集群,即一个主节点和两个工作节点。出于监控目的,我部署了 Prometheus 和 Grafana。现在,我想根据 CPU 使用情况自动缩放 pod。但是即使在配置了 Grafana 和 Prometheus 之后,我仍然收到以下错误 ---

Name:                                                  php-apache
Namespace:                                             default
Labels:                                                <none>
Annotations:                                           <none>
CreationTimestamp:                                     Mon, 17 Jun 2019 12:33:01 +0530
Reference:                                             Deployment/php-apache
Metrics:                                               ( current / target )
  resource cpu on pods  (as a percentage of request):  <unknown> / 50%
Min replicas:                                          1
Max replicas:                                          10
Deployment pods:                                       1 current / 0 desired
Conditions:
  Type           Status  Reason                   Message
  ----           ------  ------                   -------
  AbleToScale    True    SucceededGetScale        the HPA controller was able to get the target's current scale
  ScalingActive  False   FailedGetResourceMetric  the HPA was unable to compute the replica count: unable to get metrics for resource cpu: unable to fetch metrics from resource metrics API: the server could not find the requested resource (get pods.metrics.k8s.io)
Events:
  Type     Reason                   Age                      From                       Message
  ----     ------                   ----                     ----                       -------
  Warning  FailedGetResourceMetric  112s (x12408 over 2d4h)  horizontal-pod-autoscaler  unable to get metrics for resource cpu: unable to fetch metrics from resource metrics API: the server could not find the requested resource (get pods.metrics.k8s.io)

谁能告诉我为什么 Kubernetes 不从 Prometheus 获取指标?

【问题讨论】:

    标签: kubernetes grafana prometheus


    【解决方案1】:

    Kubernetes 从metrics.k8s.io API(通常由可以单独安装的metrics-server 实现)或custom.metrics.k8s.io API(可以是任何类型的指标,通常由第三方提供)检索指标。要在用于 kubernetes 的 HPA 中使用 prometheus,需要安装用于自定义指标 API 的 Prometheus Adapter。

    可以在here找到设置演练。

    【讨论】:

    • 我这里没有使用 https。我了解到,为了使用自定义指标,我们必须首先配置一个聚合器,然后向它注册自定义指标 API,例如 Prometheus Adapter。那么我们是否需要自签名证书来配置聚合器?
    【解决方案2】:

    heapster 现已弃用:https://github.com/kubernetes-retired/heapster

    要在集群上启用自动缩放,您可以使用 HPA(horizo​​ntal pod auto-scaler),还可以安装指标服务器来检查所有指标。

    要在 kubernetes 上安装指标服务器,您也可以按照本指南进行操作:

    amazon : https://docs.aws.amazon.com/eks/latest/userguide/metrics-server.html
    https://github.com/kubernetes-incubator/metrics-server
    https://medium.com/@cagri.ersen/kubernetes-metrics-server-installation-d93380de008
    

    【讨论】:

      【解决方案3】:

      您无需自定义指标即可使用 HPA 根据 CPU 使用情况自动扩展 Pod。

      正如@Blokje5 前面提到的,您只需要安装“kube-state-metrics”。

      最方便的方法是使用专用的舵图 (kube-state-metrics)。

      提示:使用 'helm install' 覆盖参数为 'kube-state-metrics' Pod 创建 ServiceMonitor 对象,以允许 Prometheus 发现新的指标抓取目标,例如:

      helm install stable/kube-state-metrics --set prometheus.monitor.enabled=true
      

      备注:注意现有 Prometheus 资源对象/配置中定义的“serviceMonitorSelector”,使其与“kube-state-metrics”的 ServiceMonitor 定义相匹配。这是为了在 Prometheus 控制台中提供 Pod 的指标。

      【讨论】:

        猜你喜欢
        • 2019-09-07
        • 1970-01-01
        • 2021-07-12
        • 1970-01-01
        • 2019-08-09
        • 2016-10-04
        • 2021-02-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多