Kubernetes 基于自定义度量的HorizontalPodAutoscaler缩放-节点池级别度量
我目前正在尝试建立一个GKE集群,并根据自定义指标(GPU消耗量)配置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
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