Как получить список метрик, доступных для HPA? - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть кластер GCP, содержащий приложение GKE: enter image description here

Я хочу масштабировать приложение, используя 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 ]

0 голосов
/ 12 февраля 2020

На GKE регистр немного отличается.

По умолчанию Kubernetes имеет некоторые встроенные метрики (ЦП и память). Если вы хотите использовать HPA на основе этого показателя c, у вас не возникнет никаких проблем.

В концепции GCP:

  • Custom Metrics используются, когда вы хотите использовать показатели, экспортируемые рабочей нагрузкой Kubernetes, или метри c, прикрепленные к объекту Kubernetes, например Pod или Node.
  • External Metrics - Метрики, отправляемые в рабочие области с типом метри c, начиная с external.googleapis.com, известны как external metrics. Метрики обычно экспортируются проектами с открытым исходным кодом и сторонними поставщиками. Более подробную информацию можно найти здесь . Stackdriver Monitoring относится к external metrics так же, как custom metrics, с одним исключением. Для внешних метрик глобальное значение resource_type недопустимо и приводит к удалению данных метри c.

Поскольку GKE интегрирован с Stackdriver

Google Kubernetes Engine (GKE) включает встроенную интеграцию с мониторингом Stackdriver и ведением журнала Stackdriver. При создании кластера GKE Stackdriver Kubernetes Engine Monitoring включен по умолчанию и предоставляет панель мониторинга, специально предназначенную для Kubernetes.

С помощью Stackdriver Kubernetes Engine Monitoring вы можете контролировать, будет ли Stackdriver Logging собирать журналы приложений. , У вас также есть возможность полностью отключить мониторинг Stackdriver Monitoring и Stackdriver Logging.

Проверка доступных метрик

Поскольку вы используете облачную среду - GKE, вы можете найти все доступные по умолчанию метрики, свернув localhost на соответствующем порту. Вы должны SSH to one of Nodes и затем свернуть метри c -сервер $ 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 документах вы можете найти некоторые учебные пособия по использованию HPA с пользовательскими метриками или HPA с внешними метриками . Вы также можете прочитать о мониторинге GKE с помощью Prometheus и Stackdriver , в зависимости от ваших потребностей.

Поскольку GKE интегрирован с Stackdriver, вы можете прочитать статью о Включение мониторинга .

0 голосов
/ 04 февраля 2020

Сервер метрик предоставляет метрики через нижеуказанные API.

  1. /nodes - все метрики узла; type []NodeMetrics
  2. /nodes/{node} - метрика для указанного узла; type NodeMetrics
  3. /namespaces/{namespace}/pods - все метрики модуля в пространстве имен с поддержкой всех пространств имен; type []PodMetrics
  4. /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, но если метрику c не предоставляют в качестве пользовательских метрик для использования HPA, вам необходимо предоставить необходимые метрики. См. Это руководство для этого.

...