Как получить список показателей, доступных для HPA?
У меня есть кластер GCP, содержащий приложение GKE:
Я хочу масштабировать приложение с помощью HPA
На основе поддержки метрик
HPA может считывать показатели из
metrics.k8s.io (метрики ресурсов)
custom.metrics.k8s.io(специальные метрики)
external.metrics.k8s.io(внешние метрики)
Как я мог проверить, какие показатели доступны? Как я мог попробовать этот API самостоятельно? Это вообще возможно?
PS
На основании предложенного ответа я выполнил команду:
kubectl get --raw https://MY-KUBE-APISERVER-IP:6443/apis/metrics.k8s.io/v1beta1/namespaces/default/pods
Ответ:
{
"items": [
{
"metadata": {
"name": "prometheus-adapter-69fcdd56bc-2plh7",
"namespace": "default",
"selfLink": "/\r\napis/metrics.k8s.io/v1beta1/namespaces/default/pods/prometheus-adapter-69fcdd56bc-2plh7",
"creationTimestamp": "2020-02-05T10:56:02Z"
},
"timestamp": "2020-02-05T10:55:22Z",
"window": "30s",
"containers": [
{
"name": "prometheus-adapter",
"usage": {
"cpu": "15\r\n31939n",
"memory": "10408Ki"
}
}
]
},
{
"metadata": {
"name": "stackdriver-exporter-76fdbc9d8f-c285l",
"namespace": "default",
"selfLink": "/apis/metrics.k8s.io/v1beta1/namespaces/default/pods/stackdriver-exporter-76fdbc9d8f-c285l",
"creationTimestamp": "2020-0\r\n2-05T10:56:02Z"
},
"timestamp": "2020-02-05T10:55:22Z",
"window": "30s",
"containers": [
{
"name": "stackdriver-exporter",
"usage": {
"cpu": "79340n",
"memory": "2000Ki"
}
}
]
}
],
"kind": "PodMetricsList",
"apiVersion": "metrics.k8s.io/v1beta1",
"metadata": {
"selfLink": "/apis/metrics.k8s.io/v1beta1/namespaces/default/pods"
}
}
$ kubectl top pods
NAME CPU(cores) MEMORY(bytes)
prometheus-adapter-69fcdd56bc-2plh7 2m 10Mi
stackdriver-exporter-76fdbc9d8f-c285l 1m 1Mi
Но я все еще не вижу всех показателей, доступных для HPA.
2 ответа
Сервер метрик предоставляет метрики через указанные ниже API.
/nodes
- метрики всех узлов;type []NodeMetrics
/nodes/{node}
- метрики для указанного узла;type NodeMetrics
/namespaces/{namespace}/pods
- все метрики подов в пространстве имен с поддержкой всех пространств имен;type []PodMetrics
/namespaces/{namespace}/pods/{pod}
- метрики для указанного модуля;type PodMetrics
Вы можете просмотреть доступные показатели, например, как показано ниже
kubectl get --raw https://KUBE-APISERVER-IP:6443 /apis/metrics.k8s.io/v1beta1
{"kind":"APIResourceList","apiVersion":"v1","groupVersion":"metrics.k8s.io/v1beta1","resources":[{"name":"nodes","singularName":"","namespaced":false,"kind":"NodeMetrics","verbs":["get","list"]},{"name":"pods","singularName":"","namespaced":true,"kind":"PodMetrics","verbs":["get","list"]}]}
kubectl get --raw https://KUBE-APISERVER-IP:6443 /apis/metrics.k8s.io/v1beta1/namespaces/default/pods
Вы также можете использовать команду kubectl top pods
который внутренне вызывает вышеуказанный API.
Пользовательские показатели
Они предоставляются адаптерами, разработанными поставщиками, и доступные метрики будут зависеть от адаптера. Как только вы узнаете название метрики, вы можете использовать API для доступа к ней.
Вы можете просмотреть доступные показатели, как показано ниже, и получить название показателя.
kubectl get --raw https://KUBE-APISERVER-IP:6443 /apis/custom.metrics.k8s.io/v1beta1
Внешние метрики
Они предоставляются адаптерами, разработанными поставщиками, и доступные метрики будут зависеть от адаптера. Как только вы узнаете название метрики, вы можете использовать API для доступа к ней.
Вы можете просмотреть доступные показатели, как показано ниже, и получить название показателя.
kubectl get --raw https://KUBE-APISERVER-IP:6443 /apis/external.metrics.k8s.io/v1beta1
Редактировать:
У вас уже есть адаптер Prometheus, но если метрика не отображается как пользовательская метрика для использования HPA, вам необходимо предоставить необходимые метрики. Для этого обратитесь к этому руководству.
На GKE
случай немного другой.
По умолчанию Kubernetes
имеют встроенные метрики (ЦП и память). Если вы хотите использоватьHPA
основываясь на этой метрике, у вас не будет никаких проблем.
В GCP
концепция:
Custom Metrics
используются, когда вы хотите использовать метрики, экспортируемые рабочей нагрузкой Kubernetes, или метрики, прикрепленные кKubernetes
объект, такой какPod
илиNode
.External Metrics
- Метрики, отправленные в рабочие области с началом типа метрикиexternal.googleapis.com
известны какexternal metrics
. Метрики обычно экспортируются проектами с открытым исходным кодом и сторонними поставщиками. Более подробную информацию можно найти здесь.Stackdriver Monitoring
лечитexternal metrics
такой же какcustommetrics
, за одним исключением. Для внешних показателейresource_type
of global является недопустимым и приводит к отбрасыванию данных метрики.
Поскольку GKE интегрирован со Stackdriver
Google Kubernetes Engine (GKE) включает встроенную интеграцию с Stackdriver Monitoring и Stackdriver Logging. Когда вы создаете кластер GKE, Stackdriver Kubernetes Engine Monitoring включен по умолчанию и предоставляет панель мониторинга, специально адаптированную для Kubernetes.
С Stackdriver Kubernetes Engine Monitoring
, вы можете указать, будет ли Stackdriver Logging собирать журналы приложений. У вас также есть возможность полностью отключить интеграцию Stackdriver Monitoring и Stackdriver Logging.
Проверить доступные показатели
Поскольку вы используете облачную среду - GKE
, вы можете найти все доступные по умолчанию метрики, указав localhost на соответствующем порту. Вы должныSSH to one of Nodes
а затем curl metric-server $ curl localhost:10255/metrics
.
Второй способ - проверить доступную документацию по метрикам.
ВАЖНЫЙ
Вы можете видеть доступные метрики, но использовать их в HPA
вам нужно развернуть Adapters
нравиться Stackdriver adapter
или Prometheus adapter
. По умолчанию (версия 1.13.11) кластер GKE, который вы уже развернулиmetrics-server
, heapster
(не рекомендуется в новых версиях) и prometheus-to-sd-XXX. Если вы хотите использоватьStackdriver
, у вас уже будет применено много конфигураций, но если вы хотите использовать Prometheus
вам нужно будет отрегулировать Prometheus operators
, adapters
, deployments
. Подробности можно найти здесь.
На GKE
docs, вы можете найти несколько руководств по использованию HPA с пользовательскими метриками или HPA с внешними метриками. Вы также можете прочитать о мониторинге GKE с помощью Prometheus и Stackdriver, в зависимости от ваших потребностей.
Как GKE
интегрирован с Stackdriver
вы можете прочитать статью о включении мониторинга.