k8s安装prometheus时遇到pod pending问题

kubectl create -f node-exporter.yaml文件生成的pod 全部pending,在其他集群也是同样的方法生成的Pod是正常的,所以可以排除yaml文件的问题吧,yaml文件如下:

img

img

img

pending的pod,describe后报以下错误:

img

报错是提示你,端口上问题啊,有1个节点没有空闲端口让你请求。
查看一下节点现在已有的侦听端口是否够你去请求。

看错误信息你的k8s集群一共有四个节点(3个master、1个worker),错误分成两部分:

  1. 1个节点上没有可分配的端口
  2. 3个节点不符合调度策略

问题1:

你的workload类型是deamon-set,容器内端口用的是9100。正常情况下容器内端口不受宿主机影响,但你的yaml里配置了hostNetwork:true,所以会直接使用node所在的端口。看你的回复里报错是端口被占用,那么可以在该node上运行lsof -i :9100查看是否有服务占用了9100这个端口,有就kill掉。

问题2:

节点不符合调度策略是因为你的yaml里设置了tolerations,看配置是不允许调度到master节点。但由于deamon-set类型的workload会在每个节点上都创建,所以3个master节点都报错了。解决方案是删掉下面的污点配置。

img

可能是端口被占用的缘故,检查一下报错的端口号的使用情况

感觉是端口被占用,需要设置个新的端口

看报错信息是4个节点都不可用,原因是端口都被占用了,可以修改一下端口重新试试