首页
视频
资源
登录
风清月
愿你出走半生,归来仍是少年
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
mvc
9篇
c#面试题
1篇
爬虫
1篇
Redis
1篇
NET
37篇
JS相关
2篇
Oracle
1篇
随笔
30篇
学点小英语
9篇
Vue.js
3篇
jquery
2篇
Sqlerver
7篇
前端
53篇
ps
1篇
net core
39篇
更多
架构
9篇
rpc
1篇
EF
6篇
mui
8篇
微服务
8篇
微信
1篇
.net
5篇
svn
1篇
人工智能
6篇
nginx
4篇
docker
14篇
git
4篇
c++
3篇
linux
11篇
uniapp
7篇
k8s
23篇
python
3篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2024
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术
转
kubectl port-forward 踩坑记录。k8s 发布后外部无法访问
9897
人阅读
2022/6/25 17:33
总访问:
1601024
评论:
0
收藏:
1
手机
分类:
k8s
###前言 最近在学习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地址或者其他花样,没有做其他花里胡哨的网络隔离措施。 ![](https://img.tnblog.net/arcimg/aojiancc/5ca2a68bdd2044eaa42f3dd4a956e79e.png) 出现这个问题之后,捣鼓了好一段时间,也没搞出个头绪。 ### 灵光一闪 后来过了几天,在看《Kubernetes权威指南 第4版》这本书时,看到书上有关于port-forward的用法: ![](https://img.tnblog.net/arcimg/aojiancc/cd65eee9727c4c2bac9f92985a7e32a4.png) 书上的案例多了一个- -address参数。kubectl port-forward --help查看参数说明 tn2> 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参数引起的。 **1:在K8S节点内,为什么用curl去访问本机的网卡IP192.168.22.151,会失败?** 如图: ![](https://img.tnblog.net/arcimg/aojiancc/9dae17e053c64c5eac4f7b3e5041b74b.png) 原因,查看路由表: ![](https://img.tnblog.net/arcimg/aojiancc/2cb6bdb22cd243509874115f039457ac.png) 最后一条路由,通往192.168.22.0网段的数据包由本机ens160接口转发出去,而ens160接口IP是192.168.22.151。由于没有设置- -address参数,192.168.22.151这个地址并没有被K8S监听,所以从ens160接口出去的访问界面的流量被K8S拒绝了。 **2:在K8S外部,为什么用PC浏览器去访问IP192.168.22.151,会失败?** PC的IP也是没有被K8S监听,访问界面的流量被拒绝了,所以用浏览器访问失败。 **3:在K8S节点内,用curl访问 127.0.0.1或者localhost,能够访问成功。** ![](https://img.tnblog.net/arcimg/aojiancc/dd6e9732751f4a9fb8b117c7392b7ba4.png) 解决办法: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地址去访问,访问成功 原文地址:https://blog.csdn.net/aodamao/article/details/117292308
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}