k8s port-forward 开放的端口在集群外是不能访问的吗?

2022-11-08 17:02:11 +08:00
 css3

如果要集群外访问,只能创建 NodePort 的 svc 才行吗? port-forward 使用的场景是啥?

1108 次点击
所在节点    程序员
10 条回复
css3
2022-11-08 17:05:15 +08:00
Judoon
2022-11-08 17:12:06 +08:00
你的链接里面已经说的很明白了,kubectl port-forward 是给你 debug 用的,和 svc 里面的暴露方式是两回事。

而且这个 forward 映射出来的端口,只能在执行 kubectl 的机器上被访问,这就取决于你这台机器上的安全规则
yasi
2022-11-08 17:22:13 +08:00
port-forward 就是给集群外访问用的啊,你还可以 bind 0.0.0.0 任意地方都可以访问。
MrSheng
2022-11-08 17:27:06 +08:00
# Listen on port 8888 on all addresses, forwarding to 5000 in the pod
kubectl port-forward --address 0.0.0.0 pod/mypod 8888:5000
ospider
2022-11-08 17:36:33 +08:00
2L 说得对,这个是 debug 用的,不是给你生产系统上暴露端口用的。
css3
2022-11-09 20:27:21 +08:00
@MrSheng 感谢感谢,就是少了 --address 0.0.0.0 这个参数,导致集群外无法访问
css3
2022-11-09 21:00:15 +08:00
尝试转发了 elasticsearc ,集群外已经能请求是通的,但是服务不可用
kubectl port-forward -n debug svc/elasticsearch 32345:9200 --address 0.0.0.0 # 集群外浏览器访问时,命令行报以下错:
Forwarding from 0.0.0.0:32345 -> 9200
Handling connection for 32345
E1109 20:49:19.449246 2732386 portforward.go:400] an error occurred forwarding 32345 -> 9200: error forwarding port 9200 to pod 363e34776981b5357de40b6139fd9ee2c978a05eebd1a5f7932b7bf3868930f2, uid : exit status
1: 2022/11/09 20:49:19 socat[541516] E connect(5, AF=2 127.0.0.1:9200, 16): Connection refused

但我用:kubect expose svc -n debug elasticsearch --name elasticsearch-svc --type=NodePort 后,集群外浏览器能正常访问 es 的版本页面

请问下大家这是咋回事啊, 是这么用的吗


@Judoon
@yasi
@MrSheng
@ospider
MrSheng
2022-11-10 16:51:51 +08:00
@css3 用 svc 暴露是正确的。但是 port-forward 不可以有点奇怪,试个简单的服务呢,是不是 ES 自身的问题。
css3
2022-11-10 18:48:37 +08:00
@yasi
@MrSheng 试了 spark 可以
MrSheng
2022-11-11 08:50:41 +08:00
@css3 那是不是可以理解成 port-forward 机制本身是 ok 的,但是有些服务不允许这么做。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/893620

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX