Pod не может получить доступ к конечным точкам kubelet

Когда мои поды пытаются запросить любые конечные точки kubelet (любой порт), они сразу получают connection refused.

Моя цель состоит в том, чтобы Prometheus получил эти метрики от cadvisor, и я пытаюсь создать ServiceMonitor для очистки показателей cadvisor (для информации об использовании ресурсов на уровне модуля).

Попытка wget из любого модуля в моем кластере приводит к следующему:

$ wget 10.116.0.10:4194
Connecting to 10.116.0.10:4194 (10.116.0.10:4194)
wget: can't connect to remote host (10.116.0.10): Connection refused

Я использую Kubernetes, управляемый DigitalOcean

изменить: вышеуказанное происходит на любом порту, а не только на 4194

ServiceMonitor:

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: kubelet
  labels:
    app: prometheus
spec:
  jobLabel: k8s-app
  endpoints:
  - port: cadvisor
    interval: 15s
    honorLabels: true
    tlsConfig:
      insecureSkipVerify: true
  selector:
    matchLabels:
      k8s-app: kubelet
      app.kubernetes.io/managed-by: prometheus-operator
      app.kubernetes.io/name: kubelet
  namespaceSelector:
    matchNames:
    - kube-system

person danthegoodman    schedule 19.03.2021    source источник
comment
Как вы должны знать, в Kubernetes cAdvisor находится внутри двоичного файла kubelet. Таким образом, вы можете установить metrics-server и просто удалить данные прямо из kubernetes API, как это было задумано Prometheus.   -  person Hector Vido    schedule 19.03.2021
comment
@HectorVido Я хотел бы очистить metrics-server, но он не в формате Prometheus и не перечисляет все показатели для одной конечной точки.   -  person danthegoodman    schedule 19.03.2021
comment
При использовании kube-prometheus-stack, для очистки метрик kubelet cadvisor должно быть включен по умолчанию. Если вы не используете стек promethus, вы все равно можете использовать kubelet / servicemonitor.yaml и посмотрите, как это делается. Это какая-нибудь полезная информация?   -  person Matt    schedule 19.03.2021
comment
@Matt Я пытался расшифровать файл руля. Я не использую helm при установке, поэтому мне нужно преобразовать его в обычный ServiceMonitor, но я попробую!   -  person danthegoodman    schedule 19.03.2021
comment
@Matt Что-то, что я сделал после того, что должно было быть, может быть, другой порт, или с использованием правильной конфигурации TLS, или и того, и другого, но теперь это работает!   -  person danthegoodman    schedule 19.03.2021


Ответы (1)


Ошибка Соединение отклонено указывает на то, что брандмауэр может заблокировать порт или служба не прослушивает порт. Вы уверены, что используете правильный порт?

Порт 4194 - это порт, используемый cAdvisor, почему вы хотите получить к нему доступ с IP (10.116.0.10)? К Кубелету это не имеет отношения.

person Paul Rey    schedule 19.03.2021
comment
Я добавил свой ServiceMonitor выше. Похоже, что он решает использовать этот IP-адрес, который является частным IP-адресом узла. Во вкладке Targets все попадает на какой-то IP. Я уверен, что это правильный порт, и я могу получить доступ к конечной точке с kubectl на моем ноутбуке. - person danthegoodman; 19.03.2021
comment
Не частный IP-адрес узла, а конечной точки, указанной в kubectl get endpoints, а - person danthegoodman; 19.03.2021