我想将自定义指标添加到我现有的cpu指标中,所以我想要两个指标。 我的第二个指标必须是自定义指标/外部指标,该指标向Web服务器发出请求并获得一个值,这可能吗?
目前看起来像这样,但是我想添加第二个指标,但是如何?
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
正如我在docs中阅读的那样,kubernetes将使用更高的度量标准来确定。 有人为我提供了一个如何在我的案例中应用此自定义指标的示例吗?
答案 0 :(得分:2)
如果它是一个外部指标(即与Kubernetes对象关联的不的自定义指标):
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
- type: External
external:
metric:
name: your_metric
target:
type: Value
value: "100"
请注意,在这种情况下,HPA将尝试从External Metrics API查询your_metric
指标。这意味着该API必须存在于您的群集中,此配置才能起作用。
如果该度量标准与Kubernetes对象相关联,则可以使用type: Object
;如果该度量标准来自尝试自动缩放的Pod控制器(例如Deployment)的Pod,则可以使用{ {1}}。在这两种情况下,HPA都会尝试从Custom Metrics API获取指标。
注意(因为您似乎正在尝试使用Kubernetes中尚未使用的指标):
HPA只能与以下度量标准API对话:Resource Metrics API,Custom Metrics API,External Metrics API。
如果这些API之一未提供您的指标,则您必须创建一个指标管道,以将指标带入这些API之一。
例如,使用Prometheus和Prometheus Adapter:
编辑:解释指标API。
在下图中,绿色组件是您需要安装以提供相应的度量标准API的组件。
为群集中所有Pod和Node的CPU和内存使用情况指标提供服务。这些是预定义的指标(与其他两个API的自定义指标相反)。
度量标准的原始数据由cAdvisor收集,该数据作为每个节点上kubelet的一部分运行。指标由Metrics Server公开。
Metrics服务器实现Resource Metrics API。 Kubernetes中默认未安装它。这意味着,要在群集中启用Resource Metrics API,必须安装Metrics Server。
提供与Kubernetes对象关联的自定义指标。指标可以是您想要的任何内容。
您有责任收集要通过Custom Metrics API公开的指标。您可以通过在集群中安装“指标管道”来实现此目的。
您可以自己为度量标准管道选择组件。唯一的要求是指标管道能够:
度量指标管道的一种流行选择是使用Prometheus和Prometheus Adapter:
提供不与Kubernetes对象关联的自定义指标。
External Metrics API的工作方式与Custom Metrics API相同。唯一的区别是它具有不同的API路径(不包含对象,而仅包含度量标准名称)。
要提供外部指标API,在大多数情况下,您可以使用与自定义指标API相同的指标管道(例如Prometheus和Prometheus适配器)。