kubernetes - HPA labelSelector 不过滤外部指标
问题描述
我正在尝试在 EKS 集群(v1.13.10-eks-5ac0f1)上设置基于自定义指标的自动缩放器,但看起来外部指标标签的 labelSelector 过滤器没有过滤。
使用k8s-prometheus-adapter和metrics-server (v0.3.6) 我已经成功地将 prometheus 中的指标导出为 kubernetes 外部指标。
该指标已正确导出并在 kubernetes api 上可见:
kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1/namespaces/*/sqs_queue_messages"
{
"kind": "ExternalMetricValueList",
"apiVersion": "external.metrics.k8s.io/v1beta1",
"metadata": {
"selfLink": "/apis/external.metrics.k8s.io/v1beta1/namespaces/%2A/sqs_queue_messages"
},
"items": [
{
"metricName": "sqs_queue_messages",
"metricLabels": {
"__name__": "sqs_queue_messages",
...
"queue_name": "temp-queue"
},
"timestamp": "2019-11-07T21:14:44Z",
"value": "0"
},
{
"metricName": "sqs_queue_messages",
"metricLabels": {
"__name__": "sqs_queue_messages",
...
"queue_name": "random-queue"
},
"timestamp": "2019-11-07T21:14:44Z",
"value": "0"
}
]
}
水平 pod-autoscaler.yml
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: api
namespace: api
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: api
minReplicas: 2
maxReplicas: 5
metrics:
- external:
metricName: sqs_queue_messages
metricSelector:
matchLabels:
queue_name: temp-queue
targetAverageValue: "100"
type: External
问题是 HPA 不仅仅选择具有匹配标签的指标,事实上通过查看日志我可以看到执行了以下调用
kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1/namespaces/*/sqs_queue_messages?labelSelector=queue_name%3Dtemp-queue"
预期结果只是 1 个项目(一个匹配的queue_name: temp-queue标签),但过滤器被忽略并返回所有结果。
解决方案
推荐阅读
- c# - 如何基于涉及第一个元素的谓词转换可观察对象
- python - GluonCV - 量化姿态估计/目标检测模型
- ios - 拉动刷新顶部的白色间隙
- arrays - 交换数组的部分
- javascript - React 应用程序在 Google App Engine 上运行时抛出 Uncaught SyntaxError: Unexpected token '<'
- .net - 如何检查列表对象是否为空?
- powershell - 超时调用命令
- r - mlr3,基准测试和嵌套重采样:如何从基准对象中提取调整模型以计算特征重要性
- unicode - unicode 异常字符列表
- c - /usr/bin/ld: 找不到 -lgcc