gpt4 book ai didi

kubernetes - 如何向 HPA 提供外部指标?

转载 作者:行者123 更新时间:2023-12-02 11:30:33 27 4
gpt4 key购买 nike

问题设置。 假设我有 2 个 pod,A 和 B。我希望能够根据来自某个任意来源的某个任意数字动态缩放 pod A。假设 pod B 是这样一个源:例如,它可以有一个 HTTP 服务器,它的端点在请求时以 pod A 的所需副本数进行响应。或者它可能是 ES 服务器或 SQL DB(无所谓)。
题。 我需要定义哪些 kubernetes 对象来实现这一点(除了 HPA)? HPA 应该知道它需要为当前指标查找 B 的哪些配置? B 的 API 应该是什么样子的(或者是否有任何限制?)?
我所做的研究。 不幸的是,官方文档并没有对此进行太多说明,除了声明存在这种可能性。还有两个存储库,one使用一些我在构建时遇到问题的 go 样板代码和 another一个没有任何使用说明(尽管据称确实满足“HTTP 上的外部指标”要求)。
通过查看 .yaml这些存储库中的配置,我得出了一个结论,除了 DeploymentService需要定义一个 APIService在 kubernetes API 中注册外部或自定义指标并将其与普通服务(您将在其中拥有 Pod)和少数 ClusterRole 链接的对象和 ClusterRoleBinding对象。但没有关于它的解释。此外,我什至无法像其他对象一样在我的本地集群(1.15 版本)中使用 kubectl 列出现有的 APIServices。

最佳答案

最简单的方法是将指标输入 Prometheus(这是一个普遍解决的问题),然后设置一个基于 Prometheus 的 HPA(也是一个普遍解决的问题)。
1. 将自己的指标提供给 Prometheus

  • Prometheus-Operator 开始监控集群本身,并访问 ServiceMonitor对象。 ServiceMonitors 是指向集群中服务的指针。他们让你的 pod /metrics端点被普罗米修斯服务器发现和抓取。
  • 编写一个 pod,从您的 3rd 方 API 读取指标并将它们显示在自己的 /metrics 中端点。这将是您的 API 和 Prometheus 格式之间的适配器。当然有客户:https://github.com/prometheus/client_python#exporting
  • 写个 Service类型 ClusterIP那代表你的 pod 。
  • 写个 ServiceMonitor指向一个服务。
  • 通过 Prometheus 仪表板查询您的自定义指标以确保完成此阶段。

  • 2. 设置基于 Prometheus 的 HPA
  • 设置 Prometheus-Adapter并按照 HPA 演练进行操作。
  • 或者按照指南https://github.com/stefanprodan/k8s-prom-hpa

  • 这看起来像是获得 HPA 的一大堆工作。但是,这里只有适配器 pod 是自定义部件。其他一切都是大多数集群中的标准堆栈设置,无论如何您都会获得许多其他用例。

    关于kubernetes - 如何向 HPA 提供外部指标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63709968/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com