#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
?