首页 > 解决方案 > 未完成的节点导出器 pod 的 Prometheus 错误在哪里?

问题描述

安装了普罗米修斯:

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

只看到创建了 7 个节点导出器 pod,但有 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 pod 中找到抱怨无法安排 15 个 pod 的日志或事件?

标签: kubernetesprometheuskubernetes-helmamazon-eks

解决方案


我能够重新创建您的问题,但不确定根本原因是否相同。

1)您可以从整个集群中获取所有事件

kubeclt get events

在你有 22 个节点的情况下,如果你使用 grep 会更好

kubectl get events | grep Warning

或者

kubectl get events | grep daemonset-controller

2) SSH 到没有 pod 的节点。使用命令

docker ps -a

从 NAMES 包含节点名称的条目中找到 CONTAINER ID。

docker inspect <ContainerID>

你会得到很多关于容器的信息,这可能会帮助你定义它失败的原因。

就我而言,我遇到了 PersistentVolumeClaim(没有 gp2 存储类)和 CPU 资源不足的问题。

存储类可以通过

kubectl get storageclass

推荐阅读