我使用DirectXMan12/k8s-prometheus-adapte将外部度量从Prometheus推送到Kubernetes。
在推送外部度量之后,如何验证数据是否为k8s?
当我点击kubectl get --raw /api/exexal.emeics.k8s.io/v1beta1\ jq时,我得到了以下结果,但在那之后,我不知道如何获取实际的度量值。
{
"kind": "APIResourceList",
"apiVersion": "v1",
"groupVersion": "external.metrics.k8s.io/v1beta1",
"resources": [
{
"name": "subscription_back_log",
"singularName": "",
"namespaced": true,
"kind": "ExternalMetricValueList",
"verbs": [
"get"
]
}]
}发布于 2020-02-29 22:35:29
例如,您所附加的度量是namespaced: true,假设度量是用于pods的,则可以在
kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1/namespaces/wanted_namepsace/pods/*/subscription_back_log" | jq '.'(或指定荚名而不是*)
如果您希望HPA读取您的度量,则配置如下(例如)
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: your-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: your-pod
minReplicas: 1
maxReplicas: 10
metrics:
- pods:
metricName: subscription_back_log
targetAverageValue: 10000
type: Pods发布于 2021-10-07 09:21:03
度量是名称空间的,因此您需要将名称空间添加到URL中。与另一个答案相反,我相信你不需要在URL中包含豆荚。这是一个外部度量。外部度量不与任何kubernetes对象相关联,因此只有名称空间应该足够:
/apis/external.metrics.k8s.io/v1beta1/namespaces/<namespace>/<metric_name>下面是一个适用于我的示例,在我的设置中使用外部度量:
$ kubectl get --raw /apis/external.metrics.k8s.io/v1beta1 | jq
{
"kind": "APIResourceList",
"apiVersion": "v1",
"groupVersion": "external.metrics.k8s.io/v1beta1",
"resources": [
{
"name": "redis_key_size",
"singularName": "",
"namespaced": true,
"kind": "ExternalMetricValueList",
"verbs": [
"get"
]
}
]
}$ kubectl get --raw /apis/external.metrics.k8s.io/v1beta1/namespaces/default/redis_key_size
{
"kind": "ExternalMetricValueList",
"apiVersion": "external.metrics.k8s.io/v1beta1",
"metadata": {},
"items": [
{
"metricName": "redis_key_size",
"metricLabels": {
"key": "..."
},
"timestamp": "2021-10-07T09:00:01Z",
"value": "0"
},
...
]
}https://stackoverflow.com/questions/60470162
复制相似问题