Где ошибки Prometheus для невыполненных модулей экспорта узлов?

#kubernetes #prometheus #kubernetes-helm #amazon-eks

#kubernetes #prometheus #kubernetes-helm #amazon-eks

Вопрос:

Установлен Prometheus с:

helm install --name promeks --set server.persistentVolume.storageClass=gp2 stable/prometheus

Создано только 7 модулей экспорта узлов, но всего 22 узла.

$ kubectl get ds promeks-prometheus-node-exporter

 NAME                               DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
promeks-prometheus-node-exporter   22        7         7         7            7           <none>          11d
  

$ kubectl describe ds promeks-prometheus-node-exporter

 $ kubectl describe ds promeks-prometheus-node-exporter
Name:           promeks-prometheus-node-exporter
Selector:       app=prometheus,component=node-exporter,release=promeks
Node-Selector:  <none>
Labels:         app=prometheus
                chart=prometheus-7.0.2
                component=node-exporter
                heritage=Tiller
                release=promeks
Annotations:    <none>
Desired Number of Nodes Scheduled: 22
Current Number of Nodes Scheduled: 20
Number of Nodes Scheduled with Up-to-date Pods: 20
Number of Nodes Scheduled with Available Pods: 20
Number of Nodes Misscheduled: 0
Pods Status:  20 Running / 0 Waiting / 0 Succeeded / 0 Failed
Pod Template:
  Labels:           app=prometheus
                    component=node-exporter
                    release=promeks
  Service Account:  promeks-prometheus-node-exporter
  Containers:
   prometheus-node-exporter:
    Image:      prom/node-exporter:v0.16.0
    Port:       9100/TCP
    Host Port:  9100/TCP
    Args:
      --path.procfs=/host/proc
      --path.sysfs=/host/sys
    Environment:  <none>
    Mounts:
      /host/proc from proc (ro)
      /host/sys from sys (ro)
  Volumes:
   proc:
    Type:          HostPath (bare host directory volume)
    Path:          /proc
    HostPathType:
   sys:
    Type:          HostPath (bare host directory volume)
    Path:          /sys
    HostPathType:
Events:            <none>
  

В каком модуле Prometheus я найду журналы или события, в которых сообщается, что 15 модулей не могут быть запланированы?

Комментарии:

1. вы пробовали — kubectl get pod —all-namespaces ?

2. Какую версию Kubernetes вы используете? Вы пытались изменить количество узлов на 15, а затем обратно на 22? Пожалуйста, предоставьте весь вывод для kubectl describe ds promeks-prometheus-node-exporter Также, пожалуйста, проверьте, нет ли у вас каких-либо дефектов на узлах kubectl describe nodes | grep -A3 Taints Проверьте, нет ли у вас каких-либо ограниченных квот на узлы kubectl describe node | grep -A10 'Allocated resources:'

3. @ShacharHamuzimRajuan kubectl get pod --all-namespaces | grep Pending ничего не возвращает. Что вы ожидаете там увидеть?

4. @PjoterS добавил полный вывод описанного выше. Ошибок нет. Ни один узел не перегружен ресурсами, потому что в моих манифестах не указаны требования к ресурсам (я знаю, плохая практика). Некоторые из них перегружены с точки зрения количества модулей, но я спрашиваю: где я мог бы увидеть это сообщение об ошибке? Я ожидал бы жалобу где-нибудь в развертывании prometheus?

Ответ №1:

Я смог воссоздать вашу проблему, однако не уверен, была ли та же самая первопричина.

1) Вы можете получать все события из всего кластера

 kubeclt get events
  

В вашем случае, когда у вас 22 узла, было бы лучше, если бы вы использовали grep

 kubectl get events | grep Warning
  

или

 kubectl get events | grep daemonset-controller
  

2)
SSH для узла с модулем loud. Используйте команду

 docker ps -a
  

Найдите ИДЕНТИФИКАТОР КОНТЕЙНЕРА из записи, ИМЕНА которой включают имя узла.

 docker inspect <ContainerID>
  

Вы получите много информации о контейнере, которая может помочь вам определить причину сбоя.

В моем случае у меня была проблема с PersistentVolumeClaim (не имел класса хранения gp2) и недостаточных ресурсов процессора.

Класс хранилища может быть получен с помощью

 kubectl get storageclass
  

Комментарии:

1. Спасибо. В Unfiltered kubectl get events содержится только три сообщения. Ни одна из них не связана с prometheus. Это действительно помогло определить проблему с тем же классом хранилища в другом кластере, но тема этого поста — обнаружение ошибок из-за модулей, которые не могут быть развернуты.

2. Что, если вы будете использовать kubectl get events --all-namespaces все еще не так много информации? Не могли бы вы включить в вывод основного вопроса kubectl cluster-info ?