通过自定义指标学习 HPA 的操作器和适配器

概括

我在研究通过自定义指标实现HPA的过程中,获取了关于Operator和Adapter的相关知识,并与大家分享。请参考我在CloudNative Days Kansai 2019 Meetup上做的LT演讲。

スライド1.png

以下是关于下述内容的详细描述。

    • Pod Autoscaler

VPAとHPA

CPU使用率によるHPA
custom metricsによるHPA

Operatorとは
Adapterとは

Pod Autoscaler (Pod自动缩放器)

有VPA和HPA。

垂直 Pod 自动缩放器(VPA)

请帮忙增加或减少资源请求。

スライド56.png

HPA(水平 Pod 自动缩放器)

他可以增加或减少Pod数量。

スライド58.png

这篇文章是关于HPA的讨论。

根据CPU使用率的高低进行的HPA (Horizontal Pod Autoscaler)操作。

我根据《水平Pod自动扩展教程》的公式文档进行了尝试。

当我们对示例应用程序(php-apache)施加负载时,我们注意到Pod的数量会增加,如下图所示。因此我们可以确认高可用性HPA是按照CPU使用率实现的。

スライド12.png

通过定制指标实现水平自动扩展(Horizontal Pod Autoscaling)。

由于在 luxas/kubeadm-workshop 中有样例,所以我尝试着做了一下。

Manifest文件位于demos/monitoring目录下,示例应用程序(sample-metrics-app)似乎基于公开的http_requests指标来进行pod数量的增减示例。

スライド16.png

当访问示例应用程序(sample-metrics-app)时,我们可以看到以下幻灯片中Pod数量增加,确认基于名为http_requests的指标,HPA正如预期地工作。

スライド19.png

我已经确认了基于自定义度量标准的HPA的运作情况。虽然这很值得庆贺,但当我阅读了演示/监控的清单文件后,我有了一些疑问。

有什麼問題需要澄清? shé me ?)
或者
請問你有什麼疑問? nǐ ?)

运营商是什么? shì me)

スライド21.png

神秘的资源?

有一处指定了一种神秘的资源,名为ServiceMonitor和Prometheus。
请问它们是在什么时候、在哪里被定义,并且从什么时候开始可以使用呢?

スライド23.png

适配器?

看起来被认为是指标服务器的部署中,指定了一个名为prometheus-adapter的镜像。
什么是适配器(adapter)?

スライド24.png

这个指标服务是如何收集应用程序发布的指标的呢?(左边的如何?)
另外,HPA 控制器是如何获取这些指标的呢?(右边的如何?)

スライド27.png

调查方式

我决定整理记录在演示/监控清单文件中的各个定义。
为了实现这一目的,我编写了一个工具(loftkun/yaml2excel),该工具将清单中的每个元素输出为Excel文本框。

我們將生成Excel文件,是因為可以通過拖動相關元素,使它們靠近並用箭頭連接,這樣可以更方便地進行整理。
目前為止,整理工作需要手動進行,但我們希望能根據清單的相互關係自動化這一過程。
(如果您知道任何可以進行此類整理的好工具,請告訴我,將不勝感激。)

スライド28.png

调查结果

以下所示的结构如下。

スライド43.png

操作员

我会解释左边的幻灯片。

    1. 当部署 Prometheus Operator 后,会生成自定义的资源定义 (Custom Resource Definition, CRD),例如 ServiceMonitor 和 Prometheus。

 

    1. 因此,在部署 Prometheus Operator 后,可以部署一些指定 kind 为 ServiceMonitor 和 Prometheus 的对象。

在 ServiceMonitor 中,可以设置监视目标指标的端点。

Prometheus Operator 会根据 ServiceMonitor 中设置的端点生成 Prometheus 的配置文件 (prometheus.yml)。

通过这件事情,我理解了Operator是能够处理的CRD和实现处理的控制器,它是将人工操作以代码实现的东西。

适配器

我来解释一下上面的幻灯片右下方。

    1. 自定义指标服务器位于Prometheus和HPA控制器之间。

API服务是将自定义指标服务器注册到kube-api服务器的聚合层扩展区域的工具。
这样,HPA控制器似乎可以通过kube-api服务器通过自定义指标服务器获取Prometheus的度量标准。

在Prometheus和HPA控制器之间是不可能通信的情况下,Custom Metrics Server作为一个连接器提供了它们之间的兼容性。
由于Custom Metrics Server的镜像被命名为Prometheus-Adapter,我们可以理解它作为一个提供兼容性的适配器模式的实例。

总结

Prometheus Operatorによるメトリクスの収集を題材としてOperatorが何なのかを理解できたはず

Adapterパターンの具体的な事例としてprometheus-adapterを用いたCustom metrics serverを知ることができた

luxas/kubeadm-workshop は、custom metricsによるHPAを動かすサンプルとしてだけでなく、OperatorやAdapterについて理解する上でも非常に良いサンプルでした

如果这篇文章对你有所帮助,我会感到幸运。

广告
将在 10 秒后关闭
bannerAds