Kubernetes 基于自定义度量的HorizontalPodAutoscaler缩放-节点池级别度量

Kubernetes 基于自定义度量的HorizontalPodAutoscaler缩放-节点池级别度量,kubernetes,google-kubernetes-engine,Kubernetes,Google Kubernetes Engine,我目前正在尝试建立一个GKE集群,并根据自定义指标(GPU消耗量)配置HorizontalPodAutoscaler。 我有两个节点池,我想根据每个节点池的平均GPU消耗水平扩展它们。我配置了两个相同的HPA,如下所示: apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: ner spec: scaleTargetRef: apiVersion: apps/v1 kin

我目前正在尝试建立一个GKE集群,并根据自定义指标(GPU消耗量)配置
HorizontalPodAutoscaler
。 我有两个节点池,我想根据每个节点池的平均GPU消耗水平扩展它们。我配置了两个相同的HPA,如下所示:

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: ner
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: ner
  minReplicas: 1
  maxReplicas: 10
  metrics:
    - type: External
      external:
        metric:
          name: kubernetes.io|container|accelerator|duty_cycle
        target:
          type: AverageValue
          averageValue: 60
其中,我只替换了
scaleTargetRef
,但结果表明,该度量似乎是在集群级别聚合的。我仔细检查了
scaleTargetRef
是否正确定义


是否有一种方法可以通过
container\u name
node\u pool
过滤度量?任何其他建议都会很棒

因此,我认为您正在寻找k8集群的指标,特别是通过
容器名称
节点池

您可以在HPA对象中使用五种类型的度量(自动缩放/v2beta2)

编辑更新

  • 外部#如果需要,请使用此选项
  • 反对
  • 豆荚
  • 资源


编辑更新


对于GKP

@Jules-我已经更新了答案,尽管这是一个棘手的问题。然而,我找到了一个解决办法。请看一看。嘿@Gupta,非常感谢你的回答,看起来这是正确的做法:D但是,当将我的
yaml
修改为你建议的时,我遇到了以下问题:
HorizontalPodAutoscaler“ner scaler”无效:spec.metrics[0].containerResource:必需值:必须填充给定度量源的信息(仅在启用HPAContainerMetrics功能时才允许)
任何建议?@Jules-如果您看到我明确指定的答案
api版本
,则错误的原因是
Kubernetes版本
。我正在使用
v1.20.2
。如果我没有错,您必须更新kubect版本。我的集群也在使用
v1.20.2
。但是,在进一步挖掘之后,我似乎需要启用
hpa容器技术
请参阅。我使用的是GKE集群,似乎无法启用/禁用功能。@Jules Follow for custum metrics
k explain HorizontalPodAutoscaler.spec.metrics.type  --api-version=autoscaling/v2beta2
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: ner
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: ner
  minReplicas: 1
  maxReplicas: 10
  metrics:
    - type: ContainerResource
      containerResource:
        name: gpu
        container: your-application-container
        target:
          type: Utilization
          averageUtilization: 60