前言

最近在学习k8s,直接使用命令部署应用并给外界访问:

kubectl run nginx --image nginx:latest
kubectl port-forward pod/nginx 80:80  #将本机80端口转发至Pod的80端口

然后本地PC用浏览器访问NodeIP:80,访问nginx界面失败:

在k8s节点里面用curl访问,出现了神奇现象:直接curl节点的物理网卡地址192.168.22.151,访问失败;而curl localhost或127.0.0.1,可以返回结果。

这个192.168.22.151是k8s节点的ens160物理网卡的地址,不是浮动IP地址或者其他花样,没有做其他花里胡哨的网络隔离措施。

出现这个问题之后,捣鼓了好一段时间,也没搞出个头绪。

灵光一闪

后来过了几天,在看《Kubernetes权威指南 第4版》这本书时,看到书上有关于port-forward的用法:

书上的案例多了一个- -address参数。kubectl port-forward --help查看参数说明

Options:
- -address=[localhost]: Addresses to listen on (comma separated). Only accepts IP addresses or localhost as a value. When localhost is supplied, kubectl will try to bind on both 127.0.0.1 and ::1 and will fail if neither of these addresses are available to bind.
这个参数用于设置监听地址,默认值是localhost。如果设置为localhost,那么k8s会监听127.0.0.1和::1这两个地址。

看到这里,大概明白了。问题就是没有设置- -address参数引起的。

①在K8S节点内,为什么用curl去访问本机的网卡IP192.168.22.151,会失败?

如图:

原因,查看路由表:

最后一条路由,通往192.168.22.0网段的数据包由本机ens160接口转发出去,而ens160接口IP是192.168.22.151。由于没有设置- -address参数,192.168.22.151这个地址并没有被K8S监听,所以从ens160接口出去的访问界面的流量被K8S拒绝了。

②在K8S外部,为什么用PC浏览器去访问IP192.168.22.151,会失败?

PC的IP也是没有被K8S监听,访问界面的流量被拒绝了,所以用浏览器访问失败。
如图:

③在K8S节点内,用curl访问 127.0.0.1或者localhost,能够访问成功。

解决办法:kubectl port-forward 设置参数- - address 0.0.0.0

kubectl run nginx --image nginx:latest
kubectl port-forward --address 0.0.0.0 pod/nginx 80:80

K8S会监听任何地址,不会再拒绝了,所以使用K8S节点的IP地址去访问,访问成功:

kubectl port-forward 踩坑记录相关推荐

  1. sonar覆盖率怎么统计的_实战|Java 测试覆盖率 Jacoco插桩的不同形式总结和踩坑记录(上)...

    本文为霍格沃兹测试学院优秀学员关于 Jacoco 的小结和踩坑记录.测试开发进阶学习,文末加群. 一.概述 测试覆盖率是老生常谈的话题.因为我测试理论基础不是很好,这里就不提需求.覆盖率等内容,直奔主 ...

  2. mvn exec: java_实战|Java 测试覆盖率 Jacoco插桩的不同形式总结和踩坑记录(下)

    本文为霍格沃兹测试学院优秀学员关于 Jacoco 的小结和踩坑记录.测试开发进阶学习,文末加群. 六.注意事项汇总 修改 JAVA_OPTS 参数时,如果位置不对,可能造成代理无法启动. java - ...

  3. Dubbo3的Triple协议踩坑记录

    Triple协议踩坑记录 Triple协议 Triple 协议是 Dubbo3 提出的基于 HTTP2 + gRPC 的开放协议,完整兼容 gRPC over HTTP/2,旨在解决 Dubbo2 私 ...

  4. 日常踩坑记录-汇总版

    开发踩坑记录,不定时更新 心得 RTFM 严谨的去思考问题,处理问题 严格要求自己的代码编写习惯与风格 注意 单词拼写 20200207 mybatis plus 自带insert插入异常 sql i ...

  5. Canal 及canal.admin(v1.1.5)踩坑记录

    网址:GitHub - alibaba/canal: 阿里巴巴 MySQL binlog 增量订阅&消费组件 前期软件准备 上面的软件包(canal.deployer-1.1.5.tar.gz ...

  6. qiankun + vue3使用踩坑记录

    qiankun + vue3使用踩坑记录 1.主应用 vue create qiankun-base npm install vue-router@4 npm i qiankun -S 在main.j ...

  7. django踩坑记录(4)

    0x0d.如何设置不同登录方式,显示不同的标签及对应的form表单的字段?下面代码超级多细节,真的值得看 描述的情景如下图: 代码实现思路:两个不同的登录方式是:账号密码登录和使用短信验证码登录. 1 ...

  8. GVM踩坑记录之:rsync: connection unexpectedly closed 和 rsync: read error: Connection reset by peer (104)

    Kali 2021.2安装GVM(原OpenVAS)踩坑记录帖 在另一篇帖子安装GVM的过程中,遇到好多rsync报错 rsync: read error: Connection reset by p ...

  9. springcloud踩坑记录1

    idea使用spring intaller 创建eureka服务踩坑记录 1.SpringBoot与SpringCloud的版本号需要一一对应,具体内容请查看官网. 2.Maven引入Eureka包时 ...

  10. 新手可直接复现:Duan版本CenterNet在2080Ti上训练自己的数据集——踩坑记录

    实验室换了GPU,记录下centernet在新电脑上的配置过程,如果对下面很多不理解先阅读我以前的这篇博客即可初学者复现CornerNet:详细指导零基础在Ubuntu系统运行该代码并完全理解论文思路 ...

最新文章

  1. centos下将vim配置为强大的源码阅读器
  2. UVa 10375 - Choose and divide(唯一分解定理)
  3. Linux下网络流量实时监控工具大全
  4. Ubuntu Pycharm启动后卡住无法操作
  5. php cdata,PHPcdata处理(详细介绍)_PHP教程
  6. 利用Caffe训练模型(solver、deploy、train_val)+python使用已训练模型
  7. error: statement with no effect [-Werror=unused-value]
  8. python修改文件名_【Python沙龙】批量修改文件名称
  9. postgis学习(二)之几何图形
  10. 微信公众号推广的四种有效办法
  11. 自监督学习经典之作:DINO
  12. 一、什么是JWT?了解JWT,认知JWT
  13. ANDROID 11 文件系统挂载
  14. 互联网公司招聘--阿里巴巴--运营专员--2016年笔试题
  15. 网络检测,排错的顺序与方法
  16. HTML 创建按钮实现跳转链接
  17. 中国首台自主超级计算机,6亿元能打造出一台怎样的计算机?
  18. 陕西省2022年度中级职称(工程师)评审申报的基本条件
  19. linux raid5 纯硬盘 恢复,RAID5 Linux数据恢复
  20. Linux学习笔记——磁盘管理

热门文章

  1. 算法笔记.胡凡 第九章 二叉树
  2. 手机号码清洗的优势是什么
  3. 微信支付-本地测试方法-java代码
  4. 垃圾收集器以及三色标记
  5. 基于O-RAN的无线云网络
  6. Git及Github之入门到进阶
  7. Qt安装包官方下载地址
  8. 重温线性代数(1)——线性组合
  9. 硬货专栏 |深入浅出 WebRTC AEC(声学回声消除)
  10. scp命令上传文件到服务器