在本地访问集群网络,拦截 k8s service 流量到本地调试

39 天前
 naison
本人之前一直做云原生,Paas 平台的开发,所以经常和 k8s 打交道,因此理解要在本地调试代码的难度,因此开发了 kubevpn 这个工具,能够在本地拦截 k8s 流量到本地,然后自己的项目可以直接链接 k8s 中的数据库和三方中间件。因此调试比较方便。
项目地址: https://github.com/kubenetworks/kubevpn
本地开发最佳实践: https://www.kubevpn.cn/docs/blog/connect_mode
1351 次点击
所在节点    Kubernetes
14 条回复
vczyh
38 天前
请问怎么拦截 k8s service 流量的,比较好奇。
Mystery0
37 天前
vczyh
37 天前
@Mystery0 谢谢你好人侠
Mystery0
37 天前
@vczyh #3 哈哈哈,只是正好对这个也感兴趣,就点进去项目看了一下。
看起来这类东西的方案都是一样的,在容器里面启动一个 pod ,然后把本地的流量往这个 pod 去发(感觉有点像代理),以前阿里好像有个 kt-connect 也是相似的方案。
这种方案可能在测试环境使用,在生产不一定适用,因为生产环境一般是限制了外网访问的,更别说这种东西要启动 pod 还要去拉一个镜像下来运行,可能压根连镜像都拉不动
vczyh
37 天前
@Mystery0 所有流量往指定 pod 发送是通过修改默认路由实现的吗?这样会不会影响别人使用,如果别人也使用这种工具是不是就冲突了。
artiga033
37 天前
挺有用,有空研究研究,个人目前还在用 kubectl portforward 的刀耕火种方案
dier
37 天前
是指用来访问本地的 K8S 集群服务吗?我用过一个方法,集群部署时,手动定义一个 SVC 网段,在局域网内的路由器上添加一个静态路由将这个网段的流量转发到任意一个集群 Node 上,因为集群的任意 Node 都可以访问集群中的 SVC 地址,从而实现直接访问集群内的 ClusterIP
Mystery0
37 天前
@vczyh #5 感觉是通过 iptables 或者路由表之类的东西实现的转发,具体的我也不了解 🤣 我是搞应用层的
naison
36 天前
@Mystery0 好人侠~
naison
36 天前
@Mystery0 启动时可以使用 kubevpn connect --image 参数,指定从哪里拉取镜像的,可以是私有仓库,只要集群可以拉取到就行
naison
36 天前
@vczyh https://www.kubevpn.cn/docs/architecture/connect 这里也有一些架构图,可以看看~
naison
36 天前
@vczyh 修改本地路由,不会影响到别人的,因为使用了 service mesh 来做区分,不同的流量会击中不同的服务。
naison
36 天前
@artiga033 go go go ~
naison
36 天前
@dier 是的,你说的这样也是一种方案。不过 kubevpn 不仅可以访问到 service ip (或 service name )也可以访问 pod ip ,同时也可以拦截流量到本地,挺方便的吧~

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

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

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

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

© 2021 V2EX