一个k8s pod报错端口被占用的问题
文章目录
- 问题现象
- 解决
- 在陌生环境中如何找到此类pod?
问题现象
一个node_exporter
的daemonset
中出现两个pod
无法正常启动。信息如下。这里node_exporter pod
中的一个container
需要使用hostNetwork
的9100
端口。
Events:Type Reason Age From Message---- ------ ---- ---- -------Warning FailedScheduling 43s (x31 over 34m) default-scheduler 0/10 nodes are available: 1 node(s) didn't have free ports for the requested pod ports, 9 node(s) didn't match Pod's node affinity/selector.
此问题,眨眼一看,就确定是端口被占用了。
有可能是客户端临时占用了,过会儿释放就会好了。
然后过了好久,一直是Pending
状态,于是到相关的服务器上查看。
netstat
命令没有找到被使用的端口;/proc/net/nf_conntrack
中也没有找到相应的端口信息;iptables
信息中没有找到9100端口的信息;tcpdump
也看不到9100
端口的正常通信;- 有请求流量,不过都返回了
rst
;
- 有请求流量,不过都返回了
遇到怪事了。
解决
尝试在这台node上,直接运行--network host
的node_exporter
是成功的,这说明是k8s层面认为端口被占用了,而不是端口真的被占用了。
突然想到之前为traefik
在ports
添加了一个9100
的端口,而且这个traefik
是hostNetwork: true
的。
验证之下果然如此。
结论:如果为pod
配置了hostNetwork: true
, 且其ports
中有了某个port
,那么即使这个port
并未真正监听,别的pod
也无法使用了。
在陌生环境中如何找到此类pod?
这是自己的集群,正好想到这个事了。
如果是在一个陌生的集群呢?这时如何找到呢?
这个可以到node
上遍历container
, 通过inspect
命令找到相应的端口。
在Labels
下有annotation.io.kubernetes.container.ports
,其中记录了ports
的信息。
当然,关于1 node(s) didn't have free ports for the requested pod ports
这个问题,并不一定就是这里的这种情况。还需要结合自己的环境实际来判断,最基本的就是无法使用期望的端口所造成的。
一个k8s pod报错端口被占用的问题相关推荐
- Kubernetes Pod报错 filed to get sandbox image “k8s.gcr.io/pause:3.6“
最近工作中在部署Pod后发现无法正常启动,查看Pod详情后看到以下报错信息: Failed to create pod sandbox: rpc error: code = Unknown desc ...
- Mybatis-Plus一个新的报错:数据库表名与SQL的关键字冲突!!!
Mybatis-Plus一个新的报错:数据库表名与SQL的关键字冲突!!! 老规矩先上报错信息: 2021-08-27 19:18:19.510 ERROR 33476 --- [nio-9000-e ...
- GitLabCICD实战----在.gitlab-ci.yml文件的步骤中使用git clone 另一个代码仓报错的解决办法
更多信息请关注 个人网站 一.背景 在有些时候,比如在一个项目中,产品的代码是java代码仓,自动化测试脚本是python语言,单独存放的代码仓,在使用GitlabCICD构建流水线的时候有这样一种场 ...
- 解决Mac10.13 Pod报错 -bash: /usr/local/bin/pod: /System/Library/Frameworks/Ruby.fram
升级10.13以后Pod命令失效,解决办法如下: 终端执行 brew link --overwrite cocoapods 复制代码 尝试 Pod 命令是否已经恢复 若报错继续执行 brew rein ...
- TensorFlow打印一个tensor值报错
有时需要打印出一个tensor的值,明明代码没有问题,却一直报错,打印不出来,这是因为没有全局变量初始化的原因: sess.run(tf.global_variables_initializer())
- 记录一个CMake编译报错undefined reference to vtable问题的解决
在编写一个简单的CMake demo: 问题描述 文件结构如下:头文件和cpp分别放在两个文件夹下面 如果使用下面的写法,会报错"undefined reference to vtable ...
- mac 升级为ventura 系统pod 报错
pod install 报错 /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/de ...
- Sequel pro 意外退出 每次关闭一个会话 必报错
mac下的数据库客户端不多,Sequel pro 用了很长一段时间了,不知道从什么时候操作系统升级以后.就出了这个问题,关闭会话总是会报错. 尤其是想关闭一个回话的时候,整个程序退出还弹个错误对话框. ...
- ibatis resultclass java.util.list_mybatis 动态sql返回一个List封装类报错求解决方法
报错信息: Exception in thread "main" org.apache.ibatis.reflection.ReflectionException: Error i ...
最新文章
- ERPLAB中文教程:创建与查看EventList
- camel_Apache Camel 2.14中的更多指标
- 字符串的比较相关方法
- spring注解式参数校验
- [leetcode]15.三数之和
- hashtable,dictionary 从原理上说说有什么异同,哪个性能高一些
- Leecode刷题热题HOT100导航目录
- 20145202马超 《Java程序设计》 实验一 实验报告
- 怎么关闭计算机硬件加速,win7关闭硬件加速的方法,手把手抓图教你如何关闭硬件加速功能...
- 详解抖音千人千面的智能推荐机制
- pe卸载win10更新补丁_禁用Win10系统更新
- linux查看占用负载的程序,Linux中查看负载
- 彩色图像处理之色彩学基础
- 最超值的Mac——Mac mini
- 根据经纬度获取地理位置
- Excel —— 相对引用录制宏(附视频)
- win 7 系统(x64)安装vs2012时遇到的问题
- 人工智能与人脸识别门禁产品方案
- 关于位运算符号的辨识及运用示例
- 交通信息工程课程设计