Как проверить данные внешних метрик в Kubernetes?
Я использую DirectXMan12/k8s-prometheus-adapte для переноса внешней метрики из Prometheus в Kubernetes.
После нажатия внешней метрики, как я могу проверить, что данные - k8s?
Когда я нажимаю kubectl, получаю --raw /apis/external.metrics.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"
]
}]
}
2 ответа
Фактическое значение метрики выбирается для каждого экземпляра, например, метрика, которую вы прикрепили, namespaced: true
, предполагая, что метрика предназначена для модулей, вы можете получить доступ к фактическим данным на
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
Метрика имеет пространство имен, поэтому вам нужно будет добавить пространство имен в 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"
},
...
]
}