Модуль Metricbeat kubernetes не может подключиться к kubelet - PullRequest
0 голосов
/ 24 декабря 2018

У нас есть установка, в которой Metricbeat развернут как DaemonSet в кластере Kubernetes (в частности - AWS EKS).

Кажется, что все работает нормально, но соединение kubelet .

Для пояснения, следующий модуль:

- module: kubernetes
  enabled: true
  metricsets:
    - state_pod
  period: 10s
  hosts: ["kube-state-metrics.system:8080"]

работает должным образом (события поступают в logstash / эластичный).

Эта конфигурация модуля, однако, неработать в любых вариантах значения хоста (localhost / kubernetes.default / что угодно):

- module: kubernetes
  period: 10s
  metricsets:
    - pod
  hosts: ["localhost:10255"]
  enabled: true
  add_metadata: true
  in_cluster: true

ПРИМЕЧАНИЕ: также работает IP-адрес кластера вместо localhost (так что он переходит в плоскость управления)(хотя, конечно, не получает нужную информацию).

Приведенная выше конфигурация была взята непосредственно из документации Metricbeat и сразу показалась мне странной - как localhost переводится (из докера Metricbeat) всоответствующий кубеле?

Ошибка, как и следовало ожидать, в свете вышесказанного:

error making http request: Get http://localhost:10255/stats/summary: 
dial tcp [::1]:10255: connect: cannot assign requested address

, что указывает на какую-то проблему с подключением.

Однако при SSH-подключении к любому узлу, на котором развернут Metricbeat, http://localhost:10255/stats/summary обеспечивает правильный вывод:

{
  "node": {
   "nodeName": "...",
   "systemContainers": [
    {
     "name": "pods",
     "startTime": "2018-12-06T11:22:07Z",
     "cpu": {
      "time": "2018-12-23T06:54:06Z",
      ...
     },
     "memory": {
      "time": "2018-12-23T06:54:06Z",
      "availableBytes": 17882275840,
      ....

Я должен упустить что-то очень очевидное.Любое предложение подойдет.

ПРИМЕЧАНИЕ: я кросс-пост (и не получил ответа в течение нескольких дней) то же самое на Elasticsearch Forums

1 Ответ

0 голосов
/ 29 декабря 2018

Введите IP-адрес узла модуля через поставщика valueFrom в списке env::

env:
- name: HOST_IP
  valueFrom:
    fieldRef: status.hostIP

, а затем обновите файл конфигурации metricbeat, чтобы использовать IP-адрес хоста:

hosts: ["${HOST_IP}:10255"]

, который метрический бит разрешит с помощью своего внедрения конфигурации переменной среды

...