文章目录

  • 问题现象
  • 解决
    • 在陌生环境中如何找到此类pod?

问题现象

一个node_exporterdaemonset中出现两个pod无法正常启动。信息如下。这里node_exporter pod中的一个container需要使用hostNetwork9100端口。

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状态,于是到相关的服务器上查看。

  1. netstat命令没有找到被使用的端口;
  2. /proc/net/nf_conntrack中也没有找到相应的端口信息;
  3. iptables信息中没有找到9100端口的信息;
  4. tcpdump也看不到9100端口的正常通信;
    • 有请求流量,不过都返回了rst;

遇到怪事了。

解决

尝试在这台node上,直接运行--network hostnode_exporter是成功的,这说明是k8s层面认为端口被占用了,而不是端口真的被占用了。

突然想到之前为traefikports添加了一个9100的端口,而且这个traefikhostNetwork: 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报错端口被占用的问题相关推荐

  1. 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 ...

  2. Mybatis-Plus一个新的报错:数据库表名与SQL的关键字冲突!!!

    Mybatis-Plus一个新的报错:数据库表名与SQL的关键字冲突!!! 老规矩先上报错信息: 2021-08-27 19:18:19.510 ERROR 33476 --- [nio-9000-e ...

  3. GitLabCICD实战----在.gitlab-ci.yml文件的步骤中使用git clone 另一个代码仓报错的解决办法

    更多信息请关注 个人网站 一.背景 在有些时候,比如在一个项目中,产品的代码是java代码仓,自动化测试脚本是python语言,单独存放的代码仓,在使用GitlabCICD构建流水线的时候有这样一种场 ...

  4. 解决Mac10.13 Pod报错 -bash: /usr/local/bin/pod: /System/Library/Frameworks/Ruby.fram

    升级10.13以后Pod命令失效,解决办法如下: 终端执行 brew link --overwrite cocoapods 复制代码 尝试 Pod 命令是否已经恢复 若报错继续执行 brew rein ...

  5. TensorFlow打印一个tensor值报错

    有时需要打印出一个tensor的值,明明代码没有问题,却一直报错,打印不出来,这是因为没有全局变量初始化的原因: sess.run(tf.global_variables_initializer())

  6. 记录一个CMake编译报错undefined reference to vtable问题的解决

    在编写一个简单的CMake demo: 问题描述 文件结构如下:头文件和cpp分别放在两个文件夹下面 如果使用下面的写法,会报错"undefined reference to vtable ...

  7. mac 升级为ventura 系统pod 报错

    pod install 报错 /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/de ...

  8. Sequel pro 意外退出 每次关闭一个会话 必报错

    mac下的数据库客户端不多,Sequel pro 用了很长一段时间了,不知道从什么时候操作系统升级以后.就出了这个问题,关闭会话总是会报错. 尤其是想关闭一个回话的时候,整个程序退出还弹个错误对话框. ...

  9. ibatis resultclass java.util.list_mybatis 动态sql返回一个List封装类报错求解决方法

    报错信息: Exception in thread "main" org.apache.ibatis.reflection.ReflectionException: Error i ...

最新文章

  1. ERPLAB中文教程:创建与查看EventList
  2. camel_Apache Camel 2.14中的更多指标
  3. 字符串的比较相关方法
  4. spring注解式参数校验
  5. [leetcode]15.三数之和
  6. hashtable,dictionary 从原理上说说有什么异同,哪个性能高一些
  7. Leecode刷题热题HOT100导航目录
  8. 20145202马超 《Java程序设计》 实验一 实验报告
  9. 怎么关闭计算机硬件加速,win7关闭硬件加速的方法,手把手抓图教你如何关闭硬件加速功能...
  10. 详解抖音千人千面的智能推荐机制
  11. pe卸载win10更新补丁_禁用Win10系统更新
  12. linux查看占用负载的程序,Linux中查看负载
  13. 彩色图像处理之色彩学基础
  14. 最超值的Mac——Mac mini
  15. 根据经纬度获取地理位置
  16. Excel —— 相对引用录制宏(附视频)
  17. win 7 系统(x64)安装vs2012时遇到的问题
  18. 人工智能与人脸识别门禁产品方案
  19. 关于位运算符号的辨识及运用示例
  20. 交通信息工程课程设计

热门文章

  1. 如何批量制作九宫格效果的视频
  2. html比赛小作品源码,我的网页设计大赛参赛作品
  3. 51单片机学习总结系列(一)之驱动流水灯(1)
  4. 使用nodejs读取简体语言json文件并生成繁体语言json文件
  5. 可以盲打的手机输入法
  6. 完整版逆波兰计算器(中缀转后缀,多位数运算)的解析和代码
  7. UrbanSound8K-城市音频分类实战
  8. 2、OpenCV图像填充
  9. ithoughts怎么自定义样式_iThoughts 5怎么绘制流程图 绘制流程图教程
  10. 100种思维模型之卡尼曼双系统思维模型-015