自建 k8s, 外部如果访问对应的 TCP 服务?

30 天前
 luxu

现在通过 Ingress 访问对应的服务, 如 a.dev.example.com 访问 dev 环境的 a 项目的 web 。b.test.example.com 访问 test 环境的 b 项目

内部通过服务连接, 如通过 a-mysql.dev 连接 a.dev.example.com 的数据库

现在想请问下大家 外部如果要访问对应的 MySQL ,Redis 这些服务怎么做呢?

查了下以下几种方式:

  1. 使用 Istio ,但是需要配置 TLS 暂时不考虑这个方法
  2. 每次创建项目时创建一个 Ingress-NGINX Controller ,然后各自绑定对应的 ConfigMap

现在想请教下大家有没有其他方法, 谢谢!

1266 次点击
所在节点    Kubernetes
14 条回复
midjourney
30 天前
每一个集群环境需要一个对外 ing ,同个这个 ing 访问对应的集群所在的 srv
paranoiagu
30 天前
我是 nginx ingress 那里自己搞了 tcp 映射 的 map
paranoiagu
30 天前
- --tcp-services-configmap=ingress-nginx/tcp-services
GeekGao
30 天前
Ingress 就行了啊
anubu
30 天前
- NodePort
- LB 类型的 Service
- ingress-nginx/tcp-services
luxu
30 天前
@GeekGao
@paranoiagu
@midjourney 因为不太了解所以最开始只创建了一个 nginx ingress , 然后通过 ingressClassName 指定它, 不知道创建多个会不会造成资源的问题就来论坛问一下,谢谢大家
jiangzm
30 天前
使用 Ingress 升级组件 Gateway API

一个项目对应一个"ingress controller",没必要这么搞。 只为了暴露端口还不如用 NodePort Service 。

在生产环境 mysql/redis/mq 还是不要用容器比较好
luxu
30 天前
@jiangzm 谢谢, 不了解 Gateway API ,我学习下。 不是生产环境
wencaiwulue
30 天前
@luxu 可以直接使用 kubevpn ,在本地电脑上直接访问集群网络。https://github.com/kubenetworks/kubevpn

直接在本地 ping podIP ,curl serviceIP 。很方便的
wencaiwulue
30 天前
@wencaiwulue @luxu 支持三层以上的协议。比如:tcp /udp/icmp 等。
CodeWind
30 天前
最简单直接的方法就是找几台节点作为路由转发,外部要访问 svc 、pod 的网段转发路由到这几个节点上,由这些节点完成路由转发。如果是外网要访问,就在内到外的设备(比如防火墙、路由器)做端口映射,这样的方法可直接访问到 pod/svc
winglight2016
30 天前
访问数据库、redis 跟 k8s 有什么关系?难道你的数据库和 redis 都是安装到 k8s?
hancai2
29 天前
@winglight2016 数据库、redis 访问 k8s 也很正常啊。 我们在 k8s 上安装数据库和中间件用了好多年了。
luxu
28 天前
最后使用多 ingress ,暂时不想使用 TLS

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

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

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

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

© 2021 V2EX