通过自定义指标学习 HPA 的操作器和适配器
概括
我在研究通过自定义指标实现HPA的过程中,获取了关于Operator和Adapter的相关知识,并与大家分享。请参考我在CloudNative Days Kansai 2019 Meetup上做的LT演讲。
以下是关于下述内容的详细描述。
-
- Pod Autoscaler
VPAとHPA
CPU使用率によるHPA
custom metricsによるHPA
Operatorとは
Adapterとは
Pod Autoscaler (Pod自动缩放器)
有VPA和HPA。
垂直 Pod 自动缩放器(VPA)
请帮忙增加或减少资源请求。
HPA(水平 Pod 自动缩放器)
他可以增加或减少Pod数量。
这篇文章是关于HPA的讨论。
根据CPU使用率的高低进行的HPA (Horizontal Pod Autoscaler)操作。
我根据《水平Pod自动扩展教程》的公式文档进行了尝试。
当我们对示例应用程序(php-apache)施加负载时,我们注意到Pod的数量会增加,如下图所示。因此我们可以确认高可用性HPA是按照CPU使用率实现的。
通过定制指标实现水平自动扩展(Horizontal Pod Autoscaling)。
由于在 luxas/kubeadm-workshop 中有样例,所以我尝试着做了一下。
Manifest文件位于demos/monitoring目录下,示例应用程序(sample-metrics-app)似乎基于公开的http_requests指标来进行pod数量的增减示例。
当访问示例应用程序(sample-metrics-app)时,我们可以看到以下幻灯片中Pod数量增加,确认基于名为http_requests的指标,HPA正如预期地工作。
我已经确认了基于自定义度量标准的HPA的运作情况。虽然这很值得庆贺,但当我阅读了演示/监控的清单文件后,我有了一些疑问。
有什麼問題需要澄清? shé me ?)
或者
請問你有什麼疑問? nǐ ?)
运营商是什么? shì me)
神秘的资源?
有一处指定了一种神秘的资源,名为ServiceMonitor和Prometheus。
请问它们是在什么时候、在哪里被定义,并且从什么时候开始可以使用呢?
适配器?
看起来被认为是指标服务器的部署中,指定了一个名为prometheus-adapter的镜像。
什么是适配器(adapter)?
这个指标服务是如何收集应用程序发布的指标的呢?(左边的如何?)
另外,HPA 控制器是如何获取这些指标的呢?(右边的如何?)
调查方式
我决定整理记录在演示/监控清单文件中的各个定义。
为了实现这一目的,我编写了一个工具(loftkun/yaml2excel),该工具将清单中的每个元素输出为Excel文本框。
我們將生成Excel文件,是因為可以通過拖動相關元素,使它們靠近並用箭頭連接,這樣可以更方便地進行整理。
目前為止,整理工作需要手動進行,但我們希望能根據清單的相互關係自動化這一過程。
(如果您知道任何可以進行此類整理的好工具,請告訴我,將不勝感激。)
调查结果
以下所示的结构如下。
操作员
我会解释左边的幻灯片。
-
- 当部署 Prometheus Operator 后,会生成自定义的资源定义 (Custom Resource Definition, CRD),例如 ServiceMonitor 和 Prometheus。
-
- 因此,在部署 Prometheus Operator 后,可以部署一些指定 kind 为 ServiceMonitor 和 Prometheus 的对象。
在 ServiceMonitor 中,可以设置监视目标指标的端点。
Prometheus Operator 会根据 ServiceMonitor 中设置的端点生成 Prometheus 的配置文件 (prometheus.yml)。
通过这件事情,我理解了Operator是能够处理的CRD和实现处理的控制器,它是将人工操作以代码实现的东西。
适配器
我来解释一下上面的幻灯片右下方。
-
- 自定义指标服务器位于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について理解する上でも非常に良いサンプルでした
如果这篇文章对你有所帮助,我会感到幸运。